From: Brian Candler on 5 Jul 2010 06:25 Thomas Sawyer wrote: > Library: foo-bar > Directory: lib/foo/bar > Namespace: Foo::Bar > > Library: foo_bar > Directory: lib/foo_bar > Namespace: FooBar > > That being the case I think Ruby needs to include methods to make it > easy to translate between these. In ActiveSupport these methods are > String#pathize and String#methodize. I would think there would also be > something like String#modulize. Perhaps you're thinking of camelize and underscore in lib/active_support/inflector.rb # Examples: # "active_record".camelize # => "ActiveRecord" # "active_record".camelize(:lower) # => "activeRecord" # "active_record/errors".camelize # => "ActiveRecord::Errors" # "active_record/errors".camelize(:lower) # => "activeRecord::Errors" # Examples: # "ActiveRecord".underscore # => "active_record" # "ActiveRecord::Errors".underscore # => active_record/errors Each of these methods is only a few lines. I've seen them copy-pasted in several projects... -- Posted via http://www.ruby-forum.com/.
From: Rick DeNatale on 5 Jul 2010 11:10 On Mon, Jul 5, 2010 at 6:25 AM, Brian Candler <b.candler(a)pobox.com> wrote: > Thomas Sawyer wrote: >> Library: foo-bar >> Directory: lib/foo/bar >> Namespace: Foo::Bar >> >> Library: foo_bar >> Directory: lib/foo_bar >> Namespace: FooBar >> >> That being the case I think Ruby needs to include methods to make it >> easy to translate between these. In ActiveSupport these methods are >> String#pathize and String#methodize. I would think there would also be >> something like String#modulize. > > Perhaps you're thinking of camelize and underscore in > lib/active_support/inflector.rb > > # Examples: > # "active_record".camelize # => "ActiveRecord" > # "active_record".camelize(:lower) # => "activeRecord" > # "active_record/errors".camelize # => > "ActiveRecord::Errors" > # "active_record/errors".camelize(:lower) # => > "activeRecord::Errors" > > # Examples: > # "ActiveRecord".underscore # => "active_record" > # "ActiveRecord::Errors".underscore # => active_record/errors > > Each of these methods is only a few lines. I've seen them copy-pasted in > several projects... There's also constantize ruby-1.8.7-p173 > "ActiveRecord".constantize => ActiveRecord ruby-1.8.7-p173 > "active_record".camelize.constantize => ActiveRecord ruby-1.8.7-p173 > "ActiveRecord::Errors".constantize => ActiveRecord::Errors Also a few lines of code, although there are two versions one for Ruby 1.9.2 because of changes to Module#const_get -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Github: http://github.com/rubyredrick Twitter: @RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale
From: Intransition on 5 Jul 2010 13:09 On Jul 5, 6:25 am, Brian Candler <b.cand...(a)pobox.com> wrote: > Thomas Sawyer wrote: > > Library: foo-bar > > Directory: lib/foo/bar > > Namespace: Foo::Bar > > > Library: foo_bar > > Directory: lib/foo_bar > > Namespace: FooBar > > > That being the case I think Ruby needs to include methods to make it > > easy to translate between these. In ActiveSupport these methods are > > String#pathize and String#methodize. I would think there would also be > > something like String#modulize. > > Perhaps you're thinking of camelize and underscore in > lib/active_support/inflector.rb Oh? My bad, I thought it had #pathize and #methodize too. > # Examples: > # "active_record".camelize # => "ActiveRecord" > # "active_record".camelize(:lower) # => "activeRecord" > # "active_record/errors".camelize # => > "ActiveRecord::Errors" > # "active_record/errors".camelize(:lower) # => > "activeRecord::Errors" > > # Examples: > # "ActiveRecord".underscore # => "active_record" > # "ActiveRecord::Errors".underscore # => active_record/errors > > Each of these methods is only a few lines. I've seen them copy-pasted in > several projects... In Facets those are #camelcase and #snakecase, but it also has the other methods -- No problem getting access to such methods. Just think Ruby needs to support something along these lines out the box if the correspondence should be considered a standard.
|
Pages: 1 Prev: File data extraction Next: undefined local variable or method `code_words' for main:Ob |