-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathurl.dart
31 lines (24 loc) · 879 Bytes
/
url.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import "../document.dart";
/// RFC3986 URI Reference.
class KdlUrlReference extends KdlValue<Uri> {
/// Constructs a new `KdlURLReference`
KdlUrlReference(super.value, [super.type]);
/// Converts a `KdlString` into a `KdlURLReference`
static KdlUrlReference? convert(KdlValue value,
[String type = 'url-reference']) {
if (value is! KdlString) return null;
return KdlUrlReference(Uri.parse(value.value), type);
}
}
/// RFC3986 URI.
class KdlUrl extends KdlUrlReference {
/// Constructs a new `KdlURL`
KdlUrl(super.value, [super.type]);
/// Converts a `KdlString` into a `KdlURL`
static KdlUrl? convert(KdlValue value, [String type = 'url']) {
if (value is! KdlString) return null;
var uri = Uri.parse(value.value);
if (uri.scheme == '') throw "Invalid URL: ${value.value}";
return KdlUrl(Uri.parse(value.value), type);
}
}