Package com.puppetlabs.geppetto.pp.dsl

Source Code of com.puppetlabs.geppetto.pp.dsl.PPTerminalConverters

/**
* Copyright (c) 2013 Puppet Labs, Inc. and other contributors, as listed below.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*   Puppet Labs
*/
package com.puppetlabs.geppetto.pp.dsl;

import org.eclipse.xtext.conversion.IValueConverter;
import org.eclipse.xtext.conversion.ValueConverter;
import org.eclipse.xtext.conversion.ValueConverterException;
import org.eclipse.xtext.conversion.impl.AbstractDeclarativeValueConverterService;
import org.eclipse.xtext.conversion.impl.AbstractNullSafeConverter;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.util.Strings;

/**
* Converters for BeeLang terminals.
*/
public class PPTerminalConverters extends AbstractDeclarativeValueConverterService {

  @ValueConverter(rule = "ATBoolean")
  public IValueConverter<Boolean> ATBoolean() {

    /**
     * Converts "@" to true and
     */
    return new IValueConverter<Boolean>() {

      public String toString(Boolean value) {
        return value.booleanValue()
            ? "@"
            : "";
      }

      public Boolean toValue(String string, INode node) {
        if(Strings.isEmpty(string))
          return false;
        return true;
      }

    };

  }

  @ValueConverter(rule = "BooleanValue")
  public IValueConverter<Boolean> BooleanValue() {
    return new IValueConverter<Boolean>() {

      public String toString(Boolean value) {
        return value.toString();
      }

      public Boolean toValue(String string, INode node) {
        if(Strings.isEmpty(string))
          throw new ValueConverterException("Could not convert empty string to boolean", node, null);
        return new Boolean(string).equals(Boolean.TRUE)
            ? Boolean.TRUE
            : Boolean.FALSE;
      }

    };
  }

  @ValueConverter(rule = "LPARBoolean")
  public IValueConverter<Boolean> LPARBoolean() {

    /**
     * Converts "(" to true and
     */
    return new IValueConverter<Boolean>() {

      public String toString(Boolean value) {
        return value.booleanValue()
            ? "("
            : "";
      }

      public Boolean toValue(String string, INode node) {
        if(Strings.isEmpty(string))
          return false;
        return true;
      }

    };

  }

  /**
   * Hack to see what happens with formatting.
   *
   * @return
   */
  @ValueConverter(rule = "SpecialDoubleQuote")
  public IValueConverter<String> specialDoubleQuote() {
    return new AbstractNullSafeConverter<String>() {
      @Override
      protected String internalToString(String value) {
        return "\"";
      }

      @Override
      protected String internalToValue(String string, INode node) {
        return "";
      }
    };
  }

  @ValueConverter(rule = "sqText")
  public IValueConverter<String> sqText() {
    return new AbstractNullSafeConverter<String>() {
      @Override
      protected String internalToString(String value) {
        return "'" + value + "'";
      }

      @Override
      protected String internalToValue(String string, INode node) {
        return string.substring(1, string.length() - 1);
      }
    };
  }

  // /**
  // * Converts a TEXT to a trimmed string with Java String semantics.
  // * (i.e. support for \\t and other escapes).
  // *
  // * @return
  // */
  // @ValueConverter(rule = "TextStringValue")
  // public IValueConverter<String> TextStringValue() {
  // return new AbstractNullSafeConverter<String>() {
  // @Override
  // protected String internalToString(String value) {
  // String converted = Strings.convertToJavaString(value, true);
  // converted = converted.substring(1, converted.length() - 2);
  // // any » must be converted to \»
  // converted.replace("»", "\\»");
  // return "«" + converted + "»";
  // }
  //
  // @Override
  // protected String internalToValue(String string, AbstractNode node) {
  // if(string.startsWith("«"))
  // string = string.substring(1);
  // if(string.endsWith("»"))
  // string = string.substring(0, string.length() - 1);
  // String lines[] = string.split("[\n\r]");
  // StringBuffer buf = new StringBuffer();
  // for(int i = 0; i < lines.length; i++) {
  // if(i != 0)
  // buf.append("\n");
  // buf.append(lines[i].trim());
  // }
  // return Strings.convertFromJavaString(buf.toString(), true);
  // }
  // };
  // }
  //
}
TOP

Related Classes of com.puppetlabs.geppetto.pp.dsl.PPTerminalConverters

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.