Class ValueFactory

java.lang.Object
io.sf.carte.doc.style.css.property.ValueFactory
All Implemented Interfaces:
CSSValueFactory

public class ValueFactory extends Object implements CSSValueFactory
Factory of CSS values.
  • Constructor Details

    • ValueFactory

      public ValueFactory()
    • ValueFactory

      public ValueFactory(short flags)
  • Method Details

    • isSizeSACUnit

      @Deprecated public static boolean isSizeSACUnit(LexicalUnit unit)
      Deprecated.
      Tests whether the unit type of the given NSAC lexical unit can apply to size (e.g. block size).
      Parameters:
      unit - the NSAC lexical unit.
      Returns:
      true if it is a size type, false otherwise.
    • isLengthSACUnit

      public static boolean isLengthSACUnit(LexicalUnit lunit) throws CSSLexicalProcessingException
      Test whether the value represents a non-negative length.
      Parameters:
      lunit - the lexical unit to test.
      Returns:
      true if the value is a length in the [0-∞] interval.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isLengthPercentageSACUnit

      public static boolean isLengthPercentageSACUnit(LexicalUnit lunit) throws CSSLexicalProcessingException
      Test whether the value represents a length or a percentage.

      The value can be positive or negative.

      Parameters:
      lunit - the lexical unit to test.
      Returns:
      true if the value is a length or a percentage.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isPositiveSizeSACUnit

      public static boolean isPositiveSizeSACUnit(LexicalUnit lunit) throws CSSLexicalProcessingException
      Tests whether the given NSAC value represents a length (including unknown units) or percentage greater or equal to zero (e.g. font-size or column-width).
      Parameters:
      lunit - the lexical value.
      Returns:
      true if it is a non-negative <length-percentage> type, false otherwise.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isLengthOrNumberSACUnit

      public static boolean isLengthOrNumberSACUnit(LexicalUnit lunit) throws CSSLexicalProcessingException
      Tests whether the given NSAC unit type is a non-negative <length> or <number> unit (or a unknown unit).
      Parameters:
      lunit - the lexical value.
      Returns:
      true if it is a size or numeric type (including percentage) in the [0-∞] interval, false otherwise.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isSizeOrNumberSACUnit

      public static boolean isSizeOrNumberSACUnit(LexicalUnit lunit) throws CSSLexicalProcessingException
      Tests whether the given NSAC unit type is a non-negative <length-percentage> or <number> unit (or a unknown unit).
      Parameters:
      lunit - the lexical value.
      Returns:
      true if it is a size or numeric type (including percentage) in the [0-∞] interval, false otherwise.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isPercentageOrNumberSACUnit

      public static boolean isPercentageOrNumberSACUnit(LexicalUnit lunit)
      Tests whether the given NSAC unit type is a non-negative number (real or integer) or a percentage.

      Useful to check for border-image-slice.

      Parameters:
      lunit - the lexical value.
      Returns:
      true if is a number or a percentage in the [0-∞] interval, false otherwise.
    • isResolutionSACUnit

      public static boolean isResolutionSACUnit(LexicalUnit lunit) throws CSSLexicalProcessingException
      Tests whether the unit type of the given NSAC lexical unit is a resolution unit.
      Parameters:
      lunit - the NSAC lexical unit value.
      Returns:
      true if it is a resolution type, false otherwise.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isAngleOrPercentageSACUnit

      public static boolean isAngleOrPercentageSACUnit(LexicalUnit unit) throws CSSLexicalProcessingException
      Tests whether the given NSAC unit type is an angle or percentage unit (or zero, which is to be interpreted as length 0).

      This is useful for checking color stops in gradients.

      Parameters:
      unit - the lexical value.
      Returns:
      true if is an angle or percentage type, false otherwise.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isTimeSACUnit

      public static boolean isTimeSACUnit(LexicalUnit unit) throws CSSLexicalProcessingException
      Tests whether the given NSAC unit type is a time unit.
      Parameters:
      unit - the lexical value.
      Returns:
      true if is a time type, false otherwise.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • isColorSACUnit

      public static boolean isColorSACUnit(LexicalUnit lunit) throws CSSLexicalProcessingException
      Test whether the value represents a color.
      Parameters:
      lunit - the lexical unit to test.
      Returns:
      true if the value is a color.
      Throws:
      CSSLexicalProcessingException - if a PROXY value was found.
    • parseProperty

      public StyleValue parseProperty(String value) throws DOMException
      Parses a property value. Assumes that the property is not a shorthand sub-property.

      Parameters:
      value - the string containing the property value.
      Returns:
      the CSSValue object containing the parsed value.
      Throws:
      DOMException - if a problem was found parsing the property.
    • parseProperty

      public StyleValue parseProperty(String value, Parser parser) throws DOMException
      Parses a property value with the supplied parser.
      Parameters:
      value - the string containing the property value.
      parser - the NSAC parser.
      Returns:
      the CSSValue object containing the parsed value.
      Throws:
      DOMException - if a problem was found parsing the property.
    • parseProperty

      public StyleValue parseProperty(String propertyName, String value, CSSParser parser) throws DOMException
      Parses a property value with the supplied parser.
      Parameters:
      propertyName - the string containing the property name.
      value - the string containing the property value.
      parser - the NSAC parser.
      Returns:
      the CSSValue object containing the parsed value.
      Throws:
      DOMException - if a problem was found parsing the property.
    • parseProperty

      public StyleValue parseProperty(String propertyName, String value, Parser parser) throws DOMException
      Parses a property value with the supplied parser.
      Parameters:
      value - the string containing the property value.
      parser - the NSAC parser.
      Returns:
      the CSSValue object containing the parsed value.
      Throws:
      DOMException - if a problem was found parsing the property.
    • parseMediaFeature

      public PrimitiveValue parseMediaFeature(String feature) throws DOMException
      Parses a feature value.

      Parameters:
      feature - the string containing the feature value
      Returns:
      the PrimitiveValue object containing the parsed value.
      Throws:
      DOMException - if a problem was found parsing the feature.
    • parseMediaFeature

      public PrimitiveValue parseMediaFeature(String feature, Parser parser) throws DOMException
      Parses a feature value.

      Parameters:
      feature - the string containing the feature value.
      parser - the parser used to parse values.
      Returns:
      the PrimitiveValue object containing the parsed value.
      Throws:
      DOMException - if a problem was found parsing the feature.
    • createCSSValue

      public StyleValue createCSSValue(LexicalUnit lunit) throws DOMException
      Creates a CSSValue according to the given lexical value.

      The value is assumed to be stand-alone, independent.

      Specified by:
      createCSSValue in interface CSSValueFactory
      Parameters:
      lunit - the lexical value.
      Returns:
      a CSSValue associated to the given lexical value, or null if a bracket list was empty.
      Throws:
      DOMException - if the lexical unit had a wrong content to create a value.
    • createCSSValue

      public StyleValue createCSSValue(LexicalUnit lunit, AbstractCSSStyleDeclaration style) throws DOMException
      Creates a CSSValue according to the given lexical value.

      The value is assumed to be stand-alone, independent.

      Parameters:
      lunit - the lexical value.
      style - the (style) declaration that should handle errors, or null to not handle errors.
      Returns:
      a CSSValue associated to the given lexical value, or null if a bracket list was empty.
      Throws:
      DOMException - if the lexical unit had a wrong content to create a value.
    • createCSSValue

      public StyleValue createCSSValue(LexicalUnit lunit, AbstractCSSStyleDeclaration style, boolean subproperty) throws DOMException
      Creates a CSSValue according to the given lexical value.
      Parameters:
      lunit - the lexical value.
      style - the (style) declaration that should handle errors, or null to not handle errors.
      subproperty - the flag marking whether it is a sub-property.
      Returns:
      a CSSValue associated to the given lexical value, or null if a bracket list was empty.
      Throws:
      DOMException - if the lexical unit had a wrong content to create a value.
    • parseBracketList

      public ValueFactory.ListValueItem parseBracketList(LexicalUnit nlu, AbstractCSSStyleDeclaration style, boolean subproperty)
      Parse a bracket list.
      Parameters:
      nlu - the lexical unit containing the first item in the bracket list.
      style - the style declaration to report issues to.
      subproperty - true if the value must be a subproperty.
      Returns:
      the bracket list, or null if the list was empty.
    • createCSSValueItem

      public ValueItem createCSSValueItem(LexicalUnit lunit, boolean subproperty) throws DOMException
      Creates a CSSValue simple item according to the given lexical value.

      This method either returns a value or throws an exception, but cannot return null.

      Parameters:
      lunit - the lexical value.
      subproperty - true if the value is created under the umbrella of a shorthand set.
      Returns:
      a ValueItem associated to the given lexical value.
      Throws:
      DOMException - if a problem was found setting the lexical value to a CSS value.
    • createCSSPrimitiveValue

      public PrimitiveValue createCSSPrimitiveValue(LexicalUnit lunit) throws DOMException
      Creates a primitive value according to the given lexical value.

      This method won't return a ratio value (callers must check for values spanning more than one lexical unit).

      If the lexical unit is a slash operator and is in content context, returns a LexicalValue.

      If the lexical unit is an operator and a parameter, returns an UnknownValue.

      Specified by:
      createCSSPrimitiveValue in interface CSSValueFactory
      Parameters:
      lunit - the lexical value.
      Returns:
      the primitive value.
      Throws:
      CSSLexicalProcessingException - if this value is part of a larger lexical chain that should be handled as a lexical value.
      DOMException - if the lexical unit does not represent a valid primitive.
    • appendValueString

      public LexicalUnit appendValueString(StringBuilder buf, LexicalUnit lunit)
    • appendMinifiedValueString

      public LexicalUnit appendMinifiedValueString(StringBuilder buf, LexicalUnit lunit)
    • hasFactoryFlag

      public boolean hasFactoryFlag(short flag)
      Check whether the factory has the given flag set.
      Parameters:
      flag - the flag.
      Returns:
      true if the flag is set.