Class: Puppet::Pops::Evaluator::Runtime3Converter
- Inherits:
- Object
- Object
- Puppet::Pops::Evaluator::Runtime3Converter
show all
- Defined in:
- lib/puppet/pops/evaluator/runtime3_converter.rb
Overview
Constant Summary collapse
- MAX_INTEGER =
Puppet::Pops::MAX_INTEGER
- MIN_INTEGER =
Puppet::Pops::MIN_INTEGER
Class Method Summary collapse
Instance Method Summary collapse
- #catalog_type_to_split_type_title(catalog_type) ⇒ Object
Produces an array with [type, title] from a PCatalogEntryType This method is used to produce the arguments for creation of reference resource instances (used when 3x is operating on a resource).
- #convert(o, scope, undef_value) ⇒ Object
Converts a 4x supported value to a 3x value.
- #convert_Array(o, scope, undef_value) ⇒ Object
- #convert_BigDecimal(o, scope, undef_value) ⇒ Object
- #convert_Hash(o, scope, undef_value) ⇒ Object
- #convert_Integer(o, scope, undef_value) ⇒ Object
- #convert_Iterator(o, scope, undef_value) ⇒ Object
- #convert_NilClass(o, scope, undef_value) ⇒ Object
- #convert_Object(o, scope, undef_value) ⇒ Object
- #convert_PAnyType(o, scope, undef_value) ⇒ Object
- #convert_PCatalogEntryType(o, scope, undef_value) ⇒ Object
- #convert_String(o, scope, undef_value) ⇒ Object
- #convert_Symbol(o, scope, undef_value) ⇒ Object
- #map_args(args, scope, undef_value) ⇒ Array
Converts 4x supported values to a 3x values.
Class Method Details
.convert(o, scope, undef_value) ⇒ Object
Converts 4x supported values to a 3x values. Same as calling Runtime3Converter.instance.convert(…)
33 34 35 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 33 def self.convert(o, scope, undef_value) @instance.convert(o, scope, undef_value) end |
Returns the singleton instance of this class.
39 40 41 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 39 def self.instance @instance end |
.map_args(args, scope, undef_value) ⇒ Array
Converts 4x supported values to a 3x values. Same as calling Runtime3Converter.instance.map_args(…)
22 23 24 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 22 def self.map_args(args, scope, undef_value) @instance.map_args(args, scope, undef_value) end |
Instance Method Details
#catalog_type_to_split_type_title(catalog_type) ⇒ Object
Produces an array with [type, title] from a PCatalogEntryType This method is used to produce the arguments for creation of reference resource instances (used when 3x is operating on a resource). Ensures that resources are not absolute.
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 137 def catalog_type_to_split_type_title(catalog_type) split_type = catalog_type.is_a?(Puppet::Pops::Types::PTypeType) ? catalog_type.type : catalog_type case split_type when Puppet::Pops::Types::PClassType class_name = split_type.class_name ['class', class_name.nil? ? nil : class_name.sub(/^::/, '')] when Puppet::Pops::Types::PResourceType type_name = split_type.type_name title = split_type.title if type_name =~ /^(::)?[Cc]lass$/ ['class', title.nil? ? nil : title.sub(/^::/, '')] else [type_name.nil? ? nil : type_name.sub(/^::/, '').downcase, title.nil? ? '' : title] end else raise ArgumentError, _("Cannot split the type %{class_name}, it represents neither a PClassType, nor a PResourceType.") % { class_name: catalog_type.class } end end |
#convert(o, scope, undef_value) ⇒ Object
Converts a 4x supported value to a 3x value.
61 62 63 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 61 def convert(o, scope, undef_value) @convert_visitor.visit_this_2(self, o, scope, undef_value) end |
#convert_Array(o, scope, undef_value) ⇒ Object
95 96 97 98 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 95 def convert_Array(o, scope, undef_value) ic = @inner_converter o.map { |x| ic.convert(x, scope, undef_value) } end |
#convert_BigDecimal(o, scope, undef_value) ⇒ Object
76 77 78 79 80 81 82 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 76 def convert_BigDecimal(o, scope, undef_value) f = o.to_f return f unless f != o raise Puppet::Error, "Use of a Ruby BigDecimal value outside Puppet Float range, got '#{o}'" end |
#convert_Hash(o, scope, undef_value) ⇒ Object
100 101 102 103 104 105 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 100 def convert_Hash(o, scope, undef_value) result = {} ic = @inner_converter o.each { |k, v| result[ic.convert(k, scope, undef_value)] = ic.convert(v, scope, undef_value) } result end |
#convert_Integer(o, scope, undef_value) ⇒ Object
69 70 71 72 73 74 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 69 def convert_Integer(o, scope, undef_value) return o unless o < MIN_INTEGER || o > MAX_INTEGER range_end = o > MAX_INTEGER ? 'max' : 'min' raise Puppet::Error, "Use of a Ruby Integer outside of Puppet Integer #{range_end} range, got '#{'0x%x' % o}'" end |
#convert_Iterator(o, scope, undef_value) ⇒ Object
107 108 109 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 107 def convert_Iterator(o, scope, undef_value) raise Puppet::Error, _('Use of an Iterator is not supported here') end |
#convert_NilClass(o, scope, undef_value) ⇒ Object
65 66 67 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 65 def convert_NilClass(o, scope, undef_value) @inner ? nil : undef_value end |
#convert_Object(o, scope, undef_value) ⇒ Object
91 92 93 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 91 def convert_Object(o, scope, undef_value) o end |
#convert_PAnyType(o, scope, undef_value) ⇒ Object
117 118 119 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 117 def convert_PAnyType(o, scope, undef_value) o end |
#convert_PCatalogEntryType(o, scope, undef_value) ⇒ Object
121 122 123 124 125 126 127 128 129 130 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 121 def convert_PCatalogEntryType(o, scope, undef_value) t, title = catalog_type_to_split_type_title(o) t = Runtime3ResourceSupport.find_resource_type(scope, t) unless t == 'class' || t == 'node' Puppet::Resource.new(t, title) end |
#convert_String(o, scope, undef_value) ⇒ Object
84 85 86 87 88 89 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 84 def convert_String(o, scope, undef_value) o.frozen? && !Puppet.run_mode.server? ? o.dup : o end |
#convert_Symbol(o, scope, undef_value) ⇒ Object
111 112 113 114 115 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 111 def convert_Symbol(o, scope, undef_value) return o unless o == :undef !@inner ? undef_value : nil end |
#map_args(args, scope, undef_value) ⇒ Array
Converts 4x supported values to a 3x values.
50 51 52 | # File 'lib/puppet/pops/evaluator/runtime3_converter.rb', line 50 def map_args(args, scope, undef_value) args.map { |a| convert(a, scope, undef_value) } end |