Florian Growrote: > Luckily, I have already mapped the special method names. Let me use the > look up table from extract.rb: > > { > "+" => "op_plus", > "-" => "op_minus", > "+@" => "op_plus_self", > "-@" => "op_minus_self", > "*" => "op_mul", > "**" => "op_pow", > "/" => "op_div", > "%" => "op_mod", > "<<" => "op_lshift", > ">>" => "op_rshift", > "~" => "op_tilde", > "<=>" => "op_cmp", > "<" => "op_lt", > ">" => "op_gt", > "==" => "op_equal", > "<=" => "op_lt_eq", > ">=" => "op_gt_eq", > "===" => "op_case_eq", > "=~" => "op_apply", > "|" => "op_or", > "&" => "op_and", > "^" => "op_xor", > "[]" => "op_fetch", > "[]=" => "op_store" > } > > I'd suggest using foo_bang for foo!, foo_p for foo? and foo_setter for foo=. I've given this some more thought. If I do this, I could enforce a rule that says no nono-method is to start with 'op_'. While that's skirting potential clash, I think it would be okay. But I still have two others problems. How to deal with ?, !, =. That's a bit trickier, as its hard to enforce a rule related to those. Things like '_p', '_setter', have too great a chance for some actual method clash. So I have to figure something else out for that. Also, I have to distinguish class methods. Right now I do it with '::' prefix, which under URI translation if '%3A%3A'. What will I do here? "class_" prefix desn't work for the same reason as the above. Also, am I overlooking any other potential pitfalls? So here's an idea. While Ruby techinically allows any non-blank string as a method name (ie. define_method "whatever you want!@#$%") I am as sure as I can ever be that I will never use such a thing in Nano. Given this, I need only worry about the literal cases. Now in file systems the dash characeter '-' is pretty much unviserally accepted, but it's not allowed in literal method names (expect for the op) So what if I use that characeter as a distinguishing element? Would that work for you? So foo-bang, foo-p, foo-set, and class-foo, plus I might as well do: { "+" => "op-plus", "-" => "op-minus", "+@" => "op-plus-self", "-@" => "op-minus-self", "*" => "op-mul", "**" => "op-pow", "/" => "op-div", "%" => "op-mod", "<<" => "op-lshift", ">>" => "op-rshift", "~" => "op-tilde", "<=>" => "op-cmp", "<" => "op-lt", ">" => "op-gt", "==" => "op-equal", "<=" => "op-lt-eq", ">=" => "op-gt-eq", "===" => "op-case-eq", "=~" => "op-apply", "|" => "op-or", "&" => "op-and", "^" => "op-xor", "[]" => "op-fetch", "[]=" => "op-store" } I thik also I'd like to reduce all of them to a single dash if reasonably possible, which would change a few of them. What do you think of this? Thanks, T.