class Smelter::DefinitionProxy

Attributes

extensions[R]
script_id[R]

Public Class Methods

extension_class() click to toggle source
# File lib/smelter/definition_proxy.rb, line 41
def self.extension_class
  @extension_class
end
extension_class=(val) click to toggle source
# File lib/smelter/definition_proxy.rb, line 37
def self.extension_class=(val)
  @extension_class = val
end
new(script_id) click to toggle source
# File lib/smelter/definition_proxy.rb, line 6
def initialize(script_id)
  @script_id = script_id
end

Public Instance Methods

extension(&block) click to toggle source
# File lib/smelter/definition_proxy.rb, line 33
def extension(&block)
  self.class.extension_class.register(script_id, &block)
end
script(&block) click to toggle source
# File lib/smelter/definition_proxy.rb, line 14
def script(&block)
  runner = ScriptRunner.new

  # Define all locally registered extensions on this runner instance
  if self.class.extension_class
    self.class.extension_class.registry.each_pair do |extension_id, block|
      next unless matches_extensions_glob?(extension_id)
      runner.instance_eval(&block)
    end
  end

  # Set up runner instance for use
  if block_given?
    runner.instance_eval(&block)
  end

  runner
end

Private Instance Methods

matches_extensions_glob?(extension_id) click to toggle source
# File lib/smelter/definition_proxy.rb, line 47
def matches_extensions_glob?(extension_id)
  if @extensions.is_a?(String)
    File.fnmatch?(@extensions, extension_id)
  else
    @extensions.select { |ext| File.fnmatch?(ext, extension_id) }.any?
  end
end