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