private static String serializeDeclaration(Declaration declaration) { String value = ""; for (Term<?> t : declaration) { if (!value.isEmpty()) { Term.Operator o = t.getOperator(); if (o != null) switch (o) { case COMMA: value += ","; } value += " "; } value += serializeTerm.apply(t); } return declaration.getProperty() + ": " + value + ";"; }
@Override protected boolean variantCondition(int variant, IntegerRef iteration) { switch (variant) { case POSITION: if (variantPassed[SIZE]) return false; return terms.get(iteration.get()).getOperator() != Operator.SLASH; case SIZE: if (!variantPassed[POSITION]) return false; return terms.get(iteration.get()).getOperator() == Operator.SLASH; default: return true; } }
@Override protected boolean variantCondition(int variant, IntegerRef iteration) { switch (variant) { case POSITION: if (variantPassed[SIZE]) return false; return terms.get(iteration.get()).getOperator() != Operator.SLASH; case SIZE: if (!variantPassed[POSITION]) return false; return terms.get(iteration.get()).getOperator() == Operator.SLASH; default: return true; } }
@Override protected boolean variantCondition(int variant, IntegerRef iteration) { switch (variant) { case POSITION: if (variantPassed[SIZE]) return false; return terms.get(iteration.get()).getOperator() != Operator.SLASH; case SIZE: if (!variantPassed[POSITION]) return false; return terms.get(iteration.get()).getOperator() == Operator.SLASH; default: return true; } }
public NodeData push(Declaration d) { Map<String,CSSProperty> properties = new HashMap<String,CSSProperty>(COMMON_DECLARATION_SIZE); Map<String,Term<?>> terms = new HashMap<String, Term<?>>(COMMON_DECLARATION_SIZE); boolean result = transformer.parseDeclaration(d, properties, terms); // in case of false do not insert anything if(!result) return this; //set the sources and store the properties for(Entry<String,CSSProperty> entry: properties.entrySet()) { propertiesOwn.put(entry.getKey(), entry.getValue()); sourcesOwn.put(entry.getKey(), d); } // remove operators from terms and store the values for(Entry<String,Term<?>> entry: terms.entrySet()) { Term<?> t = entry.getValue(); if (t.getOperator() != null) t = t.shallowClone().setOperator(null); valuesOwn.put(entry.getKey(), t); } return this; }
public NodeData push(Declaration d) { Map<String,CSSProperty> properties = new HashMap<String,CSSProperty>(COMMON_DECLARATION_SIZE); Map<String,Term<?>> terms = new HashMap<String, Term<?>>(COMMON_DECLARATION_SIZE); boolean result = transformer.parseDeclaration(d, properties, terms); // in case of false do not insert anything if(!result) return this; for(Entry<String, CSSProperty> entry : properties.entrySet()) { final String key = entry.getKey(); Quadruple q = map.get(key); if(q==null) q = new Quadruple(); q.curProp = entry.getValue(); q.curValue = terms.get(key); q.curSource = d; // remove operator if((q.curValue!=null) && (q.curValue.getOperator() != null)) { q.curValue = q.curValue.shallowClone().setOperator(null); } map.put(key, q); } return this; }
@Override protected boolean variantCondition(int variant, IntegerRef iteration) { switch (variant) { case STYLE: case VARIANT: case WEIGHT: // must be within 3 first terms return iteration.get() < 3; case SIZE: // no condition return true; case LINE_HEIGHT: if (!variantPassed[SIZE]) return false; return terms.get(iteration.get()).getOperator() == Operator.SLASH; case FAMILY: // requires passed size return variantPassed[SIZE]; default: return false; } }
@Override protected boolean variantCondition(int variant, IntegerRef iteration) { switch (variant) { case STYLE: case VARIANT: case WEIGHT: // must be within 3 first terms return iteration.get() < 3; case SIZE: // no condition return true; case LINE_HEIGHT: if (!variantPassed[SIZE]) return false; return terms.get(iteration.get()).getOperator() == Operator.SLASH; case FAMILY: // requires passed size return variantPassed[SIZE]; default: return false; } }
public NodeData push(Declaration d) { Map<String,CSSProperty> properties = new HashMap<String,CSSProperty>(COMMON_DECLARATION_SIZE); Map<String,Term<?>> terms = new HashMap<String, Term<?>>(COMMON_DECLARATION_SIZE); boolean result = transformer.parseDeclaration(d, properties, terms); // in case of false do not insert anything if(!result) return this; for(Entry<String, CSSProperty> entry : properties.entrySet()) { final String key = entry.getKey(); Quadruple q = map.get(key); if(q==null) q = new Quadruple(); q.curProp = entry.getValue(); q.curValue = terms.get(key); q.curSource = d; // remove operator if((q.curValue!=null) && (q.curValue.getOperator() != null)) { q.curValue = q.curValue.shallowClone().setOperator(null); } map.put(key, q); } return this; }
@Override protected boolean variantCondition(int variant, IntegerRef iteration) { switch (variant) { case STYLE: case VARIANT: case WEIGHT: // must be within 3 first terms return iteration.get() < 3; case SIZE: // no condition return true; case LINE_HEIGHT: if (!variantPassed[SIZE]) return false; return terms.get(iteration.get()).getOperator() == Operator.SLASH; case FAMILY: // requires passed size return variantPassed[SIZE]; default: return false; } }
@Override protected boolean variantCondition(int variant, IntegerRef iteration) { switch (variant) { case STYLE: case VARIANT: case WEIGHT: // must be within 3 first terms return iteration.get() < 3; case SIZE: // no condition return true; case LINE_HEIGHT: if (!variantPassed[SIZE]) return false; return terms.get(iteration.get()).getOperator() == Operator.SLASH; case FAMILY: // requires passed size return variantPassed[SIZE]; default: return false; } }
public NodeData push(Declaration d) { Map<String,CSSProperty> properties = new HashMap<String,CSSProperty>(COMMON_DECLARATION_SIZE); Map<String,Term<?>> terms = new HashMap<String, Term<?>>(COMMON_DECLARATION_SIZE); boolean result = transformer.parseDeclaration(d, properties, terms); // in case of false do not insert anything if(!result) return this; for(String key: properties.keySet()) { Quadruple q = map.get(key); if(q==null) q = new Quadruple(); q.curProp = properties.get(key); q.curValue = terms.get(key); q.curSource = d; // remove operator if((q.curValue!=null) && (q.curValue.getOperator() != null)) { q.curValue = q.curValue.shallowClone().setOperator(null); } map.put(key, q); } return this; }
@SuppressWarnings("unused") private boolean processUnicodeRange(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { if (d.size() > 0) { TermList list = tf.createList(); for (int i = 0; i < d.size(); i++) { Term<?> term = d.get(i); if (term instanceof TermUnicodeRange && ((i == 0 && term.getOperator() == null) || (i != 0 && term.getOperator() == Operator.COMMA))) { list.add(term); } else { return false; } } properties.put("unicode-range", UnicodeRange.list_values); values.put("unicode-range", list); return true; } else return false; }
@SuppressWarnings("unused") private boolean processUnicodeRange(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { if (d.size() > 0) { TermList list = tf.createList(); for (int i = 0; i < d.size(); i++) { Term<?> term = d.get(i); if (term instanceof TermUnicodeRange && ((i == 0 && term.getOperator() == null) || (i != 0 && term.getOperator() == Operator.COMMA))) { list.add(term); } else { return false; } } properties.put("unicode-range", UnicodeRange.list_values); values.put("unicode-range", list); return true; } else return false; }
private String checkForFormat(Term<?> term) { if (term instanceof TermFunction && term.getOperator() == Operator.SPACE) { final TermFunction fn = (TermFunction) term; if (fn.getFunctionName().equalsIgnoreCase("format") && fn.size() == 1 && fn.get(0) instanceof TermString) { return ((TermString) fn.get(0)).getValue(); } else return null; } else return null; }
private String checkForFormat(Term<?> term) { if (term instanceof TermFunction && term.getOperator() == Operator.SPACE) { final TermFunction fn = (TermFunction) term; if (fn.getFunctionName().equalsIgnoreCase("format") && fn.size() == 1 && fn.get(0) instanceof TermString) { return ((TermString) fn.get(0)).getValue(); } else return null; } else return null; }
private Term<?> stripSlash(Term<?> src) { if (src.getOperator() == Operator.SLASH) { if (src instanceof TermLength) return tf.createLength((Float) src.getValue(), ((TermLength) src).getUnit()); else if (src instanceof TermPercent) return tf.createPercent((Float) src.getValue()); else return src; } else return src; }
private Term<?> stripSlash(Term<?> src) { if (src.getOperator() == Operator.SLASH) { if (src instanceof TermLength) return tf.createLength((Float) src.getValue(), ((TermLength) src).getUnit()); else if (src instanceof TermPercent) return tf.createPercent((Float) src.getValue()); else return src; } else return src; }
private Term<?> stripSlash(Term<?> src) { if (src.getOperator() == Operator.SLASH) { if (src instanceof TermLength) return tf.createLength((Float) src.getValue(), ((TermLength) src).getUnit()); else if (src instanceof TermPercent) return tf.createPercent((Float) src.getValue()); else return src; } else return src; }
private Term<?> stripSlash(Term<?> src) { if (src.getOperator() == Operator.SLASH) { if (src instanceof TermLength) return tf.createLength((Float) src.getValue(), ((TermLength) src).getUnit()); else if (src instanceof TermPercent) return tf.createPercent((Float) src.getValue()); else return src; } else return src; }