Sha256: 8cb015d46d2436996623e717a804b43a18eff92a56db9ae82173e9ed60f106ad

Contents?: true

Size: 1.77 KB

Versions: 16

Compression:

Stored size: 1.77 KB

Contents

require 'puppet/generate/models/type/property'

module Puppet
  module Generate
    module Models
      module Type
        # A model for Puppet resource types.
        class Type
          # Gets the name of the type as a Puppet string literal.
          attr_reader :name

          # Gets the doc string of the type.
          attr_reader :doc

          # Gets the properties of the type.
          attr_reader :properties

          # Gets the parameters of the type.
          attr_reader :parameters

          # Gets the title patterns of the type
          attr_reader :title_patterns

          # Gets the isomorphic member attribute of the type
          attr_reader :isomorphic

          # Initializes a type model.
          # @param type [Puppet::Type] The Puppet type to model.
          # @return [void]
          def initialize(type)
            @name = Puppet::Pops::Types::StringConverter.convert(type.name.to_s, '%p')
            @doc = type.doc.strip
            @properties = type.properties.map { |p| Property.new(p) }
            @parameters = type.parameters.map do |name|
              Property.new(type.paramclass(name))
            end
            @title_patterns = Hash[type.title_patterns.map do |mapping|
              [
                "/#{mapping[0].source.gsub(/\//, '\/')}/",
                mapping[1].map { |names|
                  next if names.empty?
                  raise Puppet::Error, 'title patterns that use procs are not supported.' if names.size != 1
                  Puppet::Pops::Types::StringConverter.convert(names[0].to_s, '%p')
                }
              ]
            end]
            @isomorphic = type.isomorphic?
          end

          def render(template)
            template.result(binding)
          end
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
puppet-4.7.1 lib/puppet/generate/models/type/type.rb
puppet-4.7.1-x86-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.7.1-x64-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.7.1-universal-darwin lib/puppet/generate/models/type/type.rb
puppet-4.7.0 lib/puppet/generate/models/type/type.rb
puppet-4.7.0-x86-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.7.0-x64-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.7.0-universal-darwin lib/puppet/generate/models/type/type.rb
puppet-4.6.2 lib/puppet/generate/models/type/type.rb
puppet-4.6.2-x86-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.6.2-x64-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.6.2-universal-darwin lib/puppet/generate/models/type/type.rb
puppet-4.6.1-x86-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.6.1 lib/puppet/generate/models/type/type.rb
puppet-4.6.1-x64-mingw32 lib/puppet/generate/models/type/type.rb
puppet-4.6.1-universal-darwin lib/puppet/generate/models/type/type.rb