diff options
author | Marc Englund <marc@vaadin.com> | 2012-11-23 13:21:49 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2012-11-23 11:47:42 +0000 |
commit | fa7da722662de5ead99226189ca963afebdf5446 (patch) | |
tree | 7a6d87dd6ddf2ec6922cc10833a260d9340115eb /theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java | |
parent | 1c400f042b32046a4becacfb856db4829bd0515d (diff) | |
download | vaadin-framework-fa7da722662de5ead99226189ca963afebdf5446.tar.gz vaadin-framework-fa7da722662de5ead99226189ca963afebdf5446.zip |
Make most of the sass compiler API internal, fixes #10339
Change-Id: Ia783142aa96665a26491b659a387490883875d37
Diffstat (limited to 'theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java')
-rw-r--r-- | theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java new file mode 100644 index 0000000000..01fa5008f3 --- /dev/null +++ b/theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java @@ -0,0 +1,80 @@ +/* + * 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.internal.tree; + +import org.w3c.css.sac.SACMediaList; + +import com.vaadin.sass.internal.ScssStylesheet; +import com.vaadin.sass.internal.visitor.ImportNodeHandler; + +public class ImportNode extends Node { + private static final long serialVersionUID = 5671255892282668438L; + + private String uri; + private SACMediaList ml; + private boolean isURL; + + public ImportNode(String uri, SACMediaList ml, boolean isURL) { + super(); + this.uri = uri; + this.ml = ml; + this.isURL = isURL; + } + + public boolean isPureCssImport() { + return (isURL || uri.endsWith(".css") || uri.startsWith("http://") || hasMediaQueries()); + } + + private boolean hasMediaQueries() { + return (ml != null && ml.getLength() >= 1 && !"all".equals(ml.item(0))); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder("@import "); + if (isURL) { + builder.append("url(").append(uri).append(")"); + } else { + builder.append("\"").append(uri).append("\""); + } + if (hasMediaQueries()) { + for (int i = 0; i < ml.getLength(); i++) { + builder.append(" ").append(ml.item(i)); + } + } + builder.append(";"); + return builder.toString(); + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public SACMediaList getMl() { + return ml; + } + + @Override + public void traverse() { + // TODO shouldn't be reached with current setup, try anyway? + ImportNodeHandler.traverse((ScssStylesheet) getParentNode()); + } +} |