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