Sha256: 95471b757c4d91ef1c34c58a8d16f28bf59898acf754d9d284322b3c2f688adf

Contents?: true

Size: 1.35 KB

Versions: 16

Compression:

Stored size: 1.35 KB

Contents

# HoboSupport - Metaid

    doctest_require: '../../lib/hobosupport'
{.hidden}

Why the Luck Stiff's essential meta-programming additions to Object. These are probably distributed elsewhere, but they're small enough to throw them in to HoboSupport and remove an external dependency.

## `Object#metaclass`

Returns the "metaclass", "eigenclass" or "singleton class" of a given ruby Object

    >> o = Object.new
    >> def o.foo; ;123; end
    >> o.foo
    => 123
    >> o.metaclass.method_defined?(:foo)
    => true

## `Object#meta_eval`

* `object.meta_eval(string)`
* `object.meta_eval { block }`

Evaluates ruby source or a block in the context of the metaclass.

    >> File.meta_eval "alias_method :b, :basename"
    >> File.b "a/b"
    => "b"

And with a block

    >> File.meta_eval { alias_method :b2, :basename }
    >> File.b2 "a/b"
    => "b"

## `Object#metaclass_eval`

* `object.metaclass_eval(string)`
* `object.metaclass_eval { block }`

Like `#meta_eval`, but does a `class_eval` instead of an `instance_eval`

    >> File.metaclass_eval "def b3(path); basename(path); end"
    >> File.b3 "a/b"
    => "b"

And with a block

    >> File.metaclass_eval { def b4(path); basename(path); end }
    >> File.b4 "a/b"
    => "b"


## `Object#meta_def`

    >> String.meta_def(:backwards_new) { |s| s.reverse }
    >> String.backwards_new "strange"
    => "egnarts"

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
hobosupport-1.1.0 test/hobosupport/metaid.rdoctest
hobosupport-1.0.3 test/hobosupport/metaid.rdoctest
hobosupport-1.1.0.pre4 test/hobosupport/metaid.rdoctest
hobosupport-1.1.0.pre3 test/hobosupport/metaid.rdoctest
hobosupport-1.1.0.pre2 test/hobosupport/metaid.rdoctest
hobosupport-1.1.0.pre0 test/hobosupport/metaid.rdoctest
hobosupport-1.0.2 test/hobosupport/metaid.rdoctest
hobosupport-1.0.1 test/hobosupport/metaid.rdoctest
hobosupport-1.0.0 test/hobosupport/metaid.rdoctest
hobosupport-0.9.106 test/hobosupport/metaid.rdoctest
hobosupport-0.9.105 test/hobosupport/metaid.rdoctest
hobosupport-0.9.104 test/hobosupport/metaid.rdoctest
hobosupport-0.9.103 test/hobosupport/metaid.rdoctest
hobosupport-0.9.102 test/hobosupport/metaid.rdoctest
hobosupport-0.9.101 test/hobosupport/metaid.rdoctest
hobosupport-0.9.100 test/hobosupport/metaid.rdoctest