@SuppressWarnings("unused") private boolean processClear(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { return genericOneIdent(Clear.class, d, properties); }
@SuppressWarnings("unused") private boolean processColor(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { return genericOneIdentOrColor(Color.class, Color.color, d, properties, values); }
@SuppressWarnings("unused") private boolean processZIndex(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { return genericOneIdentOrInteger(ZIndex.class, ZIndex.integer, false, d, properties, values); }
return genericTermIdent(types.get(COLOR), terms.get(i), AVOID_INH, names.get(COLOR), properties) || genericTermColor(terms.get(i), names.get(COLOR), BackgroundColor.color, properties, values); case IMAGE: return genericTermIdent(types.get(IMAGE), terms.get(i), AVOID_INH, names.get(IMAGE), properties) || genericTerm(TermURI.class, terms.get(i), names .get(IMAGE), BackgroundImage.uri, false, properties, values); case REPEAT: return genericTermIdent(types.get(REPEAT), terms.get(i), AVOID_INH, names.get(REPEAT), properties); case ATTACHEMENT: return genericTermIdent(types.get(ATTACHEMENT), terms.get(i), AVOID_INH, names.get(ATTACHEMENT), properties); case POSITION: Term<?> term = terms.get(i); if (term instanceof TermIdent) { bp = genericPropertyRaw(BackgroundPosition.class, allowedBackground, (TermIdent) term); if (bp != null)
return genericTermIdent(types.get(STYLE), terms.get(i), AVOID_INH, names.get(STYLE), properties); case VARIANT: return genericTermIdent(types.get(VARIANT), terms.get(i), AVOID_INH, names.get(VARIANT), properties); case WEIGHT: return genericProperty(types.get(WEIGHT), (TermIdent) term, AVOID_INH, properties, names.get(WEIGHT)); } else if (term instanceof TermInteger) { return genericTermIdent(types.get(SIZE), terms.get(i), AVOID_INH, names.get(SIZE), properties) || genericTermLength(terms.get(i), names .get(SIZE), FontSize.length, true, properties, values) || genericTerm(TermPercent.class, terms.get(i), names .get(SIZE), FontSize.percentage, true, properties, values); case LINE_HEIGHT: return genericTermIdent(types.get(LINE_HEIGHT), terms.get(i), AVOID_INH, names.get(LINE_HEIGHT), properties) || genericTerm(TermNumber.class, terms.get(i), names .get(LINE_HEIGHT), LineHeight.number, true, properties, values) || genericTerm(TermInteger.class, terms.get(i), names .get(LINE_HEIGHT), LineHeight.number, true, properties, values)
@SuppressWarnings("unused") private boolean processWidth(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { return genericOneIdentOrLengthOrPercent(Width.class, Width.length, Width.percentage, false, d, properties, values); }
return genericProperty(GenericCSSPropertyProxy.class, (TermIdent) term, true, properties, d.getProperty()); else return genericTerm(TermLength.class, term, d.getProperty(), null, false, properties, values) || genericTerm(TermPercent.class, term, d.getProperty(), null, false, properties, values) || genericTerm(TermInteger.class, term, d.getProperty(), null, false, properties, values) || genericTermColor(term, d.getProperty(), null, properties, values);
return genericOneIdent(TextDecoration.class, d, properties); for (Term<?> term : d.asList()) { if (term instanceof TermIdent && (dec = genericPropertyRaw(TextDecoration.class, availableDecorations, (TermIdent) term)) != null) {
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; this.propertiesOwn.putAll(properties); // remove operators from terms for(Entry<String,Term<?>> entry: terms.entrySet()) { entry.getValue().setOperator(null); valuesOwn.put(entry.getKey(), entry.getValue()); } return this; }
@Override protected boolean operation(int i, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { final Set<Clip> allowedClips = EnumSet.of(Clip.AUTO); Clip clip = null; if (terms.get(i) instanceof TermIdent && (clip = genericPropertyRaw(Clip.class, allowedClips, (TermIdent) terms.get(i))) != null) { properties.put(names.get(i), clip); return true; } else return genericTermLength(terms.get(i), names.get(i), Clip.rect, false, properties, values); } }
@SuppressWarnings("unused") private boolean processClip(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { if (d.size() != 1) return false; Term<?> term = d.get(0); if (term instanceof TermIdent) { final Set<Clip> allowedClips = EnumSet.allOf(Clip.class); Clip clip = genericPropertyRaw(Clip.class, allowedClips, (TermIdent) term); if (clip != null) { properties.put("clip", clip); return true; } return false; } else if (term instanceof TermFunction) { return genericTerm(TermFunction.class, term, "clip", Clip.shape, false, properties, values); } return false; }
/** * Converts TermIdent into value of enum of given class and stores it into * properties map under key property * * @param <T> * Enum & CSSProperty limitation * @param type * Type of enum which instance is retrieved * @param term * Term with value to be converted * @param avoidInherit * If <code>true</code> inherit value is not considered valid * @param properties * Properties map where to store value * @param propertyName * Name under which property is stored in map * @return <code>true</code> in case of success, <code>false</code> * otherwise */ protected <T extends CSSProperty> boolean genericProperty(Class<T> type, TermIdent term, boolean avoidInherit, Map<String, CSSProperty> properties, String propertyName) { T property = genericPropertyRaw(type, null, term); if (property == null || (avoidInherit && property.equalsInherit())) return false; properties.put(propertyName, property); return true; }
@SuppressWarnings("unused") private boolean processLetterSpacing(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { return genericOneIdentOrLength(LetterSpacing.class, LetterSpacing.length, false, d, properties, values); }
@SuppressWarnings("unused") private boolean processOpacity(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { return genericOneIdentOrIntegerOrNumber(Opacity.class, Opacity.number, Opacity.number, false, d, properties, values); }
/** * Converts TermIdent into value of CSSProperty for given class * */ protected <T extends CSSProperty> boolean genericTermIdent(Class<T> type, Term<?> term, boolean avoidInherit, String propertyName, Map<String, CSSProperty> properties) { if (term instanceof TermIdent) { return genericProperty(type, (TermIdent) term, avoidInherit, properties, propertyName); } return false; }
protected Map<String, Method> parsingMethods() { Map<String, Method> map = new HashMap<String, Method>(css .getTotalProperties(), 1.0f); for (String key : css.getDefinedPropertyNames()) { try { Method m = DeclarationTransformer.class.getDeclaredMethod( DeclarationTransformer.camelCase("process-" + key), Declaration.class, Map.class, Map.class); map.put(key, m); } catch (Exception e) { log.warn("Unable to find method for property {}.", key); } } log.info("Totally found {} parsing methods", map.size()); return map; }
return genericTermIdent(types.get(COLOR), terms.get(i), AVOID_INH, names.get(COLOR), properties) || genericTermColor(terms.get(i), names.get(COLOR), BackgroundColor.color, properties, values); case IMAGE: return genericTermIdent(types.get(IMAGE), terms.get(i), AVOID_INH, names.get(IMAGE), properties) || genericTerm(TermURI.class, terms.get(i), names .get(IMAGE), BackgroundImage.uri, false, properties, values); case REPEAT: return genericTermIdent(types.get(REPEAT), terms.get(i), AVOID_INH, names.get(REPEAT), properties); case ATTACHMENT: return genericTermIdent(types.get(ATTACHMENT), terms.get(i), AVOID_INH, names.get(ATTACHMENT), properties); case POSITION: bp = genericPropertyRaw(BackgroundPosition.class, allowedBackground, (TermIdent) term); if (bp != null) Term<?> term = terms.get(i); if (term instanceof TermIdent) { bs = genericPropertyRaw(BackgroundSize.class, allowedSize, (TermIdent) term); if (bs != null) {
return genericTermIdent(types.get(STYLE), terms.get(i), AVOID_INH, names.get(STYLE), properties); case VARIANT: return genericTermIdent(types.get(VARIANT), terms.get(i), AVOID_INH, names.get(VARIANT), properties); case WEIGHT: return genericProperty(types.get(WEIGHT), (TermIdent) term, AVOID_INH, properties, names.get(WEIGHT)); } else if (term instanceof TermInteger) { return genericTermIdent(types.get(SIZE), terms.get(i), AVOID_INH, names.get(SIZE), properties) || genericTermLength(terms.get(i), names .get(SIZE), FontSize.length, true, properties, values) || genericTerm(TermPercent.class, terms.get(i), names .get(SIZE), FontSize.percentage, true, properties, values); case LINE_HEIGHT: return genericTermIdent(types.get(LINE_HEIGHT), terms.get(i), AVOID_INH, names.get(LINE_HEIGHT), properties) || genericTerm(TermNumber.class, terms.get(i), names .get(LINE_HEIGHT), LineHeight.number, true, properties, values) || genericTerm(TermInteger.class, terms.get(i), names .get(LINE_HEIGHT), LineHeight.number, true, properties, values)
@SuppressWarnings("unused") private boolean processTop(Declaration d, Map<String, CSSProperty> properties, Map<String, Term<?>> values) { return genericOneIdentOrLengthOrPercent(Top.class, Top.length, Top.percentage, false, d, properties, values); }
return genericProperty(GenericCSSPropertyProxy.class, (TermIdent) term, true, properties, d.getProperty()); else return genericTerm(TermLength.class, term, d.getProperty(), null, false, properties, values) || genericTerm(TermPercent.class, term, d.getProperty(), null, false, properties, values) || genericTerm(TermInteger.class, term, d.getProperty(), null, false, properties, values) || genericTermColor(term, d.getProperty(), null, properties, values);