package com.framsticks.framclipse;

import org.eclipse.xtext.common.services.DefaultTerminalConverters;
import org.eclipse.xtext.conversion.IValueConverter;
import org.eclipse.xtext.conversion.ValueConverter;
import org.eclipse.xtext.conversion.ValueConverterException;
import org.eclipse.xtext.conversion.impl.AbstractToStringConverter;
import org.eclipse.xtext.nodemodel.INode;

public class FramScriptValueConverterService extends DefaultTerminalConverters {

	@ValueConverter(rule = "HEADER_VALUE")
	public IValueConverter<String> HEADER_VALUE() {

		return new AbstractToStringConverter<String>() {

			@Override
			protected String internalToValue(String s, INode node)
					throws ValueConverterException {
				if (s.startsWith(":~")) {
					return s.substring(2, s.lastIndexOf('~')).trim();
				} else {
					return s.substring(1).trim();
				}
			}

		};
	}
	
}
