| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library dev_compiler.src.codegen.js_printer; | 5 library dev_compiler.src.codegen.js_printer; |
| 6 | 6 |
| 7 import 'dart:io' show Directory, File; | 7 import 'dart:io' show Directory, File, Platform, Process; |
| 8 import 'package:analyzer/src/generated/ast.dart'; | 8 import 'package:analyzer/src/generated/ast.dart'; |
| 9 import 'package:path/path.dart' as path; | 9 import 'package:path/path.dart' as path; |
| 10 import 'package:source_maps/source_maps.dart' as srcmaps show Printer; | 10 import 'package:source_maps/source_maps.dart' as srcmaps show Printer; |
| 11 import 'package:source_maps/source_maps.dart' show SourceMapSpan; | 11 import 'package:source_maps/source_maps.dart' show SourceMapSpan; |
| 12 import 'package:source_span/source_span.dart' show SourceLocation; | 12 import 'package:source_span/source_span.dart' show SourceLocation; |
| 13 | 13 |
| 14 import 'package:dev_compiler/src/js/js_ast.dart' as JS; | 14 import 'package:dev_compiler/src/js/js_ast.dart' as JS; |
| 15 import 'package:dev_compiler/src/utils.dart' | 15 import 'package:dev_compiler/src/utils.dart' |
| 16 show computeHash, locationForOffset; | 16 show computeHash, locationForOffset; |
| 17 | 17 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 41 if (context is SourceMapPrintingContext) { | 41 if (context is SourceMapPrintingContext) { |
| 42 var printer = context.printer; | 42 var printer = context.printer; |
| 43 printer.add('//# sourceMappingURL=$outFilename.map'); | 43 printer.add('//# sourceMappingURL=$outFilename.map'); |
| 44 // Write output file and source map | 44 // Write output file and source map |
| 45 text = printer.text; | 45 text = printer.text; |
| 46 new File('$outputPath.map').writeAsStringSync(printer.map); | 46 new File('$outputPath.map').writeAsStringSync(printer.map); |
| 47 } else { | 47 } else { |
| 48 text = (context as JS.SimpleJavaScriptPrintingContext).getText(); | 48 text = (context as JS.SimpleJavaScriptPrintingContext).getText(); |
| 49 } | 49 } |
| 50 new File(outputPath).writeAsStringSync(text); | 50 new File(outputPath).writeAsStringSync(text); |
| 51 if (jsTree.scriptTag != null) { |
| 52 // Mark executable. |
| 53 // TODO(jmesserly): should only do this if the input file was executable? |
| 54 if (!Platform.isWindows) Process.runSync('chmod', ['+x', outputPath]); |
| 55 } |
| 56 |
| 51 return computeHash(text); | 57 return computeHash(text); |
| 52 } | 58 } |
| 53 | 59 |
| 54 class SourceMapPrintingContext extends JS.JavaScriptPrintingContext { | 60 class SourceMapPrintingContext extends JS.JavaScriptPrintingContext { |
| 55 final srcmaps.Printer printer; | 61 final srcmaps.Printer printer; |
| 56 final String outputDir; | 62 final String outputDir; |
| 57 | 63 |
| 58 CompilationUnit unit; | 64 CompilationUnit unit; |
| 59 Uri uri; | 65 Uri uri; |
| 60 | 66 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 | 109 |
| 104 // TODO(jmesserly): in many cases marking the end will be unnecessary. | 110 // TODO(jmesserly): in many cases marking the end will be unnecessary. |
| 105 printer.mark(_location(node.end)); | 111 printer.mark(_location(node.end)); |
| 106 } | 112 } |
| 107 | 113 |
| 108 String _getIdentifier(AstNode node) { | 114 String _getIdentifier(AstNode node) { |
| 109 if (node is SimpleIdentifier) return node.name; | 115 if (node is SimpleIdentifier) return node.name; |
| 110 return null; | 116 return null; |
| 111 } | 117 } |
| 112 } | 118 } |
| OLD | NEW |