| // Copyright (c) 2012, 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('dart:math', prefix: 'Math'); |
| #import("../lib/file_system.dart"); |
| #import('../lib/file_system_memory.dart'); |
| |
| #source('cssoptions.dart'); |
| #source('source.dart'); |
| #source('tokenkind.dart'); |
| #source('token.dart'); |
| #source('tokenizer_base.dart'); |
| #source('tokenizer.dart'); |
| #source('treebase.dart'); |
| #source('tree.dart'); |
| #source('cssselectorexception.dart'); |
| #source('cssworld.dart'); |
| #source('parser.dart'); |
| #source('validate.dart'); |
| #source('generate.dart'); |
| #source('world.dart'); |
| |
| |
| void initCssWorld([bool commandLine = true]) { |
| FileSystem fs = new MemoryFileSystem(); |
| parseOptions([], fs); |
| initializeWorld(fs); |
| |
| // 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. |
| options.throwOnErrors = true; |
| options.throwOnFatal = true; |
| options.useColors = commandLine ? true : false; |
| options.warningsAsErrors = false; |
| options.showWarnings = true; |
| } |
| |
| // TODO(terry): Add obfuscation mapping file. |
| void cssParseAndValidate(String cssExpression, CssWorld cssworld) { |
| Parser parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, |
| cssExpression)); |
| var tree = parser.parseTemplate(); |
| if (tree != null) { |
| Validate.template(tree.selectors, cssworld); |
| } |
| } |
| |
| // Returns pretty printed tree of the expression. |
| String cssParseAndValidateDebug(String cssExpression, CssWorld cssworld) { |
| Parser parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, |
| cssExpression)); |
| String output = ""; |
| String prettyTree = ""; |
| try { |
| var tree = parser.parseTemplate(); |
| if (tree != null) { |
| prettyTree = tree.toDebugString(); |
| Validate.template(tree.selectors, cssworld); |
| output = prettyTree; |
| } |
| } catch (e) { |
| String error = e.toString(); |
| output = "$error\n$prettyTree"; |
| throw e; |
| } |
| |
| return output; |
| } |