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
168 def self._pcore_type
169   @_pcore_type
170 end
new(type_name) click to toggle source
    # File lib/puppet/datatypes.rb
150 def initialize(type_name)
151   @type_name = type_name
152   @implementation = nil
153   @implementation_class = nil
154 end

Public Instance Methods

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