summaryrefslogtreecommitdiffstats
path: root/theme-compiler/src/com/vaadin/sass/handler
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-09-07 16:43:01 +0300
committerArtur Signell <artur@vaadin.com>2012-09-07 16:43:01 +0300
commit544152d1adc3a098445f7b11b4651fcc3c2f13bc (patch)
tree755041e36ad5f39ddc4d72db0f977ef68da7e047 /theme-compiler/src/com/vaadin/sass/handler
parent733a7fd89068939b44f357e9eb88e197427097da (diff)
downloadvaadin-framework-544152d1adc3a098445f7b11b4651fcc3c2f13bc.tar.gz
vaadin-framework-544152d1adc3a098445f7b11b4651fcc3c2f13bc.zip
Renamed sass -> theme-compiler for consistency (#9299)
Diffstat (limited to 'theme-compiler/src/com/vaadin/sass/handler')
-rw-r--r--theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandler.java72
-rw-r--r--theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java276
2 files changed, 348 insertions, 0 deletions
diff --git a/theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandler.java b/theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandler.java
new file mode 100644
index 0000000000..c489a6a4a7
--- /dev/null
+++ b/theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandler.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2011 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.vaadin.sass.handler;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.w3c.css.sac.DocumentHandler;
+import org.w3c.css.sac.LexicalUnit;
+import org.w3c.css.sac.SACMediaList;
+import org.w3c.css.sac.SelectorList;
+
+import com.vaadin.sass.ScssStylesheet;
+import com.vaadin.sass.tree.ForNode;
+import com.vaadin.sass.tree.IfNode;
+import com.vaadin.sass.tree.MixinDefNode;
+import com.vaadin.sass.tree.VariableNode;
+import com.vaadin.sass.tree.WhileNode;
+import com.vaadin.sass.tree.controldirective.EachDefNode;
+
+public interface SCSSDocumentHandler extends DocumentHandler {
+ ScssStylesheet getStyleSheet();
+
+ void variable(String name, LexicalUnit value, boolean guarded);
+
+ void startMixinDirective(String name, Collection<VariableNode> args);
+
+ void endMixinDirective(String name, Collection<VariableNode> args);
+
+ MixinDefNode mixinDirective(String name, String args, String body);
+
+ void debugDirective();
+
+ ForNode forDirective(String var, String from, String to, boolean exclusive,
+ String body);
+
+ WhileNode whileDirective(String condition, String body);
+
+ IfNode ifDirective();
+
+ void extendDirective(SelectorList list);
+
+ void startNestedProperties(String name);
+
+ void endNestedProperties(String name);
+
+ void includeDirective(String name, Collection<LexicalUnit> args);
+
+ void importStyle(String uri, SACMediaList media, boolean isURL);
+
+ void property(String name, LexicalUnit value, boolean important,
+ String comment);
+
+ EachDefNode startEachDirective(String variable, ArrayList<String> list);
+
+ void endEachDirective();
+
+}
diff --git a/theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java b/theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java
new file mode 100644
index 0000000000..0ed8b8d0f2
--- /dev/null
+++ b/theme-compiler/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java
@@ -0,0 +1,276 @@
+/*
+ * Copyright 2011 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.vaadin.sass.handler;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
+
+import org.w3c.css.sac.CSSException;
+import org.w3c.css.sac.InputSource;
+import org.w3c.css.sac.LexicalUnit;
+import org.w3c.css.sac.SACMediaList;
+import org.w3c.css.sac.SelectorList;
+
+import com.vaadin.sass.ScssStylesheet;
+import com.vaadin.sass.tree.BlockNode;
+import com.vaadin.sass.tree.CommentNode;
+import com.vaadin.sass.tree.ExtendNode;
+import com.vaadin.sass.tree.ForNode;
+import com.vaadin.sass.tree.IfNode;
+import com.vaadin.sass.tree.ImportNode;
+import com.vaadin.sass.tree.MediaNode;
+import com.vaadin.sass.tree.MixinDefNode;
+import com.vaadin.sass.tree.MixinNode;
+import com.vaadin.sass.tree.NestPropertiesNode;
+import com.vaadin.sass.tree.Node;
+import com.vaadin.sass.tree.RuleNode;
+import com.vaadin.sass.tree.VariableNode;
+import com.vaadin.sass.tree.WhileNode;
+import com.vaadin.sass.tree.controldirective.EachDefNode;
+
+public class SCSSDocumentHandlerImpl implements SCSSDocumentHandler {
+
+ private final ScssStylesheet styleSheet;
+ Stack<Node> nodeStack = new Stack<Node>();
+ private Map<String, Stack<LexicalUnit>> variableMap;
+
+ public SCSSDocumentHandlerImpl() {
+ this(new ScssStylesheet());
+ variableMap = new HashMap<String, Stack<LexicalUnit>>();
+ }
+
+ public SCSSDocumentHandlerImpl(ScssStylesheet styleSheet) {
+ this.styleSheet = styleSheet;
+ nodeStack.push(styleSheet);
+ }
+
+ public void addVariable(String varName, LexicalUnit value) {
+ if (variableMap.get(varName) == null) {
+ variableMap.put(varName, new Stack<LexicalUnit>());
+ }
+ Stack<LexicalUnit> valueStack = variableMap.get(varName);
+ valueStack.push(value);
+ }
+
+ public void removeVaraible(String varName) {
+ Stack<LexicalUnit> valueStack = variableMap.get(varName);
+ if (valueStack != null && !valueStack.isEmpty()) {
+ valueStack.pop();
+ }
+ }
+
+ public LexicalUnit getVariable(String varName) {
+ Stack<LexicalUnit> valueStack = variableMap.get(varName);
+ if (valueStack != null && !valueStack.isEmpty()) {
+ return valueStack.peek();
+ }
+ return null;
+ }
+
+ @Override
+ public ScssStylesheet getStyleSheet() {
+ return styleSheet;
+ }
+
+ @Override
+ public void startDocument(InputSource source) throws CSSException {
+ nodeStack.push(styleSheet);
+ // System.out.println("startDocument(InputSource source): "
+ // + source.getURI());
+ }
+
+ @Override
+ public void endDocument(InputSource source) throws CSSException {
+ // System.out.println("endDocument(InputSource source): "
+ // + source.getURI());
+ }
+
+ @Override
+ public void variable(String name, LexicalUnit value, boolean guarded) {
+ VariableNode node = new VariableNode(name, value, guarded);
+ nodeStack.peek().appendChild(node);
+ }
+
+ @Override
+ public void debugDirective() {
+ }
+
+ @Override
+ public ForNode forDirective(String var, String from, String to,
+ boolean exclusive, String body) {
+ ForNode node = new ForNode(var, from, to, exclusive, body);
+ System.out.println(node);
+ return node;
+ }
+
+ @Override
+ public EachDefNode startEachDirective(String var, ArrayList<String> list) {
+ EachDefNode node = new EachDefNode(var, list);
+ nodeStack.peek().appendChild(node);
+ nodeStack.push(node);
+ return node;
+ }
+
+ @Override
+ public void endEachDirective() {
+ nodeStack.pop();
+ }
+
+ @Override
+ public WhileNode whileDirective(String condition, String body) {
+ WhileNode node = new WhileNode(condition, body);
+ System.out.println(node);
+ return node;
+ }
+
+ @Override
+ public IfNode ifDirective() {
+ return new IfNode();
+ }
+
+ @Override
+ public void comment(String text) throws CSSException {
+ CommentNode node = new CommentNode(text);
+ nodeStack.peek().appendChild(node);
+ }
+
+ @Override
+ public void ignorableAtRule(String atRule) throws CSSException {
+ System.out.println("ignorableAtRule(String atRule): " + atRule);
+ }
+
+ @Override
+ public void namespaceDeclaration(String prefix, String uri)
+ throws CSSException {
+ System.out.println("namespaceDeclaration(String prefix, String uri): "
+ + prefix + ", " + uri);
+ }
+
+ @Override
+ public void importStyle(String uri, SACMediaList media,
+ String defaultNamespaceURI) throws CSSException {
+ }
+
+ @Override
+ public void startMedia(SACMediaList media) throws CSSException {
+ MediaNode node = new MediaNode(media);
+ nodeStack.peek().appendChild(node);
+ nodeStack.push(node);
+ }
+
+ @Override
+ public void endMedia(SACMediaList media) throws CSSException {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void startPage(String name, String pseudo_page) throws CSSException {
+ System.out.println("startPage(String name, String pseudo_page): "
+ + name + ", " + pseudo_page);
+ }
+
+ @Override
+ public void endPage(String name, String pseudo_page) throws CSSException {
+ System.out.println("endPage(String name, String pseudo_page): " + name
+ + ", " + pseudo_page);
+ }
+
+ @Override
+ public void startFontFace() throws CSSException {
+ System.out.println("startFontFace()");
+ }
+
+ @Override
+ public void endFontFace() throws CSSException {
+ System.out.println("endFontFace()");
+ }
+
+ @Override
+ public void startSelector(SelectorList selectors) throws CSSException {
+ BlockNode node = new BlockNode(selectors);
+ nodeStack.peek().appendChild(node);
+ nodeStack.push(node);
+ }
+
+ @Override
+ public void endSelector(SelectorList selectors) throws CSSException {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void property(String name, LexicalUnit value, boolean important)
+ throws CSSException {
+ property(name, value, important, null);
+ }
+
+ public void property(String name, LexicalUnit value, boolean important,
+ String comment) {
+ RuleNode node = new RuleNode(name, value, important, comment);
+ nodeStack.peek().appendChild(node);
+ }
+
+ @Override
+ public void extendDirective(SelectorList list) {
+ ExtendNode node = new ExtendNode(list);
+ nodeStack.peek().appendChild(node);
+ }
+
+ @Override
+ public MixinDefNode mixinDirective(String name, String args, String body) {
+ MixinDefNode node = new MixinDefNode(name, args, body);
+ return node;
+ }
+
+ @Override
+ public void startNestedProperties(String name) {
+ NestPropertiesNode node = new NestPropertiesNode(name);
+ nodeStack.peek().appendChild(node);
+ nodeStack.push(node);
+ }
+
+ @Override
+ public void endNestedProperties(String name) {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void startMixinDirective(String name, Collection<VariableNode> args) {
+ MixinDefNode node = new MixinDefNode(name.trim(), args);
+ nodeStack.peek().appendChild(node);
+ nodeStack.push(node);
+ }
+
+ @Override
+ public void endMixinDirective(String name, Collection<VariableNode> args) {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void includeDirective(String name, Collection<LexicalUnit> args) {
+ MixinNode node = new MixinNode(name, args);
+ nodeStack.peek().appendChild(node);
+ }
+
+ @Override
+ public void importStyle(String uri, SACMediaList media, boolean isURL) {
+ ImportNode node = new ImportNode(uri, media, isURL);
+ nodeStack.peek().appendChild(node);
+ }
+}