From: Martin DeMello Date: 2005-09-16T04:06:33+09:00 Subject: Re: Appropriate use of "inject()" ? 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