From: itsme213 Date: 2005-09-16T04:36:38+09:00 Subject: Re: Appropriate use of "inject()" ? Ah, I need to think more "functional programming". Thanks a bunch, all. Useful general lesson for me. "Martin DeMello" wrote in message news:3BjWe.204172$Hk.56955@pd7tw1no... > itsme213 wrote: > > I have a hash table HASH containing strings, and want to generate a string > > for an equivalent Javascript variable JS from it e.g. > > > > HASH = {'a' => 'A', 'b' => 'B'} > > > > "var JS = { 'a' : 'A', 'b' : 'B' }" > > > > I thought inject was just the ticket: > > > > 'var JS = {' + > > HASH.inject("") { |str, kv| str << "\n\t'#{kv[0]}' : #{kv[1]}, " } + > > "};" > > > > But this puts a "," after the last item. Is there a simple alternative? > > The simplest is the two-pass > > 'var JS = {' + HASH.map {|k,v| "'#{k}' : '#{v}'"}.join(",\n\t") + "};" > > #join has extra logic to specialcase the last element, which is painful > with #inject. > > martin