Sha256: 8d4df4cec5d6f469f9d0e049c0df8860ab18ca540c8e7040bfae43f975e0bb93
Contents?: true
Size: 1.63 KB
Versions: 28
Compression:
Stored size: 1.63 KB
Contents
# frozen_string_literal: true # Literal values for # # * String # * Numbers # * Booleans # * Undef (produces nil) # * Array # * Hash where keys must be Strings # * QualifiedName # # Not considered literal: # # * QualifiedReference # i.e. File, FooBar # * Default is not accepted as being literal # * Regular Expression is not accepted as being literal # * Hash with non String keys # * String with interpolation # class Puppet::Pops::Evaluator::JsonStrictLiteralEvaluator # include Puppet::Pops::Utils COMMA_SEPARATOR = ', ' def initialize @@literal_visitor ||= Puppet::Pops::Visitor.new(self, "literal", 0, 0) end def literal(ast) @@literal_visitor.visit_this_0(self, ast) end def literal_Object(o) throw :not_literal end def literal_Factory(o) literal(o.model) end def literal_Program(o) literal(o.body) end def literal_LiteralString(o) o.value end def literal_QualifiedName(o) o.value end def literal_LiteralNumber(o) o.value end def literal_LiteralBoolean(o) o.value end def literal_LiteralUndef(o) nil end def literal_ConcatenatedString(o) # use double quoted string value if there is no interpolation throw :not_literal unless o.segments.size == 1 && o.segments[0].is_a?(Puppet::Pops::Model::LiteralString) o.segments[0].value end def literal_LiteralList(o) o.values.map { |v| literal(v) } end def literal_LiteralHash(o) o.entries.each_with_object({}) do |entry, result| key = literal(entry.key) throw :not_literal unless key.is_a?(String) result[key] = literal(entry.value) end end end
Version data entries
28 entries across 28 versions & 1 rubygems