| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 yaml.scanner; | 5 library yaml.scanner; |
| 6 | 6 |
| 7 import 'package:collection/collection.dart'; | 7 import 'package:collection/collection.dart'; |
| 8 import 'package:string_scanner/string_scanner.dart'; | 8 import 'package:string_scanner/string_scanner.dart'; |
| 9 import 'package:source_span/source_span.dart'; | 9 import 'package:source_span/source_span.dart'; |
| 10 | 10 |
| (...skipping 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 // needed. | 1149 // needed. |
| 1150 var pair = _scanBlockScalarBreaks(indent); | 1150 var pair = _scanBlockScalarBreaks(indent); |
| 1151 indent = pair.first; | 1151 indent = pair.first; |
| 1152 var trailingBreaks = pair.last; | 1152 var trailingBreaks = pair.last; |
| 1153 | 1153 |
| 1154 // Scan the block scalar contents. | 1154 // Scan the block scalar contents. |
| 1155 var buffer = new StringBuffer(); | 1155 var buffer = new StringBuffer(); |
| 1156 var leadingBreak = ''; | 1156 var leadingBreak = ''; |
| 1157 var leadingBlank = false; | 1157 var leadingBlank = false; |
| 1158 var trailingBlank = false; | 1158 var trailingBlank = false; |
| 1159 var end = _scanner.position; | 1159 var end = _scanner.state; |
| 1160 while (_scanner.column == indent && !_scanner.isDone) { | 1160 while (_scanner.column == indent && !_scanner.isDone) { |
| 1161 // Check for a document indicator. libyaml doesn't do this, but the spec | 1161 // Check for a document indicator. libyaml doesn't do this, but the spec |
| 1162 // mandates it. See example 9.5: | 1162 // mandates it. See example 9.5: |
| 1163 // http://yaml.org/spec/1.2/spec.html#id2801606. | 1163 // http://yaml.org/spec/1.2/spec.html#id2801606. |
| 1164 if (_isDocumentIndicator) break; | 1164 if (_isDocumentIndicator) break; |
| 1165 | 1165 |
| 1166 // We are at the beginning of a non-empty line. | 1166 // We are at the beginning of a non-empty line. |
| 1167 | 1167 |
| 1168 // Is there trailing whitespace? | 1168 // Is there trailing whitespace? |
| 1169 trailingBlank = _isBlank; | 1169 trailingBlank = _isBlank; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1182 buffer.write(trailingBreaks); | 1182 buffer.write(trailingBreaks); |
| 1183 | 1183 |
| 1184 // Is there leading whitespace? | 1184 // Is there leading whitespace? |
| 1185 leadingBlank = _isBlank; | 1185 leadingBlank = _isBlank; |
| 1186 | 1186 |
| 1187 var startPosition = _scanner.position; | 1187 var startPosition = _scanner.position; |
| 1188 while (!_isBreakOrEnd) { | 1188 while (!_isBreakOrEnd) { |
| 1189 _scanner.readChar(); | 1189 _scanner.readChar(); |
| 1190 } | 1190 } |
| 1191 buffer.write(_scanner.substring(startPosition)); | 1191 buffer.write(_scanner.substring(startPosition)); |
| 1192 end = _scanner.position; | 1192 end = _scanner.state; |
| 1193 | 1193 |
| 1194 // libyaml always reads a line here, but this breaks on block scalars at | 1194 // libyaml always reads a line here, but this breaks on block scalars at |
| 1195 // the end of the document that end without newlines. See example 8.1: | 1195 // the end of the document that end without newlines. See example 8.1: |
| 1196 // http://yaml.org/spec/1.2/spec.html#id2793888. | 1196 // http://yaml.org/spec/1.2/spec.html#id2793888. |
| 1197 if (!_scanner.isDone) leadingBreak = _readLine(); | 1197 if (!_scanner.isDone) leadingBreak = _readLine(); |
| 1198 | 1198 |
| 1199 // Eat the following indentation and spaces. | 1199 // Eat the following indentation and spaces. |
| 1200 var pair = _scanBlockScalarBreaks(indent); | 1200 var pair = _scanBlockScalarBreaks(indent); |
| 1201 indent = pair.first; | 1201 indent = pair.first; |
| 1202 trailingBreaks = pair.last; | 1202 trailingBreaks = pair.last; |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1658 | 1658 |
| 1659 /// All trailing whitespace is preserved. | 1659 /// All trailing whitespace is preserved. |
| 1660 static const KEEP = const _Chomping("KEEP"); | 1660 static const KEEP = const _Chomping("KEEP"); |
| 1661 | 1661 |
| 1662 final String name; | 1662 final String name; |
| 1663 | 1663 |
| 1664 const _Chomping(this.name); | 1664 const _Chomping(this.name); |
| 1665 | 1665 |
| 1666 String toString() => name; | 1666 String toString() => name; |
| 1667 } | 1667 } |
| OLD | NEW |