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
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
|