Method: Puppet::Parser::Scope#transform_and_assert_classnames

Defined in:
lib/puppet/parser/scope.rb

#transform_and_assert_classnames(names) ⇒ Array<String>

Transforms references to classes to the form suitable for lookup in the compiler.

Makes names passed in the names array absolute if they are relative.

Transforms Class[] and Resource[] type references to class name or raises an error if a Class[] is unspecific, if a Resource is not a ‘class’ resource, or if unspecific (no title).

Parameters:

  • names to (optionally) make absolute

Returns:

  • names after transformation

API:

  • public



1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
# File 'lib/puppet/parser/scope.rb', line 1080

def transform_and_assert_classnames(names)
  names.map do |name|
    case name
    when NilClass
      raise ArgumentError, _("Cannot use undef as a class name")
    when String
      raise ArgumentError, _("Cannot use empty string as a class name") if name.empty?

      name.sub(/^([^:]{1,2})/, '::\1')

    when Puppet::Resource
      assert_class_and_title(name.type, name.title)
      name.title.sub(/^([^:]{1,2})/, '::\1')

    when Puppet::Pops::Types::PClassType
      # TRANSLATORS "Class" and "Type" are Puppet keywords and should not be translated
      raise ArgumentError, _("Cannot use an unspecific Class[] Type") unless name.class_name

      name.class_name.sub(/^([^:]{1,2})/, '::\1')

    when Puppet::Pops::Types::PResourceType
      assert_class_and_title(name.type_name, name.title)
      name.title.sub(/^([^:]{1,2})/, '::\1')
    end.downcase
  end
end