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
|
module KDL
module Types
class URLReference < Value
def self.call(value, type = 'url-reference')
return nil unless value.is_a? ::KDL::Value::String
uri = parse_url(value.value)
new(uri, type: type)
end
def self.parse_url(string)
URI.parse(string)
end
end
MAPPING['url-reference'] = URLReference
class URL < URLReference
def self.call(value, type = 'url')
super(value, type)
end
def self.parse_url(string)
super.tap do |uri|
raise 'invalid URL' if uri.scheme.nil?
end
end
end
MAPPING['url'] = URL
end
end
|