module Gliffynator::DSL

Public Instance Methods

actor(*args) click to toggle source
# File lib/gliffynator/dsl.rb, line 15
def actor(*args)
  self.objects << Gliffynator::Actor.create(
    get_id_and_increment(Gliffynator::Actor),
    *args
  )
end
add_arrow(*args) click to toggle source
# File lib/gliffynator/dsl.rb, line 10
def add_arrow(*args)
  id = get_id_and_increment(Gliffynator::Arrow)
  self.objects << Gliffynator::Arrow.create(id, *args)
end
get_id_and_increment(klass) click to toggle source
# File lib/gliffynator/dsl.rb, line 3
def get_id_and_increment(klass)
  id = self.objects.global_id_counter
  self.objects.global_id_counter += klass.id_usage || 1

  id
end
method_missing(m, *args, &block) click to toggle source
# File lib/gliffynator/dsl.rb, line 22
def method_missing(m, *args, &block)
  begin
    class_name = "Gliffynator::" + m.to_s.split("_").collect(&:capitalize).join
    klass = instance_eval(class_name)

    self.objects << klass.create(
      get_id_and_increment(klass),
      *args
    )
  rescue NameError
    raise NoMethodError, "Unknown shape #{class_name}"
  end
end