Module: Gliffynator::DSL

Included in:
Diagram
Defined in:
lib/gliffynator/dsl.rb

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# 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

Instance Method Details

#actor(*args) ⇒ Object



15
16
17
18
19
20
# 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) ⇒ Object



10
11
12
13
# 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) ⇒ Object



3
4
5
6
7
8
# 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