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