OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 import 'package:path/path.dart' as path; | 5 import 'package:path/path.dart' as path; |
6 import 'package:pub_semver/pub_semver.dart'; | 6 import 'package:pub_semver/pub_semver.dart'; |
7 import 'package:source_span/source_span.dart'; | 7 import 'package:source_span/source_span.dart'; |
8 import 'package:yaml/yaml.dart'; | 8 import 'package:yaml/yaml.dart'; |
9 | 9 |
10 import 'barback/transformer_config.dart'; | 10 import 'barback/transformer_config.dart'; |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 if (transformers == null) { | 144 if (transformers == null) { |
145 _transformers = []; | 145 _transformers = []; |
146 return _transformers; | 146 return _transformers; |
147 } | 147 } |
148 | 148 |
149 if (transformers is! List) { | 149 if (transformers is! List) { |
150 _error('"transformers" field must be a list.', | 150 _error('"transformers" field must be a list.', |
151 fields.nodes['transformers'].span); | 151 fields.nodes['transformers'].span); |
152 } | 152 } |
153 | 153 |
154 _transformers = transformers.nodes.map((phase) { | 154 _transformers = (transformers as YamlList).nodes.map((phase) { |
155 var phaseNodes = phase is YamlList ? phase.nodes : [phase]; | 155 var phaseNodes = phase is YamlList ? phase.nodes : [phase]; |
156 return phaseNodes.map((transformerNode) { | 156 return phaseNodes.map((transformerNode) { |
157 var transformer = transformerNode.value; | 157 var transformer = transformerNode.value; |
158 if (transformer is! String && transformer is! Map) { | 158 if (transformer is! String && transformer is! Map) { |
159 _error('A transformer must be a string or map.', | 159 _error('A transformer must be a string or map.', |
160 transformerNode.span); | 160 transformerNode.span); |
161 } | 161 } |
162 | 162 |
163 var libraryNode; | 163 var libraryNode; |
164 var configurationNode; | 164 var configurationNode; |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 '"$expectedName".', this.fields.nodes["name"].span); | 421 '"$expectedName".', this.fields.nodes["name"].span); |
422 } | 422 } |
423 | 423 |
424 /// Parses the pubspec stored at [filePath] whose text is [contents]. | 424 /// Parses the pubspec stored at [filePath] whose text is [contents]. |
425 /// | 425 /// |
426 /// If the pubspec doesn't define a version for itself, it defaults to | 426 /// If the pubspec doesn't define a version for itself, it defaults to |
427 /// [Version.none]. | 427 /// [Version.none]. |
428 factory Pubspec.parse(String contents, SourceRegistry sources, | 428 factory Pubspec.parse(String contents, SourceRegistry sources, |
429 {String expectedName, Uri location}) { | 429 {String expectedName, Uri location}) { |
430 var pubspecNode = loadYamlNode(contents, sourceUrl: location); | 430 var pubspecNode = loadYamlNode(contents, sourceUrl: location); |
| 431 Map pubspecMap; |
431 if (pubspecNode is YamlScalar && pubspecNode.value == null) { | 432 if (pubspecNode is YamlScalar && pubspecNode.value == null) { |
432 pubspecNode = new YamlMap(sourceUrl: location); | 433 pubspecMap = new YamlMap(sourceUrl: location); |
433 } else if (pubspecNode is! YamlMap) { | 434 } else if (pubspecNode is YamlMap) { |
| 435 pubspecMap = pubspecNode; |
| 436 } else { |
434 throw new PubspecException( | 437 throw new PubspecException( |
435 'The pubspec must be a YAML mapping.', pubspecNode.span); | 438 'The pubspec must be a YAML mapping.', pubspecNode.span); |
436 } | 439 } |
437 | 440 |
438 return new Pubspec.fromMap(pubspecNode, sources, | 441 return new Pubspec.fromMap(pubspecMap, sources, |
439 expectedName: expectedName, location: location); | 442 expectedName: expectedName, location: location); |
440 } | 443 } |
441 | 444 |
442 /// Returns a list of most errors in this pubspec. | 445 /// Returns a list of most errors in this pubspec. |
443 /// | 446 /// |
444 /// This will return at most one error for each field. | 447 /// This will return at most one error for each field. |
445 List<PubspecException> get allErrors { | 448 List<PubspecException> get allErrors { |
446 var errors = <PubspecException>[]; | 449 var errors = <PubspecException>[]; |
447 _getError(fn()) { | 450 _getError(fn()) { |
448 try { | 451 try { |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 implements ApplicationException { | 618 implements ApplicationException { |
616 PubspecException(String message, SourceSpan span) | 619 PubspecException(String message, SourceSpan span) |
617 : super(message, span); | 620 : super(message, span); |
618 } | 621 } |
619 | 622 |
620 /// Returns whether [uri] is a file URI. | 623 /// Returns whether [uri] is a file URI. |
621 /// | 624 /// |
622 /// This is slightly more complicated than just checking if the scheme is | 625 /// This is slightly more complicated than just checking if the scheme is |
623 /// 'file', since relative URIs also refer to the filesystem on the VM. | 626 /// 'file', since relative URIs also refer to the filesystem on the VM. |
624 bool _isFileUri(Uri uri) => uri.scheme == 'file' || uri.scheme == ''; | 627 bool _isFileUri(Uri uri) => uri.scheme == 'file' || uri.scheme == ''; |
OLD | NEW |