Sha256: 967bc02d30c909c2ab6583170e7a8c3428de29912403934d460d4cfba75b4b6e

Contents?: true

Size: 1.35 KB

Versions: 15

Compression:

Stored size: 1.35 KB

Contents

# HoboSupport - Metaid

    doctest_require: '../../lib/hobo_support'
{.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

15 entries across 15 versions & 1 rubygems

Version Path
hobo_support-2.2.6 test/hobosupport/metaid.rdoctest
hobo_support-2.2.5 test/hobosupport/metaid.rdoctest
hobo_support-2.2.4 test/hobosupport/metaid.rdoctest
hobo_support-2.2.3 test/hobosupport/metaid.rdoctest
hobo_support-2.2.2 test/hobosupport/metaid.rdoctest
hobo_support-2.2.1 test/hobosupport/metaid.rdoctest
hobo_support-2.2.0 test/hobosupport/metaid.rdoctest
hobo_support-2.1.2 test/hobosupport/metaid.rdoctest
hobo_support-2.1.1 test/hobosupport/metaid.rdoctest
hobo_support-2.1.0 test/hobosupport/metaid.rdoctest
hobo_support-2.1.0.pre4 test/hobosupport/metaid.rdoctest
hobo_support-2.1.0.pre3 test/hobosupport/metaid.rdoctest
hobo_support-2.1.0.pre2 test/hobosupport/metaid.rdoctest
hobo_support-2.1.0.pre1 test/hobosupport/metaid.rdoctest
hobo_support-2.0.1 test/hobosupport/metaid.rdoctest