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

cz.vutbr.web.csskit.fn.CounterImpl Maven / Gradle / Ivy

/**
 * 
 */
package cz.vutbr.web.csskit.fn;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cz.vutbr.web.css.CSSProperty.ListStyleType;
import cz.vutbr.web.css.Term;
import cz.vutbr.web.css.TermFunction;
import cz.vutbr.web.css.TermIdent;
import cz.vutbr.web.css.TermList;
import cz.vutbr.web.csskit.TermFunctionImpl;

/**
 * @author burgetr
 *
 */
public class CounterImpl extends TermFunctionImpl implements TermFunction.Counter {

    public static Map allowedStyles;
    static {
        allowedStyles = new HashMap<>(ListStyleType.values().length - 4);
        for (ListStyleType item : ListStyleType.values()) {
            if (item != ListStyleType.INHERIT && item != ListStyleType.INITIAL
                    && item != ListStyleType.UNSET) {
                allowedStyles.put(item.toString(), item);
            }
        }
    }
    
    private String name;
    private ListStyleType style;
    
    public CounterImpl() {
        setValid(false);
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public ListStyleType getStyle() {
        return style;
    }
    
    @Override
    public TermList setValue(List> value) {
        super.setValue(value);
        List> args = getSeparatedValues(DEFAULT_ARG_SEP, true);
        if (args != null && (args.size() == 1 || args.size() == 2)) {
            //check for name
            if (args.get(0) instanceof TermIdent) {
                name = ((TermIdent) args.get(0)).getValue();
                setValid(true);
            }
            //an optional style
            if (args.size() == 2) {
                if (args.get(1) instanceof TermIdent) {
                    final String styleString = ((TermIdent) args.get(1)).getValue();
                    style = allowedStyles.get(styleString.toLowerCase());
                    if (style == null) {
                        setValid(false); //unknown style
                    }
                } else {
                    setValid(false);
                }
            }
        }
        return this;
    }
    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy