| OLD | NEW |
| 1 library angular.tools.html_expression_extractor; | 1 library angular.tools.html_expression_extractor; |
| 2 | 2 |
| 3 import 'dart:async'; | 3 import 'dart:async'; |
| 4 import 'dart:io'; | 4 import 'dart:io'; |
| 5 import 'package:angular/tools/html_extractor.dart'; | 5 import 'package:angular/tools/html_extractor.dart'; |
| 6 import 'package:angular/tools/source_metadata_extractor.dart'; | 6 import 'package:angular/tools/source_metadata_extractor.dart'; |
| 7 import 'package:angular/tools/source_crawler_impl.dart'; | 7 import 'package:angular/tools/source_crawler_impl.dart'; |
| 8 import 'package:angular/tools/io.dart'; | 8 import 'package:angular/tools/io.dart'; |
| 9 import 'package:angular/tools/io_impl.dart'; | 9 import 'package:angular/tools/io_impl.dart'; |
| 10 import 'package:angular/tools/common.dart'; | 10 import 'package:angular/tools/common.dart'; |
| 11 | 11 |
| 12 import 'package:di/di.dart'; | 12 import 'package:di/di.dart'; |
| 13 import 'package:di/dynamic_injector.dart'; | 13 import 'package:di/dynamic_injector.dart'; |
| 14 | 14 |
| 15 import 'package:angular/core/module.dart'; |
| 15 import 'package:angular/core/parser/parser.dart'; | 16 import 'package:angular/core/parser/parser.dart'; |
| 16 import 'package:angular/tools/parser_getter_setter/generator.dart'; | 17 import 'package:angular/tools/parser_getter_setter/generator.dart'; |
| 18 import 'package:angular/tools/parser_generator/generator.dart'; |
| 17 | 19 |
| 18 main(args) { | 20 main(args) { |
| 19 if (args.length < 5) { | 21 if (args.length < 5) { |
| 20 print('Usage: expression_extractor file_to_scan html_root header_file ' | 22 print('Usage: expression_extractor file_to_scan html_root header_file ' |
| 21 'footer_file output [package_roots+]'); | 23 'footer_file output [package_roots+]'); |
| 22 exit(0); | 24 exit(0); |
| 23 } | 25 } |
| 24 IoService ioService = new IoServiceImpl(); | 26 IoService ioService = new IoServiceImpl(); |
| 25 | 27 |
| 26 var packageRoots = | 28 var packageRoots = |
| 27 (args.length < 6) ? [Platform.packageRoot] : args.sublist(5); | 29 (args.length < 6) ? [Platform.packageRoot] : args.sublist(5); |
| 28 var sourceCrawler = new SourceCrawlerImpl(packageRoots); | 30 var sourceCrawler = new SourceCrawlerImpl(packageRoots); |
| 29 var sourceMetadataExtractor = new SourceMetadataExtractor(); | 31 var sourceMetadataExtractor = new SourceMetadataExtractor(); |
| 30 List<DirectiveInfo> directives = | 32 List<DirectiveInfo> directives = |
| 31 sourceMetadataExtractor.gatherDirectiveInfo(args[0], sourceCrawler); | 33 sourceMetadataExtractor.gatherDirectiveInfo(args[0], sourceCrawler); |
| 32 var htmlExtractor = new HtmlExpressionExtractor(directives); | 34 var htmlExtractor = new HtmlExpressionExtractor(directives); |
| 33 htmlExtractor.crawl(args[1], ioService); | 35 htmlExtractor.crawl(args[1], ioService); |
| 34 | 36 |
| 35 var expressions = htmlExtractor.expressions; | 37 var expressions = htmlExtractor.expressions; |
| 36 expressions.add('null'); | 38 expressions.add('null'); |
| 37 | 39 |
| 38 var headerFile = args[2]; | 40 var headerFile = args[2]; |
| 39 var footerFile = args[3]; | 41 var footerFile = args[3]; |
| 40 var outputFile = args[4]; | 42 var outputFile = args[4]; |
| 41 var printer; | 43 SourcePrinter printer; |
| 42 if (outputFile == '--') { | 44 if (outputFile == '--') { |
| 43 printer = stdout; | 45 printer = new SourcePrinter(); |
| 44 } else { | 46 } else { |
| 45 printer = new File(outputFile).openWrite(); | 47 printer = new FileSourcePrinter(outputFile); |
| 46 } | 48 } |
| 47 | 49 |
| 48 // Output the header file first. | 50 // Output the header file first. |
| 49 if (headerFile != '') { | 51 if (headerFile != '') { |
| 50 printer.write(_readFile(headerFile)); | 52 printer.printSrc(_readFile(headerFile)); |
| 51 } | 53 } |
| 52 | 54 |
| 53 printer.write('// Found ${expressions.length} expressions\n'); | 55 printer.printSrc('// Found ${expressions.length} expressions'); |
| 54 Module module = new Module() | 56 Module module = new Module() |
| 55 ..type(Parser, implementedBy: DynamicParser) | 57 ..type(Parser, implementedBy: DynamicParser) |
| 56 ..type(ParserBackend, implementedBy: DartGetterSetterGen); | 58 ..type(ParserBackend, implementedBy: DartGetterSetterGen) |
| 59 ..type(FilterMap, implementedBy: NullFilterMap) |
| 60 ..value(SourcePrinter, printer); |
| 57 Injector injector = | 61 Injector injector = |
| 58 new DynamicInjector(modules: [module], allowImplicitInjection: true); | 62 new DynamicInjector(modules: [module], allowImplicitInjection: true); |
| 59 | 63 |
| 60 runZoned(() { | 64 runZoned(() { |
| 61 // Run the generator. | 65 // Run the generator. |
| 62 injector.get(ParserGetterSetter).generateParser(htmlExtractor.expressions, | 66 injector.get(ParserGetterSetter).generateParser(htmlExtractor.expressions); |
| 63 printer); | |
| 64 }, zoneSpecification: new ZoneSpecification(print: (_, __, ___, String line) { | 67 }, zoneSpecification: new ZoneSpecification(print: (_, __, ___, String line) { |
| 65 printer.write(line); | 68 printer.printSrc(line); |
| 66 })); | 69 })); |
| 67 | 70 |
| 68 | 71 |
| 69 // Output footer last. | 72 // Output footer last. |
| 70 if (footerFile != '') { | 73 if (footerFile != '') { |
| 71 printer.write(_readFile(footerFile)); | 74 printer.printSrc(_readFile(footerFile)); |
| 72 } | 75 } |
| 73 } | 76 } |
| 74 | 77 |
| 75 String _readFile(String filePath) => new File(filePath).readAsStringSync(); | 78 String _readFile(String filePath) => new File(filePath).readAsStringSync(); |
| 79 |
| 80 class FileSourcePrinter implements SourcePrinter { |
| 81 final File _file; |
| 82 |
| 83 FileSourcePrinter(String filePath) |
| 84 : _file = new File(filePath) { |
| 85 // clear file |
| 86 _file.writeAsStringSync(''); |
| 87 } |
| 88 |
| 89 printSrc(src) => _file.writeAsStringSync('$src\n', mode: FileMode.APPEND); |
| 90 } |
| OLD | NEW |