Module | Icalendar::DateProp::ClassMethods |
In: |
lib/icalendar/helpers.rb
|
This is made a sub-module just so it can be added as class methods rather than instance methods.
# File lib/icalendar/helpers.rb, line 38 38: def date_property(dp, alias_name = nil) 39: dp = "#{dp}".strip.downcase 40: getter = dp 41: setter = "#{dp}=" 42: query = "#{dp}?" 43: 44: unless instance_methods.include? getter 45: code = "def \#{getter}(*a)\nif a.empty?\n@properties[\#{dp.upcase}]\nelse\nself.\#{dp} = a.first\nend\nend\n" 46: 47: module_eval code 48: end 49: 50: unless instance_methods.include? setter 51: code = "def \#{setter} a\n@properties[\#{dp.upcase}] = a\nend\n" 52: 53: module_eval code 54: end 55: 56: unless instance_methods.include? query 57: code = "def \#{query}\n@properties.has_key?(\#{dp.upcase})\nend\n" 58: 59: module_eval code 60: end 61: 62: # Define the getter 63: getter = "get#{property.to_s.capitalize}" 64: define_method(getter.to_sym) do 65: puts "inside getting..." 66: getDateProperty(property.to_s.upcase) 67: end 68: 69: # Define the setter 70: setter = "set#{property.to_s.capitalize}" 71: define_method(setter.to_sym) do |*params| 72: date = params[0] 73: utc = params[1] 74: puts "inside setting..." 75: setDateProperty(property.to_s.upcase, date, utc) 76: end 77: 78: # Create aliases if a name was specified 79: # if not aliasName.nil? 80: # gasym = "get#{aliasName.to_s.capitalize}".to_sym 81: # gsym = getter.to_sym 82: # alias gasym gsym 83: 84: # sasym = "set#{aliasName.to_s.capitalize}".to_sym 85: # ssym = setter.to_sym 86: # alias sasym ssym 87: # end 88: end