| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 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 | 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 part of dart.convert; | 5 part of dart.convert; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * A `String` converter that converts characters to HTML entities. | 8 * A `String` converter that converts characters to HTML entities. |
| 9 * | 9 * |
| 10 * This is intended to sanitice text before inserting the text into an HTML | 10 * This is intended to sanitice text before inserting the text into an HTML |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 * | 31 * |
| 32 * Allows specifying a mode for HTML escaping that depend on the context | 32 * Allows specifying a mode for HTML escaping that depend on the context |
| 33 * where the escaped result is going to be used. | 33 * where the escaped result is going to be used. |
| 34 * The relevant contexts are: | 34 * The relevant contexts are: |
| 35 * | 35 * |
| 36 * * as text content of an HTML element. | 36 * * as text content of an HTML element. |
| 37 * * as value of a (single- or double-) quoted attribute value. | 37 * * as value of a (single- or double-) quoted attribute value. |
| 38 * | 38 * |
| 39 * All modes require escaping of `&` (ampersand) characters, and may | 39 * All modes require escaping of `&` (ampersand) characters, and may |
| 40 * enable escaping of more characters. | 40 * enable escaping of more characters. |
| 41 * |
| 42 * Custom escape modes can be created using the [HtmlEscapeMode.HtmlEscapeMode] |
| 43 * constructor. |
| 41 */ | 44 */ |
| 42 class HtmlEscapeMode { | 45 class HtmlEscapeMode { |
| 43 final String _name; | 46 final String _name; |
| 44 /** Whether to escape '<' and '>'. */ | 47 /** Whether to escape '<' and '>'. */ |
| 45 final bool escapeLtGt; | 48 final bool escapeLtGt; |
| 46 /** Whether to escape '"' (quote). */ | 49 /** Whether to escape '"' (quote). */ |
| 47 final bool escapeQuot; | 50 final bool escapeQuot; |
| 48 /** Whether to escape "'" (apostrophe). */ | 51 /** Whether to escape "'" (apostrophe). */ |
| 49 final bool escapeApos; | 52 final bool escapeApos; |
| 50 /** | 53 /** |
| (...skipping 16 matching lines...) Expand all Loading... |
| 67 */ | 70 */ |
| 68 static const HtmlEscapeMode UNKNOWN = | 71 static const HtmlEscapeMode UNKNOWN = |
| 69 const HtmlEscapeMode._('unknown', true, true, true, true); | 72 const HtmlEscapeMode._('unknown', true, true, true, true); |
| 70 | 73 |
| 71 /** | 74 /** |
| 72 * Escaping mode for text going into double-quoted HTML attribute values. | 75 * Escaping mode for text going into double-quoted HTML attribute values. |
| 73 * | 76 * |
| 74 * The result should not be used as the content of an unquoted | 77 * The result should not be used as the content of an unquoted |
| 75 * or single-quoted attribute value. | 78 * or single-quoted attribute value. |
| 76 * | 79 * |
| 77 * Escapes only double quotes (`"`) but not single quotes (`'`). | 80 * Escapes double quotes (`"`) but not single quotes (`'`), |
| 81 * and escapes `<` and `>` characters because they are not allowed |
| 82 * in strict XHTML attributes |
| 78 */ | 83 */ |
| 79 static const HtmlEscapeMode ATTRIBUTE = | 84 static const HtmlEscapeMode ATTRIBUTE = |
| 80 const HtmlEscapeMode._('attribute', false, true, false, false); | 85 const HtmlEscapeMode._('attribute', true, true, false, false); |
| 81 | 86 |
| 82 /** | 87 /** |
| 83 * Escaping mode for text going into single-quoted HTML attribute values. | 88 * Escaping mode for text going into single-quoted HTML attribute values. |
| 84 * | 89 * |
| 85 * The result should not be used as the content of an unquoted | 90 * The result should not be used as the content of an unquoted |
| 86 * or double-quoted attribute value. | 91 * or double-quoted attribute value. |
| 87 * | 92 * |
| 88 * Escapes only single quotes (`'`) but not double quotes (`"`). | 93 * Escapes single quotes (`'`) but not double quotes (`"`), |
| 94 * and escapes `<` and `>` characters because they are not allowed |
| 95 * in strict XHTML attributes |
| 89 */ | 96 */ |
| 90 static const HtmlEscapeMode SQ_ATTRIBUTE = | 97 static const HtmlEscapeMode SQ_ATTRIBUTE = |
| 91 const HtmlEscapeMode._('attribute', false, false, true, false); | 98 const HtmlEscapeMode._('attribute', true, false, true, false); |
| 92 | 99 |
| 93 /** | 100 /** |
| 94 * Escaping mode for text going into HTML element content. | 101 * Escaping mode for text going into HTML element content. |
| 95 * | 102 * |
| 96 * The escaping only works for elements with normal HTML content, | 103 * The escaping only works for elements with normal HTML content, |
| 97 * and not for, for example, script or style element content, | 104 * and not for, for example, script or style element content, |
| 98 * which require escapes matching their particular content syntax. | 105 * which require escapes matching their particular content syntax. |
| 99 * | 106 * |
| 100 * Escapes `<` and `>` characters. | 107 * Escapes `<` and `>` characters. |
| 101 */ | 108 */ |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 if(val == null) { | 222 if(val == null) { |
| 216 _sink.addSlice(chunk, start, end, isLast); | 223 _sink.addSlice(chunk, start, end, isLast); |
| 217 } else { | 224 } else { |
| 218 _sink.add(val); | 225 _sink.add(val); |
| 219 if (isLast) _sink.close(); | 226 if (isLast) _sink.close(); |
| 220 } | 227 } |
| 221 } | 228 } |
| 222 | 229 |
| 223 void close() => _sink.close(); | 230 void close() => _sink.close(); |
| 224 } | 231 } |
| OLD | NEW |