-
Notifications
You must be signed in to change notification settings - Fork 2
/
irl.rb
46 lines (38 loc) · 1.19 KB
/
irl.rb
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
require_relative './irl/parser'
module KDL
module Types
class IRLReference < Value::Custom
attr_reader :unicode_value,
:unicode_domain,
:unicode_path,
:unicode_search,
:unicode_hash
def initialize(value, unicode_value:, unicode_domain:, unicode_path:, unicode_search:, unicode_hash:, **kwargs)
super(value, **kwargs)
@unicode_value = unicode_value
@unicode_domain = unicode_domain
@unicode_path = unicode_path
@unicode_search = unicode_search
@unicode_hash = unicode_hash
end
def self.call(value, type = 'irl-reference')
return nil unless value.is_a? ::KDL::Value::String
ascii_value, params = parser(value.value).parse
new(URI.parse(ascii_value), type: type, **params)
end
def self.parser(string)
IRLReference::Parser.new(string)
end
end
MAPPING['irl-reference'] = IRLReference
class IRL < IRLReference
def self.call(value, type = 'irl')
super(value, type)
end
def self.parser(string)
IRL::Parser.new(string)
end
end
MAPPING['irl'] = IRL
end
end