Files
sdk/utils/css/tool.dart
T
terry@google.com 91dd628bd8 More changes for CSS to run under VM.
Need unique name for library collision with template parser.

Few more changes to work under VM.

More changes for lang.dart seperation.

Seperation from lang.dart (tokenizer can't access private fields of base class in another library).  This was allowed in frog but not in the VM.  VM is right so need to sever dependency.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9695048

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5544 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-15 21:19:54 +00:00

86 lines
2.3 KiB
Dart

// 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('dart:io');
#import('css.dart');
#import('../lib/file_system.dart');
#import('../lib/file_system_vm.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 ${_GREEN_COLOR}${filename}${_NO_COLOR} in ${elapsed} msec.');
}
/**
* Run from the `utils/css` directory.
*/
void main() {
var optionArgs = new Options().arguments;
assert(optionArgs.length == 2);
String sourceFullFn = optionArgs[0];
String outputFullFn = optionArgs[1];
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 VMFileSystem();
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 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}");
}
}