Sha256: 83c629201e70c258ea6241d5626eaed9ea5219ee26eaa847737d5007d96a0209

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

def getter(*methods)
    methods.each do |method|
    class_eval %{
        def get_#{method}
            "#{method}:#\{#{method}\}"
        end
    }
    end
end

def private_attr_writer(*methods)
    methods.each do |method|
    class_eval %{
        attr_writer :#{method};private :#{method}=
    }
    end
end

def private_attr_accessor(*methods)
    methods.each do |method|
    class_eval %{
        attr_accessor :#{method};private :#{method}=
    }
    end
end

def attr_validate_reader(methods, regex)
    class_eval %{
        def #{methods}
            @#{methods}
        end
        def self.validate_#{methods}?(value)
            value.match(#{regex})
        end
        def #{methods}?
            !@#{methods}.nil?
        end
    }
end

def attr_validate_accessor(methods, regex)
    class_eval %{
        def #{methods}=(new_value)
            if new_value == nil || new_value !~ #{regex}
                raise ArgumentError
            end
            @#{methods} = new_value
        end
        attr_validate_reader :#{methods}, '#{regex}'
    }
end

def attr_is_have_reader(methods)
    class_eval %{
        def #{methods}
            @#{methods}
        end
        def #{methods}?
            !@#{methods}.nil?
        end
    }
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rybish_code-2.0.0 lib/source/support/meta_code.rb
rybish_code-1.1.6 lib/source/support/meta_code.rb