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

Side by Side Diff: utils/dartdoc/classify.dart

Issue 8725007: Lots of stuff hooking up markdown to dartdoc. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Respond to awesome reviews. Created 9 years 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 | Annotate | Revision Log
« no previous file with comments | « utils/dartdoc/README.txt ('k') | utils/dartdoc/dartdoc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 /** 5 /**
6 * Kinds of tokens that we care to highlight differently. The values of the 6 * Kinds of tokens that we care to highlight differently. The values of the
7 * fields here will be used as CSS class names for the generated spans. 7 * fields here will be used as CSS class names for the generated spans.
8 */ 8 */
9 class Classification { 9 class Classification {
10 static final NONE = null; 10 static final NONE = null;
(...skipping 30 matching lines...) Expand all
41 case TokenKind.STRING: 41 case TokenKind.STRING:
42 case TokenKind.STRING_PART: 42 case TokenKind.STRING_PART:
43 case TokenKind.INCOMPLETE_STRING: 43 case TokenKind.INCOMPLETE_STRING:
44 case TokenKind.INCOMPLETE_MULTILINE_STRING_DQ: 44 case TokenKind.INCOMPLETE_MULTILINE_STRING_DQ:
45 case TokenKind.INCOMPLETE_MULTILINE_STRING_SQ: 45 case TokenKind.INCOMPLETE_MULTILINE_STRING_SQ:
46 inString = true; 46 inString = true;
47 break; 47 break;
48 } 48 }
49 49
50 final kind = classify(token); 50 final kind = classify(token);
51 final text = htmlEscape(token.text); 51 final text = md.escapeHtml(token.text);
52 if (kind != null) { 52 if (kind != null) {
53 // Add a secondary class to tokens appearing within a string so that 53 // Add a secondary class to tokens appearing within a string so that
54 // we can highlight tokens in an interpolation specially. 54 // we can highlight tokens in an interpolation specially.
55 var stringClass = inString ? Classification.STRING_INTERPOLATION : ''; 55 var stringClass = inString ? Classification.STRING_INTERPOLATION : '';
56 html.add('<span class="$kind $stringClass">$text</span>'); 56 html.add('<span class="$kind $stringClass">$text</span>');
57 } else { 57 } else {
58 html.add('<span>$text</span>'); 58 html.add('<span>$text</span>');
59 } 59 }
60 60
61 // Track whether or not we're in a string. 61 // Track whether or not we're in a string.
62 if (token.kind == TokenKind.STRING) { 62 if (token.kind == TokenKind.STRING) {
63 inString = false; 63 inString = false;
64 } 64 }
65 } 65 }
66 return html.toString(); 66 return html.toString();
67 } 67 }
68 68
69 // TODO(rnystrom): should exist in standard lib somewhere
70 String htmlEscape(String text) {
71 return text.replaceAll('&', '&amp;').replaceAll(
72 '>', '&gt;').replaceAll('<', '&lt;');
73 }
74
75 bool _looksLikeType(String name) { 69 bool _looksLikeType(String name) {
76 // If the name looks like an UppercaseName, assume it's a type. 70 // If the name looks like an UppercaseName, assume it's a type.
77 return _looksLikePublicType(name) || _looksLikePrivateType(name); 71 return _looksLikePublicType(name) || _looksLikePrivateType(name);
78 } 72 }
79 73
80 bool _looksLikePublicType(String name) { 74 bool _looksLikePublicType(String name) {
81 // If the name looks like an UppercaseName, assume it's a type. 75 // If the name looks like an UppercaseName, assume it's a type.
82 return name.length >= 2 && isUpper(name[0]) && isLower(name[1]); 76 return name.length >= 2 && isUpper(name[0]) && isLower(name[1]);
83 } 77 }
84 78
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 return Classification.KEYWORD; 235 return Classification.KEYWORD;
242 236
243 case TokenKind.WHITESPACE: 237 case TokenKind.WHITESPACE:
244 case TokenKind.END_OF_FILE: 238 case TokenKind.END_OF_FILE:
245 return Classification.NONE; 239 return Classification.NONE;
246 240
247 default: 241 default:
248 return Classification.NONE; 242 return Classification.NONE;
249 } 243 }
250 } 244 }
OLDNEW
« no previous file with comments | « utils/dartdoc/README.txt ('k') | utils/dartdoc/dartdoc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698