Skip to content

Instantly share code, notes, and snippets.

@benlangfeld
Created August 11, 2010 17:03
Show Gist options
  • Save benlangfeld/519328 to your computer and use it in GitHub Desktop.
Save benlangfeld/519328 to your computer and use it in GitHub Desktop.
module Adhearsion
module XMPP
module API
class ActiveCallStanza < ::Blather::XMPPNode
NS = 'X-urn:xmpp:sip:active-calls'.freeze
#
# @param [Hash, nil] options child elements
def self.new(options = {})
new_node = super "active-call"
options.each_pair do |key, value|
o = "#{key.to_s}=".to_sym
new_node.send o, value
end
new_node.namespace = NS
new_node
end
# def dialog_state
# content_from "dialog-state"
# end
#
# def dialog_state=(value)
# set_content_for "dialog-state", value
# end
MEMBERS = %w{
branch
call-setup-id
}
# generate accessors
MEMBERS.each do |member|
define_method(member.sub('-', '_')) do
content_from member
end
end
# generate setters
MEMBERS.each do |member|
member_clean = member.sub('-', '_')
define_method("#{member_clean}=(#{member_clean})") do
set_content_for member, member_clean
end
end
end
end
end
end
>> class A
>> MEMBERS = %w{branch call-setup-id}
>> MEMBERS.each do |member|
?> member_clean = member.sub '-', '_'
>> self.class.send :define_method, "#{member_clean}=(#{member_clean})" do
?> set_content_for member, member_clean
>> end
>> end
>> end
=> ["branch", "call-setup-id"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment