Module: AbideDevUtils::Ppt::CodeGen::DataTypes

Included in:
AbideDevUtils::Ppt::CodeIntrospection::Declaration, AbideDevUtils::Ppt::CodeIntrospection::Parameter
Defined in:
lib/abide_dev_utils/ppt/code_gen/data_types.rb

Instance Method Summary collapse

Instance Method Details

#display_type_expr(param) ⇒ Object

Displays a Puppet type expression (type signature) as a string

Parameters:

  • param (Puppet::Pops::Model::Parameter)

    AST Parameter node of a parsed Puppet manifest



28
29
30
31
32
33
34
35
36
37
# File 'lib/abide_dev_utils/ppt/code_gen/data_types.rb', line 28

def display_type_expr(param)
  te = param.respond_to?(:type_expr) ? param.type_expr : param
  if te.respond_to? :left_expr
    display_type_expr_with_left_expr(te)
  elsif te.respond_to? :cased_value
    te.cased_value
  elsif te.respond_to? :value
    te.value
  end
end

#display_type_expr_with_left_expr(te) ⇒ Object

Used by #display_type_expr



40
41
42
43
44
45
46
47
# File 'lib/abide_dev_utils/ppt/code_gen/data_types.rb', line 40

def display_type_expr_with_left_expr(te)
  cased = nil
  keys = nil
  cased = te.left_expr.cased_value if te.left_expr.respond_to? :cased_value
  keys = te.keys.map { |x| display_type_expr(x) }.to_s if te.respond_to? :keys
  keys.tr!('"', '') unless cased == 'Enum'
  "#{cased}#{keys}"
end

#display_value(val) ⇒ Object

Displays a Puppet type value as a string



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/abide_dev_utils/ppt/code_gen/data_types.rb', line 14

def display_value(val)
  if val.is_a?(Puppet::Pops::Model::LiteralUndef)
    'undef'
  elsif val.respond_to?(:value)
    display_value(val.value)
  elsif val.respond_to?(:cased_value)
    display_value(val.cased_value)
  else
    val
  end
end

#infer_data_type(data) ⇒ Object



9
10
11
# File 'lib/abide_dev_utils/ppt/code_gen/data_types.rb', line 9

def infer_data_type(data)
  Puppet::Pops::Types::TypeCalculator.infer(data).to_s
end