T
Trans
In the upcoming release of Ruby Carats I have a little lib called
attr.rb.
What it does is define a mater #define_attribute which all attribute
defintions are routed thru. Then I redefine #attr (since current
definition is basically never used) to call #define_attribute that
takes multiple args. Here's an example:
.. attr :a, :a=
which is equivalent to:
.. attr_reader :a
.. attr_writer :a
It also has some extra freatures that are nice like:
.. attr :a?, :b!
which is the same as
.. def a?
.. @a ? true : @a
.. end
..
.. def b!(x)
.. @b.replace x
.. end
Also these return an array of the symbols of the methods that get
defined, so you can use public, private, protected on them. eg.
.. private attr :a
There are a couple of other features too, but I'll leave those aside
for now, as they are not important to this inquery.
So I have a few questions. First, what do you think of this in general?
Second, there is no "extra" convenient way to do an accessor b/c I
haven't been able to find a nice notation --one just has to put both,
'attr :a, :a='. Is this too inconvenient? Can anyone think of a good
notation?
Thanks,
T.
attr.rb.
What it does is define a mater #define_attribute which all attribute
defintions are routed thru. Then I redefine #attr (since current
definition is basically never used) to call #define_attribute that
takes multiple args. Here's an example:
.. attr :a, :a=
which is equivalent to:
.. attr_reader :a
.. attr_writer :a
It also has some extra freatures that are nice like:
.. attr :a?, :b!
which is the same as
.. def a?
.. @a ? true : @a
.. end
..
.. def b!(x)
.. @b.replace x
.. end
Also these return an array of the symbols of the methods that get
defined, so you can use public, private, protected on them. eg.
.. private attr :a
There are a couple of other features too, but I'll leave those aside
for now, as they are not important to this inquery.
So I have a few questions. First, what do you think of this in general?
Second, there is no "extra" convenient way to do an accessor b/c I
haven't been able to find a nice notation --one just has to put both,
'attr :a, :a='. Is this too inconvenient? Can anyone think of a good
notation?
Thanks,
T.