Index: utils/css/css.dart |
diff --git a/utils/css/css.dart b/utils/css/css.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b2d828c0138734162e2775557efbf99db0d615a5 |
--- /dev/null |
+++ b/utils/css/css.dart |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+#library('css'); |
+ |
+#import('../../frog/lang.dart', prefix:'lang'); |
+#import('../../frog/file_system_memory.dart'); |
+ |
+#source('tokenkind.dart'); |
+#source('tokenizer.dart'); |
+#source('tree.dart'); |
+#source('cssselectorexception.dart'); |
+#source('cssworld.dart'); |
+#source('parser.dart'); |
+ |
+ |
+void initCssWorld() { |
+ var fs = new MemoryFileSystem(); |
+ lang.parseOptions('', [], fs); |
+ lang.initializeWorld(fs); |
+ lang.world.process(); |
+ lang.world.resolveAll(); |
+ |
+ // TODO(terry): Should be set by arguments. When run as a tool these aren't |
+ // set when run internaly set these so we can compile CSS and catch any |
+ // problems programmatically. |
+ lang.options.throwOnErrors = true; |
+ lang.options.throwOnFatal = true; |
+} |
+ |
+// TODO(terry): Add obfuscation mapping file. |
+void cssParseAndValidate(String cssExpression, CssWorld world) { |
+ Parser parser = new Parser(new lang.SourceFile(lang.SourceFile.IN_MEMORY_FILE, |
+ cssExpression)); |
+ var tree = parser.template(); |
+ if (tree != null) { |
+ parser.validateTemplate(tree.selectors, world); |
+ } |
+} |
+ |
+// Returns pretty printed tree of the expression. |
+String cssParseAndValidateDebug(String cssExpression, CssWorld world) { |
+ Parser parser = new Parser(new lang.SourceFile(lang.SourceFile.IN_MEMORY_FILE, |
+ cssExpression)); |
+ String output = ""; |
+ String prettyTree = ""; |
+ try { |
+ var tree = parser.template(); |
+ if (tree != null) { |
+ prettyTree = tree.toDebugString(); |
+ parser.validateTemplate(tree.selectors, world); |
+ output = prettyTree; |
+ } |
+ } catch (var e) { |
+ String error = e.toString(); |
+ output = "$error\n$prettyTree"; |
+ throw e; |
+ } |
+ |
+ return output; |
+} |