Module: SingleWriteAccessors::ClassMethods
- Defined in:
- lib/gmail-britta.rb
Instance Method Summary collapse
- #ivar_name(name) ⇒ Object
- #single_write_accessor(name, gmail_name, &block) ⇒ Object
- #single_write_accessors ⇒ Object
- #single_write_boolean_accessor(name, gmail_name) ⇒ Object
Instance Method Details
#ivar_name(name) ⇒ Object
18 19 20 |
# File 'lib/gmail-britta.rb', line 18 def ivar_name(name) "@#{name}".intern end |
#single_write_accessor(name, gmail_name, &block) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/gmail-britta.rb', line 26 def single_write_accessor(name, gmail_name, &block) single_write_accessors[name] = gmail_name ivar_name = self.ivar_name(name) define_method(name) do |words| if instance_variable_get(ivar_name) raise "Only one use of #{name} is permitted per filter" end instance_variable_set(ivar_name, words) end define_method("get_#{name}") do instance_variable_get(ivar_name) end if block_given? define_method("output_#{name}") do instance_variable_get(ivar_name) && block.call(instance_variable_get(ivar_name)) end else define_method("output_#{name}") do instance_variable_get(ivar_name) end end end |
#single_write_accessors ⇒ Object
22 23 24 |
# File 'lib/gmail-britta.rb', line 22 def single_write_accessors @single_write_accessors ||= {} end |
#single_write_boolean_accessor(name, gmail_name) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/gmail-britta.rb', line 49 def single_write_boolean_accessor(name, gmail_name) single_write_accessors[name] = gmail_name ivar_name = self.ivar_name(name) define_method(name) do |*args| value = args.length > 0 ? args[0] : true if instance_variable_get(ivar_name) raise "Only one use of #{name} is permitted per filter" end instance_variable_set(ivar_name, value) end define_method("get_#{name}") do instance_variable_get(ivar_name) end define_method("output_#{name}") do instance_variable_get(ivar_name) end end |