class Puppet::Pops::Types::PURIType
Constants
- DEFAULT
- FRAGMENT
- HOST
- OPAQUE
- PATH
- PORT
- QUERY
- SCHEME
- TYPE_INTEGER_PARAM
- TYPE_STRING_PARAM
- TYPE_URI_INIT_HASH
- TYPE_URI_PARAM_HASH_TYPE
- TYPE_URI_PARAM_TYPE
- URI_MEMBERS
- USERINFO
Attributes
parameters[R]
Public Class Methods
new(parameters = nil)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 102 def initialize(parameters = nil) 103 if parameters.is_a?(String) 104 parameters = TypeAsserter.assert_instance_of('URI-Type parameter', Pcore::TYPE_URI, parameters, true) 105 @parameters = uri_to_hash(URI.parse(parameters)) 106 elsif parameters.is_a?(URI) 107 @parameters = uri_to_hash(parameters) 108 elsif parameters.is_a?(Hash) 109 params = TypeAsserter.assert_instance_of('URI-Type parameter', TYPE_URI_PARAM_TYPE, parameters, true) 110 @parameters = params.empty? ? nil : params 111 end 112 end
new_function(type)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 76 def self.new_function(type) 77 @new_function ||= Puppet::Functions.create_loaded_function(:new_error, type.loader) do 78 dispatch :create do 79 param 'String[1]', :uri 80 end 81 82 dispatch :from_hash do 83 param TYPE_URI_INIT_HASH, :hash 84 end 85 86 def create(uri) 87 URI.parse(uri) 88 end 89 90 def from_hash(init_hash) 91 sym_hash = {} 92 init_hash.each_pair { |k, v| sym_hash[k.to_sym] = v } 93 scheme = sym_hash[:scheme] 94 scheme_class = scheme.nil? ? URI::Generic : (URI.scheme_list[scheme.upcase] || URI::Generic) 95 scheme_class.build(sym_hash) 96 end 97 end 98 end
register_ptype(loader, ir)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 68 def self.register_ptype(loader, ir) 69 create_ptype(loader, ir, 'AnyType', 70 { 71 'parameters' => { KEY_TYPE => TypeFactory.optional(TYPE_URI_PARAM_TYPE), KEY_VALUE => nil } 72 } 73 ) 74 end
Public Instance Methods
==(o)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 118 def ==(o) 119 eql?(o) 120 end
[](key)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 122 def [](key) 123 URI_MEMBERS[key] 124 end
_pcore_init_hash()
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 146 def _pcore_init_hash 147 @parameters == nil? ? EMPTY_HASH : { 'parameters' => @parameters } 148 end
create(uri)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 86 def create(uri) 87 URI.parse(uri) 88 end
eql?(o)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 114 def eql?(o) 115 self.class == o.class && @parameters == o.parameters 116 end
from_hash(init_hash)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 90 def from_hash(init_hash) 91 sym_hash = {} 92 init_hash.each_pair { |k, v| sym_hash[k.to_sym] = v } 93 scheme = sym_hash[:scheme] 94 scheme_class = scheme.nil? ? URI::Generic : (URI.scheme_list[scheme.upcase] || URI::Generic) 95 scheme_class.build(sym_hash) 96 end
generalize()
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 126 def generalize 127 DEFAULT 128 end
hash()
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 130 def hash 131 self.class.hash ^ @parameters.hash 132 end
instance?(o, guard = nil)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 134 def instance?(o, guard = nil) 135 return false unless o.is_a?(URI) 136 return true if @parameters.nil? 137 138 eval = Parser::EvaluatingParser.singleton.evaluator 139 @parameters.keys.all? { |pn| eval.match?(o.send(pn), @parameters[pn]) } 140 end
roundtrip_with_string?()
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 142 def roundtrip_with_string? 143 true 144 end
Protected Instance Methods
_assignable?(o, guard = nil)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 152 def _assignable?(o, guard = nil) 153 return false unless o.class == self.class 154 return true if @parameters.nil? 155 o_params = o.parameters || EMPTY_HASH 156 157 eval = Parser::EvaluatingParser.singleton.evaluator 158 @parameters.keys.all? do |pn| 159 if o_params.include?(pn) 160 a = o_params[pn] 161 b = @parameters[pn] 162 eval.match?(a, b) || a.is_a?(PAnyType) && b.is_a?(PAnyType) && b.assignable?(a) 163 else 164 false 165 end 166 end 167 end
Private Instance Methods
uri_to_hash(uri)
click to toggle source
# File lib/puppet/pops/types/p_uri_type.rb 171 def uri_to_hash(uri) 172 result = {} 173 scheme = uri.scheme 174 unless scheme.nil? 175 scheme = scheme.downcase 176 result[SCHEME] = scheme 177 end 178 result[USERINFO] = uri.userinfo unless uri.userinfo.nil? 179 result[HOST] = uri.host.downcase unless uri.host.nil? || uri.host.empty? 180 result[PORT] = uri.port.to_s unless uri.port.nil? || uri.port == 80 && 'http' == scheme || uri.port == 443 && 'https' == scheme 181 result[PATH] = uri.path unless uri.path.nil? || uri.path.empty? 182 result[QUERY] = uri.query unless uri.query.nil? 183 result[FRAGMENT] = uri.fragment unless uri.fragment.nil? 184 result[OPAQUE] = uri.opaque unless uri.opaque.nil? 185 result.empty? ? nil : result 186 end