Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Side by Side Diff: lib/src/transform/common.dart

Issue 22825012: Introduce transformers for: (Closed) Base URL: git@github.com:dart-lang/web-ui.git@master
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
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.
4
5 /** Common methods used by transfomers. */
6 library polymer.src.transform.common;
7
8 import 'dart:async';
9
10 import 'package:path/path.dart' as path;
11 import 'package:barback/barback.dart';
12 import 'package:html5lib/dom.dart' show Document;
13 import 'package:html5lib/parser.dart' show HtmlParser;
14 import 'package:source_maps/span.dart' show Span;
15
16
17 Future<String> getPrimaryContent(Transform transform) =>
18 transform.primaryInput.then((asset) => asset.readAsString());
19
20 Future<String> getContent(Transform transform, AssetId id) =>
21 transform.getInput(id).then((asset) => asset.readAsString());
22
23 /**
24 * Parses an HTML file [contents] and returns a DOM-like tree. Adds emitted
25 * error/warning to [logger].
26 */
27 Document parseHtml(String contents, String sourcePath, TransformLogger logger) {
28 var parser = new HtmlParser(contents, generateSpans: true,
Jennifer Messerly 2013/08/19 22:57:26 One recurring issue in DWC was the inability to su
Jennifer Messerly 2013/08/20 17:50:56 it sounds like Bob is saying barback has no config
Siggi Cherem (dart-lang) 2013/08/21 20:35:42 Done, added the utf8 argument as a default encodin
29 sourceUrl: sourcePath);
30 var document = parser.parse();
31
32 // Note: errors aren't fatal in HTML (unless strict mode is on).
33 // So just print them as warnings.
34 for (var e in parser.errors) {
Jennifer Messerly 2013/08/19 22:57:26 suggestion: filter out the following error: if (i
Siggi Cherem (dart-lang) 2013/08/21 20:35:42 Done.
35 logger.warning(e.message, e.span);
36 }
37 return document;
38 }
39
40 /** Create an [AssetId] for a [url] seen in the [source] asset. */
41 AssetId resolve(AssetId source, String url, TransformLogger logger, Span span) {
42 if (url == null || url == '') return null;
Jennifer Messerly 2013/08/19 22:57:26 generally, it's nice if only one of these is allow
Siggi Cherem (dart-lang) 2013/08/21 20:35:42 Not sure I follow - in this case this is more chec
43 var uri = Uri.parse(url);
44 if (uri.host != '' || uri.scheme != '' || path.isAbsolute(url)) {
45 logger.error('absolute paths not allowed here: "$url"', span);
Jennifer Messerly 2013/08/19 22:57:26 what is "here" :)
Siggi Cherem (dart-lang) 2013/08/21 20:35:42 "here" is now gone :)
46 return null;
47 }
48
49 var package;
50 var targetPath;
51 var segments = path.split(url);
52 if (segments[0] == 'packages') {
53 if (segments.length < 3) {
54 logger.error("incomplete packages/ path. It should have at least 3 "
55 "segments packages/name/path-from-name's-lib-dir", span);
56 return null;
57 }
58 package = segments[1];
59 targetPath = path.join('lib', path.joinAll(segments.sublist(2)));
60 } else if (segments[0] == 'assets') {
61 if (segments.length < 3) {
62 logger.error("incomplete assets/ path. It should have at least 3 "
63 "segments assets/name/path-from-name's-asset-dir", span);
64 }
65 package = segments[1];
66 targetPath = path.join('asset', path.joinAll(segments.sublist(2)));
67 } else {
68 package = source.package;
69 targetPath = path.normalize(path.join(path.dirname(source.path), url));
70 }
Bob Nystrom 2013/08/19 22:28:59 Pub serve has identical parsing code for this. We
Siggi Cherem (dart-lang) 2013/08/21 20:35:42 Done.
71 return new AssetId(package, targetPath);
72 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698