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