module Synchronisable::DSL::Macro::ClassMethods
Public Instance Methods
attribute(*args)
click to toggle source
Defines a new attribute.
@overload attribute(*attrs, options)
@param attrs [Array] attributes @param options [Hash] @option options :default default value, procs & lambdas are lazily evaluated @option options [Lambda] :converter method that will be lazily applied to the source value in order to convert it to the desired type
@overload attribute(*attrs)
@api private
# File lib/synchronisable/dsl/macro.rb, line 68 def attribute(*args) define_expressions(Attribute, args) end
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/synchronisable/dsl/macro.rb, line 50 def inherited(subclass) super class_attributes[subclass] = Hash[class_attributes[self].map { |k, v| [k, v.clone] }] end
method(*args)
click to toggle source
Defines a new method.
@overload method(*attrs, options)
@param attrs [Array] attributes @param options [Hash] @option options :default default value, procs & lambdas are lazily evaluated
@overload method(*attrs)
@api private
# File lib/synchronisable/dsl/macro.rb, line 82 def method(*args) define_expressions(Method, args) end
Private Instance Methods
define_expressions(klass, args)
click to toggle source
# File lib/synchronisable/dsl/macro.rb, line 88 def define_expressions(klass, args) options = args.extract_options! args.each do |attr| name = attr.to_sym class_attributes[self][name] = klass.new(options) define_singleton_method(name) do |*params, &block| class_attributes[self][name].handle(params, &block) end end end