class UnitSoup::Mix

Attributes

name[R]
rules[R]

Public Class Methods

define(name, &block) click to toggle source
# File lib/unit_soup/mix.rb, line 7
def self.define(name, &block)
  mix = Mix.new name
  if(block)
    block.arity < 1 ? mix.instance_eval(&block) : block.call(mix)
  end
  mix
end
new(name, &block) click to toggle source
# File lib/unit_soup/mix.rb, line 17
def initialize(name, &block)
  @name = name
  @rules = Set.new
  if(block)
    block.arity < 1 ? instance_eval(&block) : block.call(self)
  end
end

Public Instance Methods

<<(arg) click to toggle source
# File lib/unit_soup/mix.rb, line 25
def <<(arg)
  new_rules = []
  if arg.is_a? Mix
    new_rules += arg.rules.to_a
  elsif arg.is_a? Rule
    new_rules << arg
  elsif arg.is_a? Enumerable
    new_rules += arg.map do |a|
      if a.is_a? Rule
        a
      else
        Rule.new(a)
      end
    end
  else
    new_rules << Rule.new(arg)
  end
  new_rules.each {|r| @rules.add r}
end
Also aliased as: add
add(arg)
Alias for: <<
add_rules_from_file(file) click to toggle source
# File lib/unit_soup/mix.rb, line 47
def add_rules_from_file(file)
  #TODO: parse rules from file
end