org.eclipse.xtext.conversion.impl
Class KeywordBasedValueConverter

java.lang.Object
  extended by org.eclipse.xtext.conversion.impl.AbstractValueConverter<java.lang.String>
      extended by org.eclipse.xtext.conversion.impl.KeywordBasedValueConverter
All Implemented Interfaces:
IValueConverter<java.lang.String>, IValueConverter.RuleSpecific

public class KeywordBasedValueConverter
extends AbstractValueConverter<java.lang.String>
implements IValueConverter.RuleSpecific

This IValueConverter ensures that the given string value fulfills a data type rule that consists only of an alternative of keywords.

It converts the value to a string. The implementation supports the following patterns:

 RuleName: 'keyword';
 RuleName: 'keyword' | 'other' | 'more';
 
Clients who want to implement case insensitive languages have to override toEscapedString(String) and keywordToString(Keyword). Clients who want to convert the value to another data type may use this implementation as a delegate.

Author:
Sebastian Zarnekow - Initial contribution and API

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.eclipse.xtext.conversion.IValueConverter
IValueConverter.RuleSpecific
 
Field Summary
 
Fields inherited from interface org.eclipse.xtext.conversion.IValueConverter
NO_OP_CONVERTER
 
Constructor Summary
KeywordBasedValueConverter()
           
 
Method Summary
protected  void assertValidValue(java.lang.String value)
           
protected  java.lang.String keywordToString(Keyword keyword)
           
 void setRule(AbstractRule rule)
           
protected  java.lang.String toEscapedString(java.lang.String value)
           
 java.lang.String toString(java.lang.String value)
          Transforms the given value to a string that is conformant to the expected terminal or data type rule.
 java.lang.String toValue(java.lang.String string, INode node)
          Creates a value from the given input.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

KeywordBasedValueConverter

public KeywordBasedValueConverter()
Method Detail

toValue

public java.lang.String toValue(java.lang.String string,
                                INode node)
                         throws ValueConverterException
Description copied from interface: IValueConverter

Creates a value from the given input. The input is conformant to a data type or terminal rule.

The given string or node may be null but not both of them.

Specified by:
toValue in interface IValueConverter<java.lang.String>
Parameters:
string - the string that was inferred from the node. Usually the node's text but may be reduced to the parts of the node that are not hidden.
node - the parsed node including hidden parts.
Returns:
the new value or null.
Throws:
ValueConverterException - indicates that the string or node did not fulfil the expected format.

toString

public java.lang.String toString(java.lang.String value)
                          throws ValueConverterException
Description copied from interface: IValueConverter
Transforms the given value to a string that is conformant to the expected terminal or data type rule.

Specified by:
toString in interface IValueConverter<java.lang.String>
Parameters:
value - the to-be-transformed value
Returns:
a string represenation for that value.
Throws:
ValueConverterException - indicates that the value cannot be converted to a valid string.

assertValidValue

protected void assertValidValue(java.lang.String value)

toEscapedString

protected java.lang.String toEscapedString(java.lang.String value)

keywordToString

protected java.lang.String keywordToString(Keyword keyword)

setRule

public void setRule(AbstractRule rule)
Specified by:
setRule in interface IValueConverter.RuleSpecific
Throws:
java.lang.IllegalArgumentException - if the rule is not a datatype rule or does not fulfill the pattern
RuleName: 'keyword' | 'other';