class Puppet::DataTypes::TypeBuilder

@api private

Attributes

implementation[RW]
implementation_class[RW]
interface[RW]

Public Class Methods

_pcore_type() click to toggle source
    # File lib/puppet/datatypes.rb
167 def self._pcore_type
168   @_pcore_type
169 end
new(type_name) click to toggle source
    # File lib/puppet/datatypes.rb
149 def initialize(type_name)
150   @type_name = type_name
151   @implementation = nil
152   @implementation_class = nil
153 end

Public Instance Methods

create_type(loader) click to toggle source
    # File lib/puppet/datatypes.rb
155 def create_type(loader)
156   raise ArgumentError, _('a data type must have an interface') unless @interface.is_a?(String)
157   created_type = Puppet::Pops::Types::PObjectType.new(
158     @type_name,
159     Puppet::Pops::Parser::EvaluatingParser.new.parse_string("{ #{@interface} }").body)
160 
161   if !@implementation_class.nil?
162     if @implementation_class < Puppet::Pops::Types::PuppetObject
163       @implementation_class.instance_eval do
164         include Puppet::Pops::Types::PuppetObject
165         @_pcore_type = created_type
166 
167         def self._pcore_type
168           @_pcore_type
169         end
170       end
171     else
172       Puppet::Pops::Loaders.implementation_registry.register_implementation(created_type, @implementation_class)
173     end
174     created_type.implementation_class = @implementation_class
175   elsif !@implementation.nil?
176     created_type.implementation_override = @implementation
177   end
178   created_type
179 end
has_implementation?() click to toggle source
    # File lib/puppet/datatypes.rb
181 def has_implementation?
182   !(@implementation_class.nil? && @implementation.nil?)
183 end