Skip to content

Commit 913f815

Browse files
committedJan 2, 2025··
refine interface
1 parent 735fb72 commit 913f815

38 files changed

+256
-257
lines changed
 

‎lib/kdl.dart

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ library;
33

44
export 'src/document.dart';
55
export 'src/exception.dart';
6+
export 'src/types.dart';

‎lib/src/document.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ class KdlDocument with IterableMixin<KdlNode> {
2525
/// By default, attempts to parse v2 syntax, and falls back to v1 if that
2626
/// fails. You can override this behaviour by explicitely passing `version`.
2727
///
28-
/// By default, parses well-known types as specified by [KdlTypes.mapping].
28+
/// By default, parses well-known types as specified by [defaultValueTypes].
2929
/// You can turn this off by passing `parseTypes: false`. You can also add
30-
/// your own custom types by passing `typeParsers`, which should be a map of
31-
/// type name to a function that converts a KdlValue or KdlNode.
30+
/// your own custom types by passing `valueTypes` and `nodeTypes`.
3231
static KdlDocument parse(String string,
3332
{int? version,
3433
Map<String, KdlTypeParser<KdlValue>> valueTypes = const {},
@@ -121,7 +120,8 @@ class KdlDocument with IterableMixin<KdlNode> {
121120
}
122121
}
123122

124-
/// Function signature for converting KdlValue and KdlNode into custom types
123+
/// Function signature for converting `KdlValue` and `KdlNode` into custom types.
124+
/// Return `null` to skip parsing and keep the original value.
125125
typedef KdlTypeParser<T> = T? Function(T, String type);
126126

127127
/// A KDL node. Nodes can have positional arguments, key=value properties, and

‎lib/src/parser.dart

+28-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,33 @@ import 'package:kdl/src/exception.dart';
55

66
/// KDL 2.0.0 Parser
77
class KdlParser {
8+
/// Default KDLValue types for well-known types
9+
static const Map<String, KdlTypeParser<KdlValue>> defaultValueTypes = {
10+
'date-time': KdlDateTime.convert,
11+
'time': KdlTime.convert,
12+
'date': KdlDate.convert,
13+
'duration': KdlDuration.convert,
14+
'decimal': KdlDecimal.convert,
15+
'currency': KdlCurrency.convert,
16+
'country-2': KdlCountry2.convert,
17+
'country-3': KdlCountry3.convert,
18+
'country-subdivision': KdlCountrySubdivision.convert,
19+
'email': KdlEmail.convert,
20+
'idn-email': KdlIdnEmail.convert,
21+
'hostname': KdlHostname.convert,
22+
'idn-hostname': KdlIdnHostname.convert,
23+
'ipv4': KdlIPV4.convert,
24+
'ipv6': KdlIPV6.convert,
25+
'url': KdlUrl.convert,
26+
'url-reference': KdlUrlReference.convert,
27+
'irl': KdlIRL.convert,
28+
'irl-reference': KdlIrlReference.convert,
29+
'url-template': KdlUrlTemplate.convert,
30+
'uuid': KdlUuid.convert,
31+
'regex': KdlRegex.convert,
32+
'base64': KdlBase64.convert,
33+
};
34+
835
late KdlTokenizer _tokenizer;
936
Map<String, KdlTypeParser<KdlValue>> _valueTypes = {};
1037
Map<String, KdlTypeParser<KdlNode>> _nodeTypes = {};
@@ -22,7 +49,7 @@ class KdlParser {
2249
_checkVersion();
2350

2451
if (parseTypes) {
25-
_valueTypes = {...defaultValueTypeParsers, ...valueTypes};
52+
_valueTypes = {...defaultValueTypes, ...valueTypes};
2653
_nodeTypes = nodeTypes;
2754
}
2855

‎lib/src/types.dart

+14-43
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,14 @@
1-
import "package:kdl/src/document.dart";
2-
3-
import "./types/date_time.dart";
4-
import "./types/duration.dart";
5-
import "./types/decimal.dart";
6-
import "./types/currency.dart";
7-
import "./types/country.dart";
8-
import "./types/email.dart";
9-
import "./types/hostname.dart";
10-
import "./types/ip.dart";
11-
import "./types/url.dart";
12-
import "./types/irl.dart";
13-
import "./types/url_template.dart";
14-
import "./types/uuid.dart";
15-
import "./types/regex.dart";
16-
import "./types/base64.dart";
17-
18-
/// Default KDLValue type parsers for well-known types
19-
const Map<String, KdlTypeParser<KdlValue>> defaultValueTypeParsers = {
20-
'date-time': KdlDateTime.call,
21-
'time': KdlTime.call,
22-
'date': KdlDate.call,
23-
'duration': KdlDuration.call,
24-
'decimal': KdlDecimal.call,
25-
'currency': KdlCurrency.call,
26-
'country-2': KdlCountry2.call,
27-
'country-3': KdlCountry3.call,
28-
'country-subdivision': KdlCountrySubdivision.call,
29-
'email': KdlEmail.call,
30-
'idn-email': KdlIDNEmail.call,
31-
'hostname': KdlHostname.call,
32-
'idn-hostname': KdlIDNHostname.call,
33-
'ipv4': KdlIPV4.call,
34-
'ipv6': KdlIPV6.call,
35-
'url': KdlURL.call,
36-
'url-reference': KdlURLReference.call,
37-
'irl': KdlIRL.call,
38-
'irl-reference': KdlIRLReference.call,
39-
'url-template': KdlURLTemplate.call,
40-
'uuid': KdlUUID.call,
41-
'regex': KdlRegex.call,
42-
'base64': KdlBase64.call,
43-
};
1+
export "./types/date_time.dart";
2+
export "./types/duration.dart";
3+
export "./types/decimal.dart";
4+
export "./types/currency.dart";
5+
export "./types/country.dart";
6+
export "./types/email.dart";
7+
export "./types/hostname.dart";
8+
export "./types/ip.dart";
9+
export "./types/url.dart";
10+
export "./types/irl.dart";
11+
export "./types/url_template.dart";
12+
export "./types/uuid.dart";
13+
export "./types/regex.dart";
14+
export "./types/base64.dart";

‎lib/src/types/base64.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class KdlBase64 extends KdlValue<Uint8List> {
99
KdlBase64(super.value, [super.type]);
1010

1111
/// Convert a `KdlString` into a `KdlBase64`
12-
static KdlBase64? call(KdlValue value, [String type = 'base64']) {
12+
static KdlBase64? convert(KdlValue value, [String type = 'base64']) {
1313
if (value is! KdlString) return null;
1414

1515
return KdlBase64(base64.decode(value.value), type);

‎lib/src/types/country.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class KdlCountry2 extends KdlCountry {
1414
KdlCountry2(super.value, [super.type]);
1515

1616
/// Convert a `KdlString` into `KdlCountry2`
17-
static KdlCountry2? call(KdlValue value, [String type = 'country2']) {
17+
static KdlCountry2? convert(KdlValue value, [String type = 'country2']) {
1818
if (value is! KdlString) return null;
1919

2020
var country = Country.countries2[value.value];
@@ -30,7 +30,7 @@ class KdlCountry3 extends KdlCountry {
3030
KdlCountry3(super.value, [super.type]);
3131

3232
/// Convert a `KdlString` into `KdlCountry3`
33-
static KdlCountry3? call(KdlValue value, [String type = 'country3']) {
33+
static KdlCountry3? convert(KdlValue value, [String type = 'country3']) {
3434
if (value is! KdlString) return null;
3535

3636
var country = Country.countries3[value.value];
@@ -52,7 +52,7 @@ class KdlCountrySubdivision extends KdlValue<String> {
5252
KdlCountrySubdivision(super.value, this.name, this.country, [super.type]);
5353

5454
/// Convert a `KdlString` into a `KdlCountrySubdivision`
55-
static KdlCountrySubdivision? call(KdlValue value,
55+
static KdlCountrySubdivision? convert(KdlValue value,
5656
[String type = 'country-subdivision']) {
5757
if (value is! KdlString) return null;
5858

‎lib/src/types/currency.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class KdlCurrency extends KdlValue<Currency> {
77
KdlCurrency(super.value, [super.type]);
88

99
/// Convert a `KdlString` into a `KdlCurrency`
10-
static KdlCurrency? call(KdlValue value, [String type = 'currency']) {
10+
static KdlCurrency? convert(KdlValue value, [String type = 'currency']) {
1111
if (value is! KdlString) return null;
1212

1313
var currency = Currency.currencies[value.value];

‎lib/src/types/date_time.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class KdlDateTime extends KdlValue<DateTime> {
66
KdlDateTime(super.value, [super.type]);
77

88
/// Convert a `KdlString` into a `KdlDateTime`
9-
static KdlDateTime? call(KdlValue value, [String type = 'date-time']) {
9+
static KdlDateTime? convert(KdlValue value, [String type = 'date-time']) {
1010
if (value is! KdlString) return null;
1111

1212
return KdlDateTime(DateTime.parse(value.value), type);
@@ -19,7 +19,7 @@ class KdlTime extends KdlDateTime {
1919
KdlTime(super.value, [super.type]);
2020

2121
/// Convert a `KdlString` into a `KdlTime`
22-
static KdlTime? call(KdlValue value, [String type = 'time']) {
22+
static KdlTime? convert(KdlValue value, [String type = 'time']) {
2323
if (value is! KdlString) return null;
2424

2525
var time = value.value;
@@ -36,7 +36,7 @@ class KdlDate extends KdlDateTime {
3636
KdlDate(super.value, [super.type]);
3737

3838
/// Convert a `KdlString` into a `KdlDate`
39-
static KdlDate? call(KdlValue value, [String type = 'date']) {
39+
static KdlDate? convert(KdlValue value, [String type = 'date']) {
4040
if (value is! KdlString) return null;
4141

4242
return KdlDate(DateTime.parse(value.value), type);

‎lib/src/types/decimal.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class KdlDecimal extends KdlValue<BigDecimal> {
88
KdlDecimal(super.value, [super.type]);
99

1010
/// Convert a `KdlString` into a `KdlDecimal`
11-
static KdlDecimal? call(KdlValue value, [String type = 'decimal']) {
11+
static KdlDecimal? convert(KdlValue value, [String type = 'decimal']) {
1212
if (value is! KdlString) return null;
1313

1414
return KdlDecimal(BigDecimal.parse(value.value), type);

‎lib/src/types/duration.dart

+8-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import "../document.dart";
22
import "./duration/iso8601_parser.dart";
33

44
/// Represents a ISO8601 duration
5-
class ISODuration {
5+
class Duration {
66
/// Number of years
77
num years;
88

@@ -25,7 +25,7 @@ class ISODuration {
2525
num seconds;
2626

2727
/// Construct a new duration, defaulting to 0 seconds
28-
ISODuration({
28+
Duration({
2929
this.years = 0,
3030
this.months = 0,
3131
this.weeks = 0,
@@ -36,7 +36,7 @@ class ISODuration {
3636
});
3737

3838
/// Construct a new duration from a map of parts
39-
ISODuration.fromParts(Map<String, num> parts)
39+
Duration.fromParts(Map<String, num> parts)
4040
: years = parts['years'] ?? 0,
4141
months = parts['months'] ?? 0,
4242
weeks = parts['weeks'] ?? 0,
@@ -47,7 +47,7 @@ class ISODuration {
4747

4848
@override
4949
bool operator ==(other) =>
50-
other is ISODuration &&
50+
other is Duration &&
5151
other.years == years &&
5252
other.months == months &&
5353
other.weeks == weeks &&
@@ -66,16 +66,16 @@ class ISODuration {
6666
}
6767

6868
/// ISO8601 duration format.
69-
class KdlDuration extends KdlValue<ISODuration> {
69+
class KdlDuration extends KdlValue<Duration> {
7070
/// Construct a new `KdlDuration`
7171
KdlDuration(super.value, [super.type]);
7272

7373
/// Convert a `KdlString` into a `KdlDuration`
74-
static KdlDuration? call(KdlValue value, [String type = 'duration']) {
74+
static KdlDuration? convert(KdlValue value, [String type = 'duration']) {
7575
if (value is! KdlString) return null;
7676

77-
var parts = ISO8601DurationParser(value.value).parse();
77+
var parts = Iso8601DurationParser(value.value).parse();
7878

79-
return KdlDuration(ISODuration.fromParts(parts), type);
79+
return KdlDuration(Duration.fromParts(parts), type);
8080
}
8181
}

‎lib/src/types/duration/iso8601_parser.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ enum _DurationParsingMode {
3535
/// See {ISO 8601}[https://en.wikipedia.org/wiki/ISO_8601#Durations] for more information.
3636
///
3737
/// This parser allows negative parts to be present in pattern.
38-
class ISO8601DurationParser {
38+
class Iso8601DurationParser {
3939
static final _periodOrComma = RegExp('\\.|,');
4040
static const _period = '.';
4141
static const _comma = ',';
@@ -63,7 +63,7 @@ class ISO8601DurationParser {
6363
int _sign;
6464

6565
/// Construct a new parser to parse the given string
66-
ISO8601DurationParser(String string)
66+
Iso8601DurationParser(String string)
6767
: _scanner = StringScanner(string),
6868
_parts = {},
6969
_mode = _DurationParsingMode.start,

‎lib/src/types/email.dart

+6-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class KdlEmail extends KdlValue<String> {
1414
KdlEmail(super.value, this.local, this.domain, [super.type]);
1515

1616
/// Convert a `KdlString` into a `KdlEmail`
17-
static KdlEmail? call(KdlValue value, [String type = 'email']) {
17+
static KdlEmail? convert(KdlValue value, [String type = 'email']) {
1818
if (value is! KdlString) return null;
1919

2020
var parts = _EmailParser(value.value).parse();
@@ -24,25 +24,25 @@ class KdlEmail extends KdlValue<String> {
2424
}
2525

2626
/// RFC6531 internationalized email address.
27-
class KdlIDNEmail extends KdlEmail {
27+
class KdlIdnEmail extends KdlEmail {
2828
/// Unicode value
2929
String unicodeValue;
3030

3131
/// Unicode IDN
3232
String unicodeDomain;
3333

3434
/// Construct a new `KdlIDNEmail`
35-
KdlIDNEmail(super.value, this.unicodeValue, super.local, super.domain,
35+
KdlIdnEmail(super.value, this.unicodeValue, super.local, super.domain,
3636
this.unicodeDomain,
3737
[super.type]);
3838

3939
/// Convert a `KdlString` into a `KdlIDNEmail`
40-
static KdlIDNEmail? call(KdlValue value, [String type = 'idn-email']) {
40+
static KdlIdnEmail? convert(KdlValue value, [String type = 'idn-email']) {
4141
if (value is! KdlString) return null;
4242

4343
var parts = _EmailParser(value.value, idn: true).parse();
4444

45-
return KdlIDNEmail("${parts[0]}@${parts[1]}", "${parts[0]}@${parts[2]}",
45+
return KdlIdnEmail("${parts[0]}@${parts[1]}", "${parts[0]}@${parts[2]}",
4646
parts[0], parts[1], parts[2], type);
4747
}
4848
}
@@ -102,7 +102,7 @@ class _EmailParser {
102102
switch (context) {
103103
case _EmailParserContext.afterAt:
104104
var validator = _idn
105-
? IDNHostnameValidator(token.value)
105+
? IdnHostnameValidator(token.value)
106106
: HostnameValidator(token.value);
107107
if (!validator.isValid()) throw "invalid hostname ${token.value}";
108108

‎lib/src/types/hostname.dart

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class KdlHostname extends KdlValue<String> {
77
KdlHostname(super.value, [super.type]);
88

99
/// Convert a `KdlString` into a `KdlHostname`
10-
static KdlHostname? call(KdlValue value, [String type = 'hostname']) {
10+
static KdlHostname? convert(KdlValue value, [String type = 'hostname']) {
1111
if (value is! KdlString) return null;
1212
var validator = HostnameValidator(value.value);
1313
if (!validator.isValid()) throw "invalid hostname ${value.value}";
@@ -18,20 +18,20 @@ class KdlHostname extends KdlValue<String> {
1818

1919
/// RFC5890 internationalized internet hostname
2020
/// (only `xn--`-prefixed ASCII "punycode" segments, or non-ASCII segments)
21-
class KdlIDNHostname extends KdlHostname {
21+
class KdlIdnHostname extends KdlHostname {
2222
/// Unicode value
2323
String unicodeValue;
2424

2525
/// Construct a new `KdlIDNHostname`
26-
KdlIDNHostname(String value, this.unicodeValue, [String? type])
26+
KdlIdnHostname(String value, this.unicodeValue, [String? type])
2727
: super(value, type);
2828

2929
/// Convert a `KdlString` into a `KdlIDNHostname`
30-
static KdlIDNHostname? call(KdlValue value, [String type = 'idn-hostname']) {
30+
static KdlIdnHostname? convert(KdlValue value, [String type = 'idn-hostname']) {
3131
if (value is! KdlString) return null;
32-
var validator = IDNHostnameValidator(value.value);
32+
var validator = IdnHostnameValidator(value.value);
3333
if (!validator.isValid()) throw "invalid hostname ${value.value}";
3434

35-
return KdlIDNHostname(validator.ascii, validator.unicode, type);
35+
return KdlIdnHostname(validator.ascii, validator.unicode, type);
3636
}
3737
}

‎lib/src/types/hostname/idna_converter.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
///
2424
/// Implementation of IDNA - RFC 3490 standard converter according to <http://www.rfc-base.org/rfc-3490.html>
2525
///
26-
class IDNAConverter {
26+
class IdnaConverter {
2727
static const _invalidInput = 'Invalid input';
2828
static const _overflow = 'Overflow: input needs wider integers to process';
2929
static const _notBasic = 'Illegal input >= 0x80 (not a basic code point)';

‎lib/src/types/hostname/validator.dart

+8-8
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,27 @@ class HostnameValidator {
3232
}
3333

3434
/// Hostname validator for Internationalized Domain Names
35-
class IDNHostnameValidator extends HostnameValidator {
35+
class IdnHostnameValidator extends HostnameValidator {
3636
@override
3737
String unicode;
3838

3939
/// Validate an ASCII IDN Hostname
40-
IDNHostnameValidator.fromAscii(super.string)
41-
: unicode = IDNAConverter.urlDecode(string);
40+
IdnHostnameValidator.fromAscii(super.string)
41+
: unicode = IdnaConverter.urlDecode(string);
4242

4343
/// Validate a Unicode IDN Hostname
44-
IDNHostnameValidator.fromUnicode(String string)
44+
IdnHostnameValidator.fromUnicode(String string)
4545
: unicode = string,
46-
super(IDNAConverter.urlEncode(string));
46+
super(IdnaConverter.urlEncode(string));
4747

4848
/// Constructs the appropriate IDN Hostname Validator depending on if the
4949
/// hostname is in ASCII or Unicode format
50-
factory IDNHostnameValidator(String string) {
50+
factory IdnHostnameValidator(String string) {
5151
var isAscii = string.split('.').any((x) => x.startsWith('xn--'));
5252
if (isAscii) {
53-
return IDNHostnameValidator.fromAscii(string);
53+
return IdnHostnameValidator.fromAscii(string);
5454
} else {
55-
return IDNHostnameValidator.fromUnicode(string);
55+
return IdnHostnameValidator.fromUnicode(string);
5656
}
5757
}
5858
}

‎lib/src/types/ip.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class KdlIPV4 extends KdlIP {
5151
KdlIPV4(super.value, [super.type]);
5252

5353
/// Convert a `KdlString` into a `KdlIPV4`
54-
static KdlIPV4? call(KdlValue value, [String type = 'ipv4']) {
54+
static KdlIPV4? convert(KdlValue value, [String type = 'ipv4']) {
5555
if (value is! KdlString) return null;
5656
var addr = value.value;
5757

@@ -141,7 +141,7 @@ class KdlIPV6 extends KdlIP {
141141
KdlIPV6(super.value, [super.type]);
142142

143143
/// Convert a `KdlString` into a `KdlIPV6`
144-
static KdlIPV6? call(KdlValue value, [String type = 'ipv6']) {
144+
static KdlIPV6? convert(KdlValue value, [String type = 'ipv6']) {
145145
if (value is! KdlString) return null;
146146
var addr = value.value;
147147

‎lib/src/types/irl.dart

+9-9
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class KdlIRL extends KdlValue<Uri> {
2323
this.unicodeSearch, this.unicodeHash,
2424
[super.type]);
2525

26-
KdlIRL._from(IRL value, [String? type])
26+
KdlIRL._from(Irl value, [String? type])
2727
: this(
2828
Uri.parse(value.asciiValue),
2929
value.unicodeValue,
@@ -34,31 +34,31 @@ class KdlIRL extends KdlValue<Uri> {
3434
type);
3535

3636
/// Converts a `KdlString` into a `KdlIRL`
37-
static KdlIRL? call(KdlValue value, [String type = 'irl']) {
37+
static KdlIRL? convert(KdlValue value, [String type = 'irl']) {
3838
if (value is! KdlString) return null;
3939

40-
var irl = IRLParser(value.value, isReference: false).parse();
40+
var irl = IrlParser(value.value, isReference: false).parse();
4141

4242
return KdlIRL._from(irl, type);
4343
}
4444
}
4545

4646
/// RFC3987 Internationalized Resource Identifier Reference.
47-
class KdlIRLReference extends KdlIRL {
47+
class KdlIrlReference extends KdlIRL {
4848
/// Constructs a new `KdlIRLReference`
49-
KdlIRLReference(super.value, super.unicodeValue, super.unicodeDomain,
49+
KdlIrlReference(super.value, super.unicodeValue, super.unicodeDomain,
5050
super.unicodePath, super.unicodeSearch, super.unicodeHash,
5151
[super.type]);
5252

53-
KdlIRLReference._from(super.value, [super.type]) : super._from();
53+
KdlIrlReference._from(super.value, [super.type]) : super._from();
5454

5555
/// Converts a `KdlString` into a `KdlIRLReference`
56-
static KdlIRLReference? call(KdlValue value,
56+
static KdlIrlReference? convert(KdlValue value,
5757
[String type = 'irl-reference']) {
5858
if (value is! KdlString) return null;
5959

60-
var irl = IRLParser(value.value).parse();
60+
var irl = IrlParser(value.value).parse();
6161

62-
return KdlIRLReference._from(irl, type);
62+
return KdlIrlReference._from(irl, type);
6363
}
6464
}

‎lib/src/types/irl/parser.dart

+7-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import "dart:convert";
33
import "../hostname/validator.dart";
44

55
/// RFC3987 Internationalized Resource Identifier.
6-
class IRL {
6+
class Irl {
77
/// ASCII punycode value
88
String asciiValue;
99

@@ -23,15 +23,15 @@ class IRL {
2323
String? unicodeHash;
2424

2525
/// Construct a new IRL
26-
IRL(this.asciiValue, this.unicodeValue,
26+
Irl(this.asciiValue, this.unicodeValue,
2727
[this.unicodeDomain,
2828
this.unicodePath,
2929
this.unicodeSearch,
3030
this.unicodeHash]);
3131
}
3232

3333
/// Parses a string into an IRL
34-
class IRLParser {
34+
class IrlParser {
3535
static final _rgx = RegExp(
3636
r"^(?:(?:([a-z][a-z0-9+.\-]+)):\/\/([^@]+@)?([^\/?#]+)?)?(\/?[^?#]*)?(?:\?([^#]*))?(?:#(.*))?$",
3737
caseSensitive: false);
@@ -132,10 +132,10 @@ class IRLParser {
132132
/// Construct a new parser to parse the given string
133133
/// pass `isReference: false` to validate this as a full IRL
134134
/// (i.e. has a scheme)
135-
IRLParser(this._string, {isReference = true}) : _isReference = isReference;
135+
IrlParser(this._string, {isReference = true}) : _isReference = isReference;
136136

137137
/// Parse the string into an IRL
138-
IRL parse() {
138+
Irl parse() {
139139
List<String?> parts = _parseUrl();
140140
var scheme = parts[0];
141141
if (!_isReference && (scheme == null || scheme.isEmpty)) {
@@ -169,7 +169,7 @@ class IRLParser {
169169
}
170170

171171
if (domain != null) {
172-
var validator = IDNHostnameValidator(domain);
172+
var validator = IdnHostnameValidator(domain);
173173
domain = validator.ascii;
174174
unicodeDomain = validator.unicode;
175175
} else {
@@ -180,7 +180,7 @@ class IRLParser {
180180
scheme, auth, unicodeDomain, unicodePath, unicodeSearch, unicodeHash);
181181
var asciiValue = _buildUriString(scheme, auth, domain, path, search, hash);
182182

183-
return IRL(asciiValue, unicodeValue, unicodeDomain, unicodePath,
183+
return Irl(asciiValue, unicodeValue, unicodeDomain, unicodePath,
184184
unicodeSearch, unicodeHash);
185185
}
186186

‎lib/src/types/regex.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class KdlRegex extends KdlValue<RegExp> {
66
KdlRegex(super.value, [super.type]);
77

88
/// Convert a `KdlString` into a `KdlRegex`
9-
static KdlRegex? call(KdlValue value, [String type = 'regex']) {
9+
static KdlRegex? convert(KdlValue value, [String type = 'regex']) {
1010
if (value is! KdlString) return null;
1111

1212
return KdlRegex(RegExp(value.value), type);

‎lib/src/types/url.dart

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
import "../document.dart";
22

33
/// RFC3986 URI Reference.
4-
class KdlURLReference extends KdlValue<Uri> {
4+
class KdlUrlReference extends KdlValue<Uri> {
55
/// Constructs a new `KdlURLReference`
6-
KdlURLReference(super.value, [super.type]);
6+
KdlUrlReference(super.value, [super.type]);
77

88
/// Converts a `KdlString` into a `KdlURLReference`
9-
static KdlURLReference? call(KdlValue value,
9+
static KdlUrlReference? convert(KdlValue value,
1010
[String type = 'url-reference']) {
1111
if (value is! KdlString) return null;
1212

13-
return KdlURLReference(Uri.parse(value.value), type);
13+
return KdlUrlReference(Uri.parse(value.value), type);
1414
}
1515
}
1616

1717
/// RFC3986 URI.
18-
class KdlURL extends KdlURLReference {
18+
class KdlUrl extends KdlUrlReference {
1919
/// Constructs a new `KdlURL`
20-
KdlURL(super.value, [super.type]);
20+
KdlUrl(super.value, [super.type]);
2121

2222
/// Converts a `KdlString` into a `KdlURL`
23-
static KdlURL? call(KdlValue value, [String type = 'url']) {
23+
static KdlUrl? convert(KdlValue value, [String type = 'url']) {
2424
if (value is! KdlString) return null;
2525

2626
var uri = Uri.parse(value.value);
2727
if (uri.scheme == '') throw "Invalid URL: ${value.value}";
2828

29-
return KdlURL(Uri.parse(value.value), type);
29+
return KdlUrl(Uri.parse(value.value), type);
3030
}
3131
}

‎lib/src/types/url_template.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ import "../document.dart";
22
import "./url_template/parser.dart";
33

44
/// RFC6570 URI Template.
5-
class KdlURLTemplate extends KdlValue<URLTemplate> {
5+
class KdlUrlTemplate extends KdlValue<UrlTemplate> {
66
/// Construct a new `KdlURLTemplate`
7-
KdlURLTemplate(super.value, [super.type]);
7+
KdlUrlTemplate(super.value, [super.type]);
88

99
/// Convert a `KdlString` into a `KdlURLTemplate`
10-
static KdlURLTemplate? call(KdlValue value, [String type = 'url-emplate']) {
10+
static KdlUrlTemplate? convert(KdlValue value, [String type = 'url-emplate']) {
1111
if (value is! KdlString) return null;
1212

13-
var template = URLTemplateParser(value.value).parse();
13+
var template = UrlTemplateParser(value.value).parse();
1414

15-
return KdlURLTemplate(template, type);
15+
return KdlUrlTemplate(template, type);
1616
}
1717

1818
/// Expand the template into a Uri using the given values

‎lib/src/types/url_template/parser.dart

+33-33
Original file line numberDiff line numberDiff line change
@@ -3,61 +3,61 @@ import "dart:math";
33
import "../irl/parser.dart";
44

55
/// RFC6570 URI Template.
6-
class URLTemplate {
7-
final List<_URLTemplatePart> _parts;
6+
class UrlTemplate {
7+
final List<_UrlTemplatePart> _parts;
88

99
/// Construct a new URL template with the given parts
10-
URLTemplate(this._parts);
10+
UrlTemplate(this._parts);
1111

1212
/// Expand the template into a Uri with the given values
1313
Uri expand(values) {
1414
var result = _parts.map((p) => p._expand(values)).join();
15-
var parser = IRLParser(result);
15+
var parser = IrlParser(result);
1616
return Uri.parse(parser.parse().asciiValue);
1717
}
1818

1919
@override
2020
String toString() => _parts.map((p) => p.toString()).join();
2121
}
2222

23-
enum _URLTemplateParserContext {
23+
enum _UrlTemplateParserContext {
2424
start,
2525
literal,
2626
expansion,
2727
}
2828

2929
/// Parses a string into a URLTemplate
30-
class URLTemplateParser {
30+
class UrlTemplateParser {
3131
static final _unreserved = RegExp(r"[a-zA-Z0-9\-._~]");
3232
static final _reserved = RegExp(r"[:/?#\[\]@!$&'()*+,;=]");
3333

3434
final String _string;
3535
int _index = 0;
3636

3737
/// Construct a new URL template parser for parsing the given string
38-
URLTemplateParser(this._string);
38+
UrlTemplateParser(this._string);
3939

4040
/// Parse the string into a URL template
41-
URLTemplate parse() {
42-
List<_URLTemplatePart> result = [];
43-
_URLTemplatePart? token;
41+
UrlTemplate parse() {
42+
List<_UrlTemplatePart> result = [];
43+
_UrlTemplatePart? token;
4444
while ((token = _nextToken()) != null) {
4545
result.add(token!);
4646
}
47-
return URLTemplate(result);
47+
return UrlTemplate(result);
4848
}
4949

50-
_URLTemplatePart? _nextToken() {
50+
_UrlTemplatePart? _nextToken() {
5151
var buffer = '';
52-
var context = _URLTemplateParserContext.start;
53-
late _URLTemplatePart expansion;
52+
var context = _UrlTemplateParserContext.start;
53+
late _UrlTemplatePart expansion;
5454
while (true) {
5555
var c = _index < _string.length ? _string[_index] : null;
5656
switch (context) {
57-
case _URLTemplateParserContext.start:
57+
case _UrlTemplateParserContext.start:
5858
switch (c) {
5959
case '{':
60-
context = _URLTemplateParserContext.expansion;
60+
context = _UrlTemplateParserContext.expansion;
6161
buffer = '';
6262
var n = _index < _string.length - 1 ? _string[_index + 1] : null;
6363
switch (n) {
@@ -93,11 +93,11 @@ class URLTemplateParser {
9393
default:
9494
buffer = c;
9595
_index++;
96-
context = _URLTemplateParserContext.literal;
96+
context = _UrlTemplateParserContext.literal;
9797
break;
9898
}
9999
break;
100-
case _URLTemplateParserContext.literal:
100+
case _UrlTemplateParserContext.literal:
101101
switch (c) {
102102
case '{':
103103
case null:
@@ -108,7 +108,7 @@ class URLTemplateParser {
108108
break;
109109
}
110110
break;
111-
case _URLTemplateParserContext.expansion:
111+
case _UrlTemplateParserContext.expansion:
112112
switch (c) {
113113
case '}':
114114
_index++;
@@ -126,11 +126,11 @@ class URLTemplateParser {
126126
}
127127
}
128128

129-
void _parseVariables(String string, _URLTemplatePart part) {
129+
void _parseVariables(String string, _UrlTemplatePart part) {
130130
part._variables = string.split(',').map((str) {
131131
var match = RegExp(r"^(.*)\*$").firstMatch(str);
132132
if (match != null) {
133-
return _URLTemplateVariable(
133+
return _UrlTemplateVariable(
134134
match[1]!,
135135
explode: true,
136136
allowReserved: part._allowReserved,
@@ -140,15 +140,15 @@ class URLTemplateParser {
140140
}
141141
match = RegExp(r"^(.*):(\d+)$").firstMatch(str);
142142
if (match != null) {
143-
return _URLTemplateVariable(
143+
return _UrlTemplateVariable(
144144
match[1]!,
145145
limit: int.parse(match[2]!),
146146
allowReserved: part._allowReserved,
147147
withName: part._withName,
148148
keepEmpties: part._keepEmpties,
149149
);
150150
}
151-
return _URLTemplateVariable(
151+
return _UrlTemplateVariable(
152152
str,
153153
allowReserved: part._allowReserved,
154154
withName: part._withName,
@@ -158,15 +158,15 @@ class URLTemplateParser {
158158
}
159159
}
160160

161-
class _URLTemplateVariable {
161+
class _UrlTemplateVariable {
162162
String name;
163163
int? limit;
164164
bool explode;
165165
bool allowReserved;
166166
bool withName;
167167
bool keepEmpties;
168168

169-
_URLTemplateVariable(this.name,
169+
_UrlTemplateVariable(this.name,
170170
{this.limit,
171171
this.explode = false,
172172
this.allowReserved = false,
@@ -228,11 +228,11 @@ class _URLTemplateVariable {
228228
var result = '';
229229
for (int i = 0; i < string.length; i++) {
230230
var c = string[i];
231-
if (URLTemplateParser._unreserved.hasMatch(c) ||
232-
(allowReserved && URLTemplateParser._reserved.hasMatch(c))) {
231+
if (UrlTemplateParser._unreserved.hasMatch(c) ||
232+
(allowReserved && UrlTemplateParser._reserved.hasMatch(c))) {
233233
result += c;
234234
} else {
235-
result += IRLParser.percentEncode(c);
235+
result += IrlParser.percentEncode(c);
236236
}
237237
}
238238
return result;
@@ -255,10 +255,10 @@ class _URLTemplateVariable {
255255
}
256256
}
257257

258-
abstract class _URLTemplatePart {
259-
List<_URLTemplateVariable> _variables;
258+
abstract class _UrlTemplatePart {
259+
List<_UrlTemplateVariable> _variables;
260260

261-
_URLTemplatePart([this._variables = const []]);
261+
_UrlTemplatePart([this._variables = const []]);
262262

263263
_expandVariables(Map<String, dynamic> values) {
264264
var list = [];
@@ -278,7 +278,7 @@ abstract class _URLTemplatePart {
278278
String _expand(values);
279279
}
280280

281-
class _StringLiteral extends _URLTemplatePart {
281+
class _StringLiteral extends _UrlTemplatePart {
282282
String value;
283283

284284
_StringLiteral(this.value) : super([]);
@@ -290,7 +290,7 @@ class _StringLiteral extends _URLTemplatePart {
290290
String toString() => value;
291291
}
292292

293-
class _StringExpansion extends _URLTemplatePart {
293+
class _StringExpansion extends _UrlTemplatePart {
294294
@override
295295
_expand(values) {
296296
var expanded = _expandVariables(values);

‎lib/src/types/uuid.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import "../document.dart";
22

33
/// RFC4122 UUID.
4-
class KdlUUID extends KdlValue<String> {
4+
class KdlUuid extends KdlValue<String> {
55
/// Consutrct a new `KdlUUID`
6-
KdlUUID(super.value, [super.type]);
6+
KdlUuid(super.value, [super.type]);
77
static final _regexp =
88
RegExp(r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$");
99

1010
/// Convert a `KdlString` into a `KdlUUID`
11-
static KdlUUID? call(KdlValue value, [String type = 'uuid']) {
11+
static KdlUuid? convert(KdlValue value, [String type = 'uuid']) {
1212
if (value is! KdlString) return null;
1313

1414
String uuid = value.value.toLowerCase();
1515
if (!_regexp.hasMatch(uuid)) throw "${value.value} is not a valid uuid";
1616

17-
return KdlUUID(uuid, type);
17+
return KdlUuid(uuid, type);
1818
}
1919
}

‎test/types/base64_test.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import 'package:kdl/src/types/base64.dart';
77

88
void main() {
99
test('base64', () {
10-
expect(KdlBase64.call(KdlString('U2VuZCByZWluZm9yY2VtZW50cw=='))!.value,
10+
expect(KdlBase64.convert(KdlString('U2VuZCByZWluZm9yY2VtZW50cw=='))!.value,
1111
equals(utf8.encode('Send reinforcements')));
1212

13-
expect(() => KdlBase64.call(KdlString('not base64')), throwsA(anything));
13+
expect(() => KdlBase64.convert(KdlString('not base64')), throwsA(anything));
1414
});
1515
}

‎test/types/country_test.dart

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ void main() {
88
var southAfrica = Country(alpha3: 'ZAF', alpha2: 'ZA', numericCode: 710, name: 'South Africa');
99

1010
test('country3', () {
11-
expect(KdlCountry3.call(KdlString('ZAF'))!.value, equals(southAfrica));
11+
expect(KdlCountry3.convert(KdlString('ZAF'))!.value, equals(southAfrica));
1212

13-
expect(() => KdlCountry3.call(KdlString('ZZZ')), throwsA(anything));
13+
expect(() => KdlCountry3.convert(KdlString('ZZZ')), throwsA(anything));
1414
});
1515

1616
test('country2', () {
17-
expect(KdlCountry2.call(KdlString('ZA'))!.value, equals(southAfrica));
17+
expect(KdlCountry2.convert(KdlString('ZA'))!.value, equals(southAfrica));
1818

19-
expect(() => KdlCountry2.call(KdlString('ZZ')), throwsA(anything));
19+
expect(() => KdlCountry2.convert(KdlString('ZZ')), throwsA(anything));
2020
});
2121

2222
test('country subdivision', () {
23-
var value = KdlCountrySubdivision.call(KdlString('ZA-GP'))!;
23+
var value = KdlCountrySubdivision.convert(KdlString('ZA-GP'))!;
2424
expect(value.value, equals('ZA-GP'));
2525
expect(value.name, equals('Gauteng'));
2626
expect(value.country, equals(southAfrica));
2727

28-
expect(() => KdlCountrySubdivision.call(KdlString('ZA-ZZ')), throwsA(anything));
29-
expect(() => KdlCountrySubdivision.call(KdlString('ZZ-GP')), throwsA(anything));
28+
expect(() => KdlCountrySubdivision.convert(KdlString('ZA-ZZ')), throwsA(anything));
29+
expect(() => KdlCountrySubdivision.convert(KdlString('ZZ-GP')), throwsA(anything));
3030
});
3131
}

‎test/types/currency_test.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import 'package:kdl/src/types/currency/iso4217_currencies.dart';
66

77
void main() {
88
test('uuid', () {
9-
expect(KdlCurrency.call(KdlString('ZAR'))!.value,
9+
expect(KdlCurrency.convert(KdlString('ZAR'))!.value,
1010
equals(Currency(numericCode: 710, minorUnit: 2, name: 'South African rand')));
1111

12-
expect(() => KdlCurrency.call(KdlString('ZZZ')), throwsA(anything));
12+
expect(() => KdlCurrency.convert(KdlString('ZZZ')), throwsA(anything));
1313
});
1414
}

‎test/types/date_time_test.dart

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,30 @@ import 'package:kdl/src/types/date_time.dart';
55

66
void main() {
77
test('date time', () {
8-
expect(KdlDateTime.call(KdlString('2011-10-05T22:26:12-04:00'))!.value,
8+
expect(KdlDateTime.convert(KdlString('2011-10-05T22:26:12-04:00'))!.value,
99
equals(DateTime.parse('2011-10-05T22:26:12-04:00')));
1010

11-
expect(() => KdlDateTime.call(KdlString('not a date time')), throwsA(anything));
11+
expect(() => KdlDateTime.convert(KdlString('not a date time')), throwsA(anything));
1212
});
1313

1414
test('time', () {
1515
var today = DateTime.now().toString().split(' ')[0];
16-
expect(KdlTime.call(KdlString('22:26:12'))!.value,
16+
expect(KdlTime.convert(KdlString('22:26:12'))!.value,
1717
equals(DateTime.parse("${today}T22:26:12")));
18-
expect(KdlTime.call(KdlString('T22:26:12Z'))!.value,
18+
expect(KdlTime.convert(KdlString('T22:26:12Z'))!.value,
1919
equals(DateTime.parse("${today}T22:26:12Z")));
20-
expect(KdlTime.call(KdlString('22:26:12.000Z'))!.value,
20+
expect(KdlTime.convert(KdlString('22:26:12.000Z'))!.value,
2121
equals(DateTime.parse("${today}T22:26:12Z")));
22-
expect(KdlTime.call(KdlString('22:26:12-04:00'))!.value,
22+
expect(KdlTime.convert(KdlString('22:26:12-04:00'))!.value,
2323
equals(DateTime.parse("${today}T22:26:12-04:00")));
2424

25-
expect(() => KdlTime.call(KdlString('not a time')), throwsA(anything));
25+
expect(() => KdlTime.convert(KdlString('not a time')), throwsA(anything));
2626
});
2727

2828
test('date', () {
29-
expect(KdlDate.call(KdlString('2011-10-05'))!.value,
29+
expect(KdlDate.convert(KdlString('2011-10-05'))!.value,
3030
equals(DateTime.parse('2011-10-05')));
3131

32-
expect(() => KdlDate.call(KdlString('not a date')), throwsA(anything));
32+
expect(() => KdlDate.convert(KdlString('not a date')), throwsA(anything));
3333
});
3434
}

‎test/types/decimal_test.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import 'package:kdl/src/types/decimal.dart';
66

77
void main() {
88
test('decimal', () {
9-
expect(KdlDecimal.call(KdlString('10000000000000'))!.value,
9+
expect(KdlDecimal.convert(KdlString('10000000000000'))!.value,
1010
equals(BigDecimal.parse('10000000000000')));
1111

12-
expect(() => KdlDecimal.call(KdlString('not a decimal')), throwsA(anything));
12+
expect(() => KdlDecimal.convert(KdlString('not a decimal')), throwsA(anything));
1313
});
1414
}

‎test/types/duration_test.dart

+21-21
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@ import 'package:kdl/src/types/duration.dart';
55

66
void main() {
77
test('uuid', () {
8-
var value = KdlDuration.call(KdlString('P3Y6M4DT12H30M5S'))!;
9-
expect(value.value, equals(ISODuration(years: 3, months: 6, days: 4, hours: 12, minutes: 30, seconds: 5)));
10-
value = KdlDuration.call(KdlString('P23DT23H'))!;
11-
expect(value.value, equals(ISODuration(days: 23, hours: 23)));
12-
value = KdlDuration.call(KdlString('P4Y'))!;
13-
expect(value.value, equals(ISODuration(years: 4)));
14-
value = KdlDuration.call(KdlString('PT0S'))!;
15-
expect(value.value, equals(ISODuration(seconds: 0)));
16-
value = KdlDuration.call(KdlString('P0D'))!;
17-
expect(value.value, equals(ISODuration(days: 0)));
18-
value = KdlDuration.call(KdlString('P0.5Y'))!;
19-
expect(value.value, equals(ISODuration(years: 0.5)));
20-
value = KdlDuration.call(KdlString('P0,5Y'))!;
21-
expect(value.value, equals(ISODuration(years: 0.5)));
22-
value = KdlDuration.call(KdlString('P1M'))!;
23-
expect(value.value, equals(ISODuration(months: 1)));
24-
value = KdlDuration.call(KdlString('PT1M'))!;
25-
expect(value.value, equals(ISODuration(minutes: 1)));
26-
value = KdlDuration.call(KdlString('P7W'))!;
27-
expect(value.value, equals(ISODuration(weeks: 7)));
8+
var value = KdlDuration.convert(KdlString('P3Y6M4DT12H30M5S'))!;
9+
expect(value.value, equals(Duration(years: 3, months: 6, days: 4, hours: 12, minutes: 30, seconds: 5)));
10+
value = KdlDuration.convert(KdlString('P23DT23H'))!;
11+
expect(value.value, equals(Duration(days: 23, hours: 23)));
12+
value = KdlDuration.convert(KdlString('P4Y'))!;
13+
expect(value.value, equals(Duration(years: 4)));
14+
value = KdlDuration.convert(KdlString('PT0S'))!;
15+
expect(value.value, equals(Duration(seconds: 0)));
16+
value = KdlDuration.convert(KdlString('P0D'))!;
17+
expect(value.value, equals(Duration(days: 0)));
18+
value = KdlDuration.convert(KdlString('P0.5Y'))!;
19+
expect(value.value, equals(Duration(years: 0.5)));
20+
value = KdlDuration.convert(KdlString('P0,5Y'))!;
21+
expect(value.value, equals(Duration(years: 0.5)));
22+
value = KdlDuration.convert(KdlString('P1M'))!;
23+
expect(value.value, equals(Duration(months: 1)));
24+
value = KdlDuration.convert(KdlString('PT1M'))!;
25+
expect(value.value, equals(Duration(minutes: 1)));
26+
value = KdlDuration.convert(KdlString('P7W'))!;
27+
expect(value.value, equals(Duration(weeks: 7)));
2828

29-
expect(() => KdlDuration.call(KdlString('not a duration')), throwsA(anything));
29+
expect(() => KdlDuration.convert(KdlString('not a duration')), throwsA(anything));
3030
});
3131
}

‎test/types/email_test.dart

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import 'package:kdl/src/types/email.dart';
55

66
void main() {
77
test('email', () {
8-
var value = KdlEmail.call(KdlString('danielle@example.com'))!;
8+
var value = KdlEmail.convert(KdlString('danielle@example.com'))!;
99
expect(value.value, equals('danielle@example.com'));
1010
expect(value.local, equals('danielle'));
1111
expect(value.domain, equals('example.com'));
1212

13-
expect(() => KdlEmail.call(KdlString('not an email')), throwsA(anything));
13+
expect(() => KdlEmail.convert(KdlString('not an email')), throwsA(anything));
1414
});
1515

1616
var validEmails = [
@@ -34,7 +34,7 @@ void main() {
3434

3535
test('valid emails', () {
3636
for (var testCase in validEmails) {
37-
var value = KdlEmail.call(KdlString(testCase[0]))!;
37+
var value = KdlEmail.convert(KdlString(testCase[0]))!;
3838
expect(value.value, equals(testCase[0]));
3939
expect(value.local, equals(testCase[1]));
4040
expect(value.domain, equals(testCase[2]));
@@ -55,24 +55,24 @@ void main() {
5555

5656
test('invalid emails', () {
5757
for (var email in invalidEmails) {
58-
expect(() => KdlEmail.call(KdlString(email)), throwsA(anything));
58+
expect(() => KdlEmail.convert(KdlString(email)), throwsA(anything));
5959
}
6060
});
6161

6262
test('idn email', () {
63-
var value = KdlIDNEmail.call(KdlString('🌈@xn--9ckb.com'))!;
63+
var value = KdlIdnEmail.convert(KdlString('🌈@xn--9ckb.com'))!;
6464
expect(value.value, equals('🌈@xn--9ckb.com'));
6565
expect(value.unicodeValue, equals('🌈@ツッ.com'));
6666
expect(value.local, equals('🌈'));
6767
expect(value.unicodeDomain, equals('ツッ.com'));
6868
expect(value.domain, equals('xn--9ckb.com'));
69-
value = KdlIDNEmail.call(KdlString('🌈@ツッ.com'))!;
69+
value = KdlIdnEmail.convert(KdlString('🌈@ツッ.com'))!;
7070
expect(value.value, equals('🌈@xn--9ckb.com'));
7171
expect(value.unicodeValue, equals('🌈@ツッ.com'));
7272
expect(value.local, equals('🌈'));
7373
expect(value.unicodeDomain, equals('ツッ.com'));
7474
expect(value.domain, equals('xn--9ckb.com'));
7575

76-
expect(() => KdlIDNEmail.call(KdlString('not an email')), throwsA(anything));
76+
expect(() => KdlIdnEmail.convert(KdlString('not an email')), throwsA(anything));
7777
});
7878
}

‎test/types/hostname_test.dart

+10-10
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,42 @@ import 'package:kdl/src/types/hostname.dart';
55

66
void main() {
77
test('hostname', () {
8-
expect(KdlHostname.call(KdlString('www.example.com'))!.value,
8+
expect(KdlHostname.convert(KdlString('www.example.com'))!.value,
99
equals('www.example.com'));
1010

1111
// 63 a's
1212
var maxPartLength =
1313
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com';
14-
expect(KdlHostname.call(KdlString(maxPartLength))!.value,
14+
expect(KdlHostname.convert(KdlString(maxPartLength))!.value,
1515
equals(maxPartLength));
1616

1717
var maxLength =
1818
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.'
1919
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.'
2020
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.'
2121
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
22-
expect(KdlHostname.call(KdlString(maxLength))?.value, equals(maxLength));
22+
expect(KdlHostname.convert(KdlString(maxLength))?.value, equals(maxLength));
2323

2424
expect(
25-
() => KdlHostname.call(KdlString('not a hostname')), throwsA(anything));
26-
expect(() => KdlHostname.call(KdlString('-start-with-a-dash.com')),
25+
() => KdlHostname.convert(KdlString('not a hostname')), throwsA(anything));
26+
expect(() => KdlHostname.convert(KdlString('-start-with-a-dash.com')),
2727
throwsA(anything));
28-
expect(() => KdlHostname.call(KdlString('a$maxPartLength')),
28+
expect(() => KdlHostname.convert(KdlString('a$maxPartLength')),
2929
throwsA(anything));
3030
expect(
31-
() => KdlHostname.call(KdlString('${maxLength}a')), throwsA(anything));
31+
() => KdlHostname.convert(KdlString('${maxLength}a')), throwsA(anything));
3232
});
3333

3434
test('idn hostname', () {
35-
var value = KdlIDNHostname.call(KdlString('xn--bcher-kva.example'))!;
35+
var value = KdlIdnHostname.convert(KdlString('xn--bcher-kva.example'))!;
3636
expect(value.value, equals('xn--bcher-kva.example'));
3737
expect(value.unicodeValue, equals('bücher.example'));
3838

39-
value = KdlIDNHostname.call(KdlString('bücher.example'))!;
39+
value = KdlIdnHostname.convert(KdlString('bücher.example'))!;
4040
expect(value.value, equals('xn--bcher-kva.example'));
4141
expect(value.unicodeValue, equals('bücher.example'));
4242

43-
expect(() => KdlIDNHostname.call(KdlString('not a hostname')),
43+
expect(() => KdlIdnHostname.convert(KdlString('not a hostname')),
4444
throwsA(anything));
4545
});
4646
}

‎test/types/ip_test.dart

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import 'package:kdl/src/types/ip.dart';
55

66
void main() {
77
test('ipv4', () {
8-
expect(KdlIPV4.call(KdlString('127.0.0.1'))!.value, equals('127.0.0.1'));
9-
expect(KdlIPV4.call(KdlString('192.168.42.255'))!.value,
8+
expect(KdlIPV4.convert(KdlString('127.0.0.1'))!.value, equals('127.0.0.1'));
9+
expect(KdlIPV4.convert(KdlString('192.168.42.255'))!.value,
1010
equals('192.168.42.255'));
1111

12-
expect(() => KdlIPV4.call(KdlString('not an ipv4 address')),
12+
expect(() => KdlIPV4.convert(KdlString('not an ipv4 address')),
1313
throwsA(anything));
14-
expect(() => KdlIPV4.call(KdlString('3ffe:505:2::1')), throwsA(anything));
15-
expect(() => KdlIPV4.call(KdlString('256.0.0.0')), throwsA(anything));
16-
expect(() => KdlIPV4.call(KdlString('312.0.0.0')), throwsA(anything));
14+
expect(() => KdlIPV4.convert(KdlString('3ffe:505:2::1')), throwsA(anything));
15+
expect(() => KdlIPV4.convert(KdlString('256.0.0.0')), throwsA(anything));
16+
expect(() => KdlIPV4.convert(KdlString('312.0.0.0')), throwsA(anything));
1717
});
1818

1919
test('ipv6', () {
@@ -34,11 +34,11 @@ void main() {
3434
'::FFFF:129.144.52.38'
3535
];
3636
for (var addr in addresses) {
37-
expect(KdlIPV6.call(KdlString(addr))!.value, equals(addr));
37+
expect(KdlIPV6.convert(KdlString(addr))!.value, equals(addr));
3838
}
3939

40-
expect(() => KdlIPV6.call(KdlString('not an ipv6 address')),
40+
expect(() => KdlIPV6.convert(KdlString('not an ipv6 address')),
4141
throwsA(anything));
42-
expect(() => KdlIPV6.call(KdlString('127.0.0.1')), throwsA(anything));
42+
expect(() => KdlIPV6.convert(KdlString('127.0.0.1')), throwsA(anything));
4343
});
4444
}

‎test/types/irl_test.dart

+11-11
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,37 @@ import 'package:kdl/src/types/irl.dart';
55

66
void main() {
77
test('irl', () {
8-
var value = KdlIRL.call(KdlString('https://bücher.example/foo/Ῥόδος'))!;
8+
var value = KdlIRL.convert(KdlString('https://bücher.example/foo/Ῥόδος'))!;
99
expect(value.value, equals(Uri.parse('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82')));
1010
expect(value.unicodeValue, equals('https://bücher.example/foo/Ῥόδος'));
11-
value = KdlIRL.call(KdlString('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82'))!;
11+
value = KdlIRL.convert(KdlString('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82'))!;
1212
expect(value.value, equals(Uri.parse('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82')));
1313
expect(value.unicodeValue, equals('https://bücher.example/foo/Ῥόδος'));
14-
value = KdlIRL.call(KdlString('https://bücher.example/foo/Ῥόδος?🌈=✔️#🦄'))!;
14+
value = KdlIRL.convert(KdlString('https://bücher.example/foo/Ῥόδος?🌈=✔️#🦄'))!;
1515
expect(value.value, equals(Uri.parse('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82?%F0%9F%8C%88=%E2%9C%94%EF%B8%8F#%F0%9F%A6%84')));
1616
expect(value.unicodeValue, equals('https://bücher.example/foo/Ῥόδος?🌈=✔️#🦄'));
1717

18-
expect(() => KdlIRL.call(KdlString('not a url')), throwsA(anything));
19-
expect(() => KdlIRL.call(KdlString('/reference/to/something')), throwsA(anything));
18+
expect(() => KdlIRL.convert(KdlString('not a url')), throwsA(anything));
19+
expect(() => KdlIRL.convert(KdlString('/reference/to/something')), throwsA(anything));
2020
});
2121

2222
test('irl reference', () {
23-
var value = KdlIRLReference.call(KdlString('https://bücher.example/foo/Ῥόδος'))!;
23+
var value = KdlIrlReference.convert(KdlString('https://bücher.example/foo/Ῥόδος'))!;
2424
expect(value.value, equals(Uri.parse('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82')));
2525
expect(value.unicodeValue, equals('https://bücher.example/foo/Ῥόδος'));
26-
value = KdlIRLReference.call(KdlString('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82'))!;
26+
value = KdlIrlReference.convert(KdlString('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82'))!;
2727
expect(value.value, equals(Uri.parse('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82')));
2828
expect(value.unicodeValue, equals('https://bücher.example/foo/Ῥόδος'));
29-
value = KdlIRLReference.call(KdlString('https://bücher.example/foo/Ῥόδος?🌈=✔️#🦄'))!;
29+
value = KdlIrlReference.convert(KdlString('https://bücher.example/foo/Ῥόδος?🌈=✔️#🦄'))!;
3030
expect(value.value, equals(Uri.parse('https://xn--bcher-kva.example/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82?%F0%9F%8C%88=%E2%9C%94%EF%B8%8F#%F0%9F%A6%84')));
3131
expect(value.unicodeValue, equals('https://bücher.example/foo/Ῥόδος?🌈=✔️#🦄'));
32-
value = KdlIRLReference.call(KdlString('/foo/Ῥόδος'))!;
32+
value = KdlIrlReference.convert(KdlString('/foo/Ῥόδος'))!;
3333
expect(value.value, equals(Uri.parse('/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82')));
3434
expect(value.unicodeValue, equals('/foo/Ῥόδος'));
35-
value = KdlIRLReference.call(KdlString('/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82'))!;
35+
value = KdlIrlReference.convert(KdlString('/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82'))!;
3636
expect(value.value, equals(Uri.parse('/foo/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82')));
3737
expect(value.unicodeValue, equals('/foo/Ῥόδος'));
3838

39-
expect(() => KdlIRLReference.call(KdlString('not a url')), throwsA(anything));
39+
expect(() => KdlIrlReference.convert(KdlString('not a url')), throwsA(anything));
4040
});
4141
}

‎test/types/regex_test.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import 'package:kdl/src/types/regex.dart';
55

66
void main() {
77
test('regex', () {
8-
expect(KdlRegex.call(KdlString('asdf'))!.value,
8+
expect(KdlRegex.convert(KdlString('asdf'))!.value,
99
equals(RegExp('asdf')));
1010

11-
expect(() => KdlRegex.call(KdlString('invalid(regex]')), throwsA(anything));
11+
expect(() => KdlRegex.convert(KdlString('invalid(regex]')), throwsA(anything));
1212
});
1313
}

‎test/types/url_template_test.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,23 @@ var variables = {
2424
};
2525

2626
void assertExpansionEqual(String template, String expected) {
27-
var value = KdlURLTemplate.call(KdlString(template))!;
27+
var value = KdlUrlTemplate.convert(KdlString(template))!;
2828
expect(value.expand(variables), equals(Uri.parse(expected)));
2929
}
3030

3131
void main() {
3232
test('no variables', () {
33-
var value = KdlURLTemplate.call(KdlString('https://www.example.com/foo/bar'))!;
33+
var value = KdlUrlTemplate.convert(KdlString('https://www.example.com/foo/bar'))!;
3434
expect(value.expand({}), equals(Uri.parse('https://www.example.com/foo/bar')));
3535
});
3636

3737
test('one variable', () {
38-
var value = KdlURLTemplate.call(KdlString('https://www.example.com/{foo}/bar'))!;
38+
var value = KdlUrlTemplate.convert(KdlString('https://www.example.com/{foo}/bar'))!;
3939
expect(value.expand({ 'foo': 'lorem' }), equals(Uri.parse('https://www.example.com/lorem/bar')));
4040
});
4141

4242
test('multiple_variables', () {
43-
var value = KdlURLTemplate.call(KdlString('https://www.example.com/{foo}/{bar}'))!;
43+
var value = KdlUrlTemplate.convert(KdlString('https://www.example.com/{foo}/{bar}'))!;
4444
expect(value.expand({ 'foo': 'lorem', 'bar': 'ipsum' }),
4545
equals(Uri.parse('https://www.example.com/lorem/ipsum')));
4646
});

‎test/types/url_test.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ import 'package:kdl/src/types/url.dart';
55

66
void main() {
77
test('url', () {
8-
expect(KdlURL.call(KdlString('https://www.example.com/foo/bar'))!.value,
8+
expect(KdlUrl.convert(KdlString('https://www.example.com/foo/bar'))!.value,
99
equals(Uri.parse('https://www.example.com/foo/bar')));
1010

11-
expect(() => KdlURL.call(KdlString('/reference/to/something')), throwsA(anything));
11+
expect(() => KdlUrl.convert(KdlString('/reference/to/something')), throwsA(anything));
1212
});
1313

1414
test('url reference', () {
15-
expect(KdlURLReference.call(KdlString('https://www.example.com/foo/bar'))!.value,
15+
expect(KdlUrlReference.convert(KdlString('https://www.example.com/foo/bar'))!.value,
1616
equals(Uri.parse('https://www.example.com/foo/bar')));
17-
expect(KdlURLReference.call(KdlString('/foo/bar'))!.value,
17+
expect(KdlUrlReference.convert(KdlString('/foo/bar'))!.value,
1818
equals(Uri.parse('/foo/bar')));
1919
});
2020
}

‎test/types/uuid_test.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import 'package:kdl/src/types/uuid.dart';
55

66
void main() {
77
test('uuid', () {
8-
expect(KdlUUID.call(KdlString('f81d4fae-7dec-11d0-a765-00a0c91e6bf6'))!.value,
8+
expect(KdlUuid.convert(KdlString('f81d4fae-7dec-11d0-a765-00a0c91e6bf6'))!.value,
99
equals('f81d4fae-7dec-11d0-a765-00a0c91e6bf6'));
10-
expect(KdlUUID.call(KdlString('F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6'))!.value,
10+
expect(KdlUuid.convert(KdlString('F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6'))!.value,
1111
equals('f81d4fae-7dec-11d0-a765-00a0c91e6bf6'));
1212

13-
expect(() => KdlUUID.call(KdlString('not a uuid')), throwsA(anything));
13+
expect(() => KdlUuid.convert(KdlString('not a uuid')), throwsA(anything));
1414
});
1515
}

‎test/types_test.dart

+7-7
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,17 @@ node (date-time)"2021-01-01T12:12:12" \\
8080
expect(doc.nodes[0].arguments[i++], isA<KdlCountry3>());
8181
expect(doc.nodes[0].arguments[i++], isA<KdlCountrySubdivision>());
8282
expect(doc.nodes[0].arguments[i++], isA<KdlEmail>());
83-
expect(doc.nodes[0].arguments[i++], isA<KdlIDNEmail>());
83+
expect(doc.nodes[0].arguments[i++], isA<KdlIdnEmail>());
8484
expect(doc.nodes[0].arguments[i++], isA<KdlHostname>());
85-
expect(doc.nodes[0].arguments[i++], isA<KdlIDNHostname>());
85+
expect(doc.nodes[0].arguments[i++], isA<KdlIdnHostname>());
8686
expect(doc.nodes[0].arguments[i++], isA<KdlIPV4>());
8787
expect(doc.nodes[0].arguments[i++], isA<KdlIPV6>());
88-
expect(doc.nodes[0].arguments[i++], isA<KdlURL>());
89-
expect(doc.nodes[0].arguments[i++], isA<KdlURLReference>());
88+
expect(doc.nodes[0].arguments[i++], isA<KdlUrl>());
89+
expect(doc.nodes[0].arguments[i++], isA<KdlUrlReference>());
9090
expect(doc.nodes[0].arguments[i++], isA<KdlIRL>());
91-
expect(doc.nodes[0].arguments[i++], isA<KdlIRLReference>());
92-
expect(doc.nodes[0].arguments[i++], isA<KdlURLTemplate>());
93-
expect(doc.nodes[0].arguments[i++], isA<KdlUUID>());
91+
expect(doc.nodes[0].arguments[i++], isA<KdlIrlReference>());
92+
expect(doc.nodes[0].arguments[i++], isA<KdlUrlTemplate>());
93+
expect(doc.nodes[0].arguments[i++], isA<KdlUuid>());
9494
expect(doc.nodes[0].arguments[i++], isA<KdlRegex>());
9595
expect(doc.nodes[0].arguments[i++], isA<KdlBase64>());
9696
});

0 commit comments

Comments
 (0)
Please sign in to comment.