Writing data into yml file in a particular format

26 views
Skip to first unread message

nikhil rn

unread,
Dec 19, 2012, 12:37:23 AM12/19/12
to rubyonra...@googlegroups.com
Hi,

I have a hash in a controller file which I have to write into a YAML.yml
file in a particular format.

This is the code I am using in the controller to write to yml file.

"File.open("config/locales/output.yml", "w") {|f|
f.write(hash_data.to_yaml) }"

output.yml is the yml file.
hash_data is my hash which has a key having a hash to array of values.

Current output;
---
'01':
- red
- green


Expected output:
en:
01: "red, green"


Is this possible?

Regards,
Nikhil

--
Posted via http://www.ruby-forum.com/.

Nicolas Desprès

unread,
Dec 19, 2012, 5:04:17 AM12/19/12
to rubyonra...@googlegroups.com


On Wed, Dec 19, 2012 at 6:37 AM, nikhil rn <li...@ruby-forum.com> wrote:
Hi,

Hi,
 

I have a hash in a controller file which I have to write into a YAML.yml
file in a particular format.

This is the code I am using in the controller to write to yml file.

"File.open("config/locales/output.yml", "w") {|f|
f.write(hash_data.to_yaml) }"

output.yml is the yml file.
hash_data is my hash which has a key having a hash to array of values.

Current output;
---
'01':
- red
- green


Expected output:
en:
  01: "red, green"

Is this possible?

You could convert your array to a string before to call .to_yaml: [ 'red', 'green' ].join(', ')  

Cheers,
Nico


Matt Jones

unread,
Dec 19, 2012, 5:06:56 PM12/19/12
to rubyonra...@googlegroups.com


On Wednesday, 19 December 2012 00:37:23 UTC-5, Ruby-Forum.com User wrote:
Hi,

I have a hash in a controller file which I have to write into a YAML.yml
file in a particular format.

This is the code I am using in the controller to write to yml file.

"File.open("config/locales/output.yml", "w") {|f|
f.write(hash_data.to_yaml) }"

output.yml is the yml file.
hash_data is my hash which has a key having a hash to array of values.

Current output;
---
'01':
- red
- green


Expected output:
en:
  01: "red, green"

It's certainly possible, but if you want the output YAML to look like that you're going to need to put the *input* data into the same sort of format.  For instance, running the expected output (with quotes around 01, to avoid it being parsed as an integer) through YAML.load gives this Ruby result:

{"en"=>{"01"=>"red, green"}}

--Matt Jones
Reply all
Reply to author
Forward
0 new messages