Class: Amrita2::Core::SpecOptionMeta

Inherits:
Object
  • Object
show all
Defined in:
lib/amrita2/core.rb

Overview

:nodoc:

Defined Under Namespace

Modules: CompilerOption, ElementExt, InheritableOption, MetaData, SymbolOption

Constant Summary collapse

@@options =
{}

Class Method Summary collapse

Class Method Details

.check_options(spec) ⇒ Object



745
746
747
748
749
750
751
752
753
754
755
# File 'lib/amrita2/core.rb', line 745

def self.check_options(spec)
  spec.option.each do |k, v|
    meta = @@options[k]
    case meta
    when nil
      raise NameError, "option #{k} was not defined"
    else
      meta.check_option(spec, k, v)
    end
  end
end

.define_element_ext(spec, name, sym, params, &block) ⇒ Object



778
779
780
781
782
783
# File 'lib/amrita2/core.rb', line 778

def self.define_element_ext(spec, name, sym, params, &block)
  meta = @@options[name]
  if meta 
    meta.define_element_ext(spec, name, sym, params || {}, &block)
  end
end

.define_option(name, meta = nil, *args) ⇒ Object



727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
# File 'lib/amrita2/core.rb', line 727

def self.define_option(name, meta=nil, *args)
  case meta
  when nil
    meta = Object.new
    meta.extend MetaData
  when MetaData
    # do nothing
  when Module
    m = Object.new
    m.extend meta
    meta = m
  end
  args.each do |mod|
    meta.extend mod
  end
  @@options[name] = meta
end

.get_option_meta(name) ⇒ Object



723
724
725
# File 'lib/amrita2/core.rb', line 723

def self.get_option_meta(name)
  @@options[name]
end

.inherit_option(spec, child_opt) ⇒ Object



768
769
770
771
772
773
774
775
776
# File 'lib/amrita2/core.rb', line 768

def self.inherit_option(spec, child_opt)
  spec.option.each do |k, v|
    meta = @@options[k]
    case meta
    when InheritableOption
      meta.inherite_option(k, v, child_opt)
    end
  end
end

.setup_compiler(spec, compiler) ⇒ Object



757
758
759
760
761
762
763
764
765
766
# File 'lib/amrita2/core.rb', line 757

def self.setup_compiler(spec, compiler)
  spec.option.each do |k, v|
    next unless v
    meta = @@options[k]
    case meta
    when CompilerOption
      compiler.extend meta 
    end
  end
end