Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Unified Diff: utils/css/tool.dart

Issue 8937017: New CSS parser written in Dart to replace pyparser (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Put back for DartC Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: utils/css/tool.dart
diff --git a/utils/css/tool.dart b/utils/css/tool.dart
new file mode 100644
index 0000000000000000000000000000000000000000..9279b3f1c045bbe6a6d68bec306af0dbb3ece677
--- /dev/null
+++ b/utils/css/tool.dart
@@ -0,0 +1,84 @@
+// 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('csstool');
+
+#import('../../frog/file_system.dart');
+#import('../../frog/file_system_node.dart');
+#import('../../frog/lang.dart', prefix:'lang');
+#import('css.dart');
+
+FileSystem files;
+
+/** Invokes [callback] and returns how long it took to execute in ms. */
+num time(callback()) {
+ final watch = new Stopwatch();
+ watch.start();
+ callback();
+ watch.stop();
+ return watch.elapsedInMs();
+}
+
+printStats(num elapsed, [String filename = '']) {
+ print('Parsed\033[32m ${filename}\033[0m in ${elapsed} msec.');
+}
+
+/**
+ * Run from the `utils/css` directory.
+ */
+void main() {
+ // process.argv[0] == node and process.argv[1] == minfrog
+ assert(process.argv.length == 4);
+
+ String sourceFullFn = process.argv[2];
+ String outputFullFn = process.argv[3];
+
+ String sourcePath;
+ String sourceFilename;
+ int idxBeforeFilename = sourceFullFn.lastIndexOf('/');
+ if (idxBeforeFilename >= 0) {
+ sourcePath = sourceFullFn.substring(0, idxBeforeFilename + 1);
+ sourceFilename = sourceFullFn.substring(idxBeforeFilename + 1);
+ }
+
+ String outPath;
+ idxBeforeFilename = outputFullFn.lastIndexOf('/');
+ if (idxBeforeFilename >= 0) {
+ outPath = outputFullFn.substring(0, idxBeforeFilename + 1);
+ }
+
+ initCssWorld();
+
+ files = new NodeFileSystem();
+ if (!files.fileExists(sourceFullFn)) {
+ // Display colored error message if file is missing.
+ print("\033[31mCSS source file missing - ${sourceFullFn}\033[0m");
+ } else {
+ String source = files.readAll(sourceFullFn);
+
+ Stylesheet stylesheet;
+
+ final elapsed = time(() {
+ Parser parser = new Parser(
+ new lang.SourceFile(sourceFullFn, source), 0, files, sourcePath);
+ stylesheet = parser.parse();
+ });
+
+ printStats(elapsed, sourceFullFn);
+
+ StringBuffer buff = new StringBuffer(
+ '/* File generated by SCSS from source ${sourceFilename}\n' +
+ ' * Do not edit.\n' +
+ ' */\n\n');
+ buff.add(stylesheet.toString());
+
+ files.writeString(outputFullFn, buff.toString());
+ print("Generated file ${outputFullFn}");
+
+ // Generate CSS.dart file.
+ String genDartClassFile = Generate.dartClass(files, outPath, stylesheet,
+ sourceFilename);
+ print("Generated file ${genDartClassFile}");
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698