All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fitnesse.wikitext.parser.decorator.SymbolClassPropertyAppender Maven / Gradle / Ivy

package fitnesse.wikitext.parser.decorator;

import fitnesse.wikitext.parser.Symbol;

import static java.lang.String.format;


public class SymbolClassPropertyAppender {

  public static final String CLASS_PROPERTY_NAME = "class";

  private static final SymbolClassPropertyAppender INSTANCE = new SymbolClassPropertyAppender();

  public static SymbolClassPropertyAppender classPropertyAppender() {
    return INSTANCE;
  }

  private SymbolClassPropertyAppender() {
    //hidden
  }

  public void addPropertyValue(Symbol symbol, String propertyValue) {
    if (symbol.hasProperty(CLASS_PROPERTY_NAME)) {
      final String existingValue = symbol.getProperty(CLASS_PROPERTY_NAME);
      if (!alreadyContainsValue(existingValue, propertyValue)) {
        setPropertyValue(symbol, format("%s %s", existingValue, propertyValue));
      }
    } else {
      setPropertyValue(symbol, propertyValue);
    }
  }


  private void setPropertyValue(Symbol symbol, String propertyValue) {
    symbol.putProperty(CLASS_PROPERTY_NAME, propertyValue);
  }

  private boolean alreadyContainsValue(String existingValue, String valueToAdd) {
    return wrapInSpace(existingValue).contains(wrapInSpace(valueToAdd));
  }

  private String wrapInSpace(String existingValue) {
    return format(" %s ", existingValue);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy