File: model_label_provider.rb

package info (click to toggle)
puppet-agent 7.23.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 19,092 kB
  • sloc: ruby: 245,074; sh: 456; makefile: 38; xml: 33
file content (134 lines) | stat: -rw-r--r-- 8,211 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
module Puppet::Pops
module Model
# A provider of labels for model object, producing a human name for the model object.
# As an example, if object is an ArithmeticExpression with operator +, `#a_an(o)` produces "a '+' Expression",
# #the(o) produces "the + Expression", and #label produces "+ Expression".
#
class ModelLabelProvider
  include LabelProvider

  def initialize
    @@label_visitor ||= Visitor.new(self,"label",0,0)
  end

  # Produces a label for the given objects type/operator without article.
  # If a Class is given, its name is used as label
  #
  def label o
    @@label_visitor.visit_this_0(self, o)
  end

  def label_Factory o                     ; label(o.model)                      end
  def label_Array o                       ; "Array"                             end
  def label_LiteralInteger o              ; "Literal Integer"                   end
  def label_LiteralFloat o                ; "Literal Float"                     end
  def label_ArithmeticExpression o        ; "'#{o.operator}' expression"        end
  def label_AccessExpression o            ; "'[]' expression"                   end
  def label_MatchExpression o             ; "'#{o.operator}' expression"        end
  def label_CollectExpression o           ; label(o.query)                      end
  def label_EppExpression o               ; "Epp Template"                      end
  def label_ExportedQuery o               ; "Exported Query"                    end
  def label_VirtualQuery o                ; "Virtual Query"                     end
  def label_QueryExpression o             ; "Collect Query"                     end
  def label_ComparisonExpression o        ; "'#{o.operator}' expression"        end
  def label_AndExpression o               ; "'and' expression"                  end
  def label_OrExpression o                ; "'or' expression"                   end
  def label_InExpression o                ; "'in' expression"                   end
  def label_AssignmentExpression o        ; "'#{o.operator}' expression"        end
  def label_AttributeOperation o          ; "'#{o.operator}' expression"        end
  def label_LiteralList o                 ; "Array Expression"                  end
  def label_LiteralHash o                 ; "Hash Expression"                   end
  def label_KeyedEntry o                  ; "Hash Entry"                        end
  def label_LiteralBoolean o              ; "Boolean"                           end
  def label_TrueClass o                   ; "Boolean"                           end
  def label_FalseClass o                  ; "Boolean"                           end
  def label_LiteralString o               ; "String"                            end
  def label_LambdaExpression o            ; "Lambda"                            end
  def label_LiteralDefault o              ; "'default' expression"              end
  def label_LiteralUndef o                ; "'undef' expression"                end
  def label_LiteralRegularExpression o    ; "Regular Expression"                end
  def label_Nop o                         ; "Nop Expression"                    end
  def label_NamedAccessExpression o       ; "'.' expression"                    end
  def label_NilClass o                    ; "Undef Value"                       end
  def label_NotExpression o               ; "'not' expression"                  end
  def label_VariableExpression o          ; "Variable"                          end
  def label_TextExpression o              ; "Expression in Interpolated String" end
  def label_UnaryMinusExpression o        ; "Unary Minus"                       end
  def label_UnfoldExpression o            ; "Unfold"                            end
  def label_BlockExpression o             ; "Block Expression"                  end
  def label_ApplyBlockExpression o        ; "Apply Block Expression"            end
  def label_ConcatenatedString o          ; "Double Quoted String"              end
  def label_HeredocExpression o           ; "'@(#{o.syntax})' expression"       end
  def label_HostClassDefinition o         ; "Host Class Definition"             end
  def label_FunctionDefinition o          ; "Function Definition"               end
  def label_PlanDefinition o              ; "Plan Definition"                   end
  def label_NodeDefinition o              ; "Node Definition"                   end
  def label_ResourceTypeDefinition o      ; "'define' expression"               end
  def label_ResourceOverrideExpression o  ; "Resource Override"                 end
  def label_Parameter o                   ; "Parameter Definition"              end
  def label_ParenthesizedExpression o     ; "Parenthesized Expression"          end
  def label_IfExpression o                ; "'if' statement"                    end
  def label_UnlessExpression o            ; "'unless' Statement"                end
  def label_CallNamedFunctionExpression o ; "Function Call"                     end
  def label_CallMethodExpression o        ; "Method call"                       end
  def label_ApplyExpression o             ; "'apply' expression"                end
  def label_CaseExpression o              ; "'case' statement"                  end
  def label_CaseOption o                  ; "Case Option"                       end
  def label_RenderStringExpression o      ; "Epp Text"                          end
  def label_RenderExpression o            ; "Epp Interpolated Expression"       end
  def label_RelationshipExpression o      ; "'#{o.operator}' expression"        end
  def label_ResourceBody o                ; "Resource Instance Definition"      end
  def label_ResourceDefaultsExpression o  ; "Resource Defaults Expression"      end
  def label_ResourceExpression o          ; "Resource Statement"                end
  def label_SelectorExpression o          ; "Selector Expression"               end
  def label_SelectorEntry o               ; "Selector Option"                   end
  def label_Integer o                     ; "Integer"                           end
  def label_Float o                       ; "Float"                             end
  def label_String o                      ; "String"                            end
  def label_Regexp o                      ; "Regexp"                            end
  def label_Object o                      ; "Object"                            end
  def label_Hash o                        ; "Hash"                              end
  def label_QualifiedName o               ; "Name"                              end
  def label_QualifiedReference o          ; "Type-Name"                         end
  def label_PAnyType o                    ; "#{o}-Type" end
  def label_ReservedWord o                ; "Reserved Word '#{o.word}'"         end
  def label_CatalogCollector o            ; "Catalog-Collector"                 end
  def label_ExportedCollector o           ; "Exported-Collector"                end
  def label_TypeAlias o                   ; "Type Alias"                        end
  def label_TypeMapping o                 ; "Type Mapping"                      end
  def label_TypeDefinition o              ; "Type Definition"                   end
  def label_Binary o                      ; "Binary"                            end
  def label_Sensitive o                   ; "Sensitive"                         end
  def label_Timestamp o                   ; "Timestamp"                         end
  def label_Timespan o                    ; "Timespan"                          end
  def label_Version o                     ; "Semver"                            end
  def label_VersionRange o                ; "SemverRange"                       end

  def label_PResourceType o
    if o.title
      "#{o} Resource-Reference"
    else
      "#{o}-Type"
    end
  end

  def label_Resource o
    'Resource Statement'
  end


  def label_Class o
    if o <= Types::PAnyType
      simple_name = o.name.split('::').last
      simple_name[1..-5] + "-Type"
    else
      n = o.name
      if n.nil?
        n = o.respond_to?(:_pcore_type) ? o._pcore_type.name : 'Anonymous Class'
      end
      n
    end
  end
end
end
end