kdl 1.0.0.rc1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -1
- data/.gitignore +1 -0
- data/README.md +16 -2
- data/bin/kdl +8 -0
- data/kdl.gemspec +2 -1
- data/lib/kdl/kdl.tab.rb +208 -179
- data/lib/kdl/kdl.yy +30 -22
- data/lib/kdl/node.rb +20 -5
- data/lib/kdl/tokenizer.rb +6 -19
- data/lib/kdl/types/base64.rb +21 -0
- data/lib/kdl/types/country/iso3166_countries.rb +512 -0
- data/lib/kdl/types/country/iso3166_subdivisions.rb +3927 -0
- data/lib/kdl/types/country.rb +69 -0
- data/lib/kdl/types/currency/iso4217_currencies.rb +189 -0
- data/lib/kdl/types/currency.rb +26 -0
- data/lib/kdl/types/date_time.rb +41 -0
- data/lib/kdl/types/decimal.rb +13 -0
- data/lib/kdl/types/duration/iso8601_parser.rb +147 -0
- data/lib/kdl/types/duration.rb +28 -0
- data/lib/kdl/types/email/parser.rb +151 -0
- data/lib/kdl/types/email.rb +47 -0
- data/lib/kdl/types/hostname/validator.rb +51 -0
- data/lib/kdl/types/hostname.rb +36 -0
- data/lib/kdl/types/ip.rb +32 -0
- data/lib/kdl/types/irl/parser.rb +123 -0
- data/lib/kdl/types/irl.rb +46 -0
- data/lib/kdl/types/regex.rb +13 -0
- data/lib/kdl/types/url.rb +30 -0
- data/lib/kdl/types/url_template.rb +328 -0
- data/lib/kdl/types/uuid.rb +17 -0
- data/lib/kdl/types.rb +22 -0
- data/lib/kdl/value.rb +13 -2
- data/lib/kdl/version.rb +1 -1
- data/lib/kdl.rb +3 -2
- metadata +43 -6
@@ -0,0 +1,17 @@
|
|
1
|
+
module KDL
|
2
|
+
module Types
|
3
|
+
class UUID < Value
|
4
|
+
RGX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
|
5
|
+
|
6
|
+
def self.call(value, type = 'uuid')
|
7
|
+
return nil unless value.is_a? ::KDL::Value::String
|
8
|
+
|
9
|
+
uuid = value.value.downcase
|
10
|
+
raise ArgumentError, "`#{value.value}' is not a valid uuid" unless uuid =~ RGX
|
11
|
+
|
12
|
+
new(uuid, type: type)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
MAPPING['uuid'] = UUID
|
16
|
+
end
|
17
|
+
end
|
data/lib/kdl/types.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
module KDL
|
2
|
+
module Types
|
3
|
+
MAPPING = {}
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'kdl/types/date_time'
|
8
|
+
require 'kdl/types/duration'
|
9
|
+
require 'kdl/types/currency'
|
10
|
+
require 'kdl/types/country'
|
11
|
+
require 'kdl/types/ip'
|
12
|
+
require 'kdl/types/url'
|
13
|
+
require 'kdl/types/uuid'
|
14
|
+
require 'kdl/types/regex'
|
15
|
+
require 'kdl/types/base64'
|
16
|
+
require 'kdl/types/decimal'
|
17
|
+
require 'kdl/types/hostname'
|
18
|
+
require 'kdl/types/email'
|
19
|
+
require 'kdl/types/irl'
|
20
|
+
require 'kdl/types/url_template'
|
21
|
+
|
22
|
+
KDL::Types::MAPPING.freeze
|
data/lib/kdl/value.rb
CHANGED
@@ -8,8 +8,19 @@ module KDL
|
|
8
8
|
@type = type
|
9
9
|
end
|
10
10
|
|
11
|
-
def as_type(type)
|
12
|
-
|
11
|
+
def as_type(type, parser = nil)
|
12
|
+
if parser.nil?
|
13
|
+
self.class.new(value, format: format, type: type)
|
14
|
+
else
|
15
|
+
result = parser.call(self, type)
|
16
|
+
return self.as_type(type) if result.nil?
|
17
|
+
|
18
|
+
unless result.is_a?(::KDL::Value)
|
19
|
+
raise ArgumentError, "expected parser to return an instance of ::KDL::Value, got `#{result.class}'"
|
20
|
+
end
|
21
|
+
|
22
|
+
result
|
23
|
+
end
|
13
24
|
end
|
14
25
|
|
15
26
|
def to_s
|
data/lib/kdl/version.rb
CHANGED
data/lib/kdl.rb
CHANGED
@@ -4,10 +4,11 @@ require "kdl/document"
|
|
4
4
|
require "kdl/value"
|
5
5
|
require "kdl/node"
|
6
6
|
require "kdl/string_dumper"
|
7
|
+
require "kdl/types"
|
7
8
|
require "kdl/kdl.tab"
|
8
9
|
|
9
10
|
module KDL
|
10
|
-
def self.parse_document(input)
|
11
|
-
Parser.new.parse(input)
|
11
|
+
def self.parse_document(input, options = {})
|
12
|
+
Parser.new.parse(input, options)
|
12
13
|
end
|
13
14
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kdl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danielle Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: racc
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: simpleidn
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.2.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.2.1
|
27
41
|
description: Ruby implementation of the KDL Document Language Spec
|
28
42
|
email:
|
29
43
|
- danini@hey.com
|
@@ -40,6 +54,7 @@ files:
|
|
40
54
|
- README.md
|
41
55
|
- Rakefile
|
42
56
|
- bin/console
|
57
|
+
- bin/kdl
|
43
58
|
- bin/racc
|
44
59
|
- bin/rake
|
45
60
|
- bin/setup
|
@@ -51,6 +66,28 @@ files:
|
|
51
66
|
- lib/kdl/node.rb
|
52
67
|
- lib/kdl/string_dumper.rb
|
53
68
|
- lib/kdl/tokenizer.rb
|
69
|
+
- lib/kdl/types.rb
|
70
|
+
- lib/kdl/types/base64.rb
|
71
|
+
- lib/kdl/types/country.rb
|
72
|
+
- lib/kdl/types/country/iso3166_countries.rb
|
73
|
+
- lib/kdl/types/country/iso3166_subdivisions.rb
|
74
|
+
- lib/kdl/types/currency.rb
|
75
|
+
- lib/kdl/types/currency/iso4217_currencies.rb
|
76
|
+
- lib/kdl/types/date_time.rb
|
77
|
+
- lib/kdl/types/decimal.rb
|
78
|
+
- lib/kdl/types/duration.rb
|
79
|
+
- lib/kdl/types/duration/iso8601_parser.rb
|
80
|
+
- lib/kdl/types/email.rb
|
81
|
+
- lib/kdl/types/email/parser.rb
|
82
|
+
- lib/kdl/types/hostname.rb
|
83
|
+
- lib/kdl/types/hostname/validator.rb
|
84
|
+
- lib/kdl/types/ip.rb
|
85
|
+
- lib/kdl/types/irl.rb
|
86
|
+
- lib/kdl/types/irl/parser.rb
|
87
|
+
- lib/kdl/types/regex.rb
|
88
|
+
- lib/kdl/types/url.rb
|
89
|
+
- lib/kdl/types/url_template.rb
|
90
|
+
- lib/kdl/types/uuid.rb
|
54
91
|
- lib/kdl/value.rb
|
55
92
|
- lib/kdl/version.rb
|
56
93
|
homepage: https://kdl.dev
|
@@ -68,14 +105,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
105
|
requirements:
|
69
106
|
- - ">="
|
70
107
|
- !ruby/object:Gem::Version
|
71
|
-
version: 2.
|
108
|
+
version: 2.4.0
|
72
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
110
|
requirements:
|
74
|
-
- - "
|
111
|
+
- - ">="
|
75
112
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
113
|
+
version: '0'
|
77
114
|
requirements: []
|
78
|
-
rubygems_version: 3.2.
|
115
|
+
rubygems_version: 3.2.32
|
79
116
|
signing_key:
|
80
117
|
specification_version: 4
|
81
118
|
summary: KDL Document Language
|