date_property (Icalendar::DateProp::ClassMethods)

    # File lib/icalendar/helpers.rb, line 38
          def date_property(dp, alias_name = nil)
            dp = "#{dp}".strip.downcase
            getter = dp
            setter = "#{dp}="
            query = "#{dp}?"

            unless instance_methods.include? getter
              code = "def \#{getter}(*a)\nif a.empty?\n@properties[\#{dp.upcase}]\nelse\nself.\#{dp} = a.first\nend\nend\n"

              module_eval code
            end

            unless instance_methods.include? setter
              code = "def \#{setter} a\n@properties[\#{dp.upcase}] = a\nend\n"

              module_eval code
            end

            unless instance_methods.include? query
              code = "def \#{query}\n@properties.has_key?(\#{dp.upcase})\nend\n"

              module_eval code
            end

            # Define the getter
            getter = "get#{property.to_s.capitalize}"
            define_method(getter.to_sym) do
              puts "inside getting..."
              getDateProperty(property.to_s.upcase)
            end

            # Define the setter
            setter = "set#{property.to_s.capitalize}"
            define_method(setter.to_sym) do |*params|
              date = params[0]
              utc = params[1]
              puts "inside setting..."
              setDateProperty(property.to_s.upcase, date, utc)
            end

            # Create aliases if a name was specified
    #         if not aliasName.nil?
    #           gasym = "get#{aliasName.to_s.capitalize}".to_sym
    #           gsym = getter.to_sym
    #           alias gasym gsym

    #           sasym = "set#{aliasName.to_s.capitalize}".to_sym
    #           ssym = setter.to_sym
    #           alias sasym ssym
    #        end
          end