Class: VXML

Inherits:
Object
  • Object
show all
Defined in:
lib/vxml-tools/vxml.rb

Overview

VXML

Example

vxml =
  VXML.new do |v|
    v.prompt "Welcome to All"
    v.if_cond "1==1" do |v|
      v.prompt "Both are equal"
    end
  end
vxml.to_s  

( or )  

vxml = VXML.new
vxml.prompt "Welcome to All"
ifbk = vxml.if_cond "1=="
  ifbk.prompt "Both are equal"
vxml.to_s

Instance Method Summary collapse

Constructor Details

#initialize(tag = 'vxml', options = { :version => "2.0", :xmlns =>"http://www.w3.org/2001/vxml" }, &block) ⇒ VXML

Returns a new instance of VXML.



21
22
23
24
25
26
27
28
# File 'lib/vxml-tools/vxml.rb', line 21

def initialize( tag = 'vxml', options = { :version => "2.0", :xmlns =>"http://www.w3.org/2001/vxml" }, &block )
  @tag = tag
  @options = options
  @contents = []
  if( block )
    block.call(self)
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(key, *values, &block) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/vxml-tools/vxml.rb', line 71

def method_missing( key, *values, &block )
  keys = key.to_s.split(/_/)
  tag = keys.shift
  options = {}

  keys.each{|key|
    options[key] = values.shift
  }

  v = VXML.new( tag, options )
  values.each{|val|
    if( val.is_a? Hash )
      v.options.merge! val 
    else
      v.string val
    end
  }

  if( block )
    block.call( v )
  end

  push( v )
end

Instance Method Details

#optionsObject



30
31
32
# File 'lib/vxml-tools/vxml.rb', line 30

def options
  @options
end

#process_contentObject



56
57
58
59
60
# File 'lib/vxml-tools/vxml.rb', line 56

def process_content
  @contents.collect{|cont|
    cont.to_s 
  }.join("")
end

#process_optionsObject



46
47
48
49
50
51
52
53
54
# File 'lib/vxml-tools/vxml.rb', line 46

def process_options
  if( @options.size > 0 )
    " " + @options.collect{|key,val|
      "#{key}=\"#{val}\""
    }.join(" ") 
  else
    ""
  end
end

#push(obj) ⇒ Object



66
67
68
69
# File 'lib/vxml-tools/vxml.rb', line 66

def push( obj )
  @contents.push( obj )
  obj
end

#string(str) ⇒ Object



62
63
64
# File 'lib/vxml-tools/vxml.rb', line 62

def string( str )
  push( str )
end

#to_sObject



34
35
36
# File 'lib/vxml-tools/vxml.rb', line 34

def to_s
  "<#{@tag}#{process_options}>#{process_content}</#{@tag}>"
end

#to_vxmlObject



38
39
40
# File 'lib/vxml-tools/vxml.rb', line 38

def to_vxml
  '<?xml version="1.0"?>' + self.to_s
end

#to_xmlObject



42
43
44
# File 'lib/vxml-tools/vxml.rb', line 42

def to_xml
  self.to_vxml
end