Skip to content

Commit

Permalink
Upgrade to latest petitparser 2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
renggli committed Aug 1, 2018
1 parent 4f435f5 commit f534595
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 45 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
- stage: analyze
script: dartfmt --dry-run --set-exit-if-changed .
- stage: build
script: pub run build_runner build test
script: pub run build_runner build
- stage: test
script: pub run build_runner test -- --platform vm
- stage: test
Expand Down
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# Changelog

## 3.2.0

* Migrated to PetitParser 2.0

## 3.1.0

* Drop Dart 1.0 compatibility.
* Drop Dart 1.0 compatibility
* Cleanup, optimization and improved documentation
* Add experimental support for SAX parsing

Expand Down
7 changes: 4 additions & 3 deletions lib/xml/grammar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,12 @@ abstract class XmlGrammarDefinition<TNode, TName>
super.processing().map((each) => createProcessing(each[1], each[2]));

@override
Parser qualified() => super.qualified().map(createQualified);
Parser qualified() => super.qualified().cast<String>().map(createQualified);

@override
Parser characterData() => super.characterData().map(createText);
Parser characterData() =>
super.characterData().cast<String>().map(createText);

@override
Parser spaceText() => super.spaceText().map(createText);
Parser spaceText() => super.spaceText().cast<String>().map(createText);
}
20 changes: 13 additions & 7 deletions lib/xml/utils/entities.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,29 @@ import 'package:petitparser/petitparser.dart';
import 'package:xml/xml/utils/attribute_type.dart';

// Hexadecimal character reference.
final _entityHex = pattern('xX')
final Parser<String> _entityHex = pattern('xX')
.seq(pattern('A-Fa-f0-9').plus().flatten().map((value) {
return String.fromCharCode(int.parse(value, radix: 16));
}))
.pick(1);

// Decimal character reference.
final _entityDigit = char('#')
final Parser<String> _entityDigit = char('#')
.seq(_entityHex.or(digit().plus().flatten().map((value) {
return String.fromCharCode(int.parse(value));
})))
.pick(1);

// Named character reference.
final _entity = char('&')
final Parser<String> _entity = char('&')
.seq(_entityDigit.or(word().plus().flatten().map((value) {
return entityToChar[value];
})))
.seq(char(';'))
.pick(1);

/// Optimized parser to read character data.
class XmlCharacterDataParser extends Parser {
class XmlCharacterDataParser extends Parser<String> {
final String _stopper;
final int _stopperCode;
final int _minLength;
Expand All @@ -37,8 +37,8 @@ class XmlCharacterDataParser extends Parser {
_minLength = minLength;

@override
Result parseOn(Context context) {
var input = context.buffer as String;
Result<String> parseOn(Context context) {
var input = context.buffer;
var length = input.length;
var output = StringBuffer();
var position = context.position;
Expand Down Expand Up @@ -75,7 +75,13 @@ class XmlCharacterDataParser extends Parser {
List<Parser> get children => [_entity];

@override
Parser copy() => XmlCharacterDataParser(_stopper, _minLength);
XmlCharacterDataParser copy() => XmlCharacterDataParser(_stopper, _minLength);

@override
bool hasEqualProperties(XmlCharacterDataParser other) =>
super.hasEqualProperties(other) &&
_stopper == other._stopper &&
_minLength == other._minLength;
}

/// Mapping from entity name to character.
Expand Down
7 changes: 3 additions & 4 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
name: xml
version: 3.1.0
version: 3.2.0

author: Lukas Renggli <renggli@gmail.com>
description: A lightweight library for parsing, traversing, querying,
transforming and building XML documents.
description: A lightweight library for parsing, traversing, querying, transforming and building XML documents.
homepage: https://github.com/renggli/dart-xml

environment:
sdk: '>=2.0.0-dev.69.0 <3.0.0'
dependencies:
petitparser: ^1.6.0
petitparser: ^2.0.0
collection: ^1.14.0
dev_dependencies:
build_runner: ^0.9.0
Expand Down
29 changes: 0 additions & 29 deletions test/all_tests.dart

This file was deleted.

0 comments on commit f534595

Please sign in to comment.