2014-01-30 120 views
1

我有以下的CSV例如:紅寶石:CSV到YAML

en.activerecord.models.admin_user.one;Guide 
en.activerecord.models.admin_user.other;Guides 
en.simple_captcha.placeholder;Type here 

是否有紅寶石的寶石或方法來把它變成一個YAML文件:

en: 
    activerecord: 
    models: 
     admin_user: 
     one: Guide 
     other: Guides 
    simple_captcha: 
    placeholder: Type here 

我還在努力(使用樹數據模型)但沒有結果。

任何想法?

+0

將您的CSV轉換爲散列,然後將散列寫入YAML。關於將點分隔鍵轉換爲嵌套散列有很多問題。 – meagar

+0

好問題... –

回答

1
require 'yaml' 
hash = {} 
file = "en.activerecord.models.admin_user.one;Guide 
en.activerecord.models.admin_user.other;Guides 
en.simple_captcha.placeholder;Type here" 
file.split("\n").each { |line| hash.deep_merge!(line.split(/\.|;/).reverse.inject() { |m,v| {v => m} }) } 

puts YAML.dump(hash) 
--- 
en: 
    activerecord: 
    models: 
     admin_user: 
     one: Guide 
     other: Guides 
    simple_captcha: 
    placeholder: Type here 
+0

謝謝。哈希應該是{}在開始? –

+0

用於將文件轉換爲rails中的本地化yamls。 另請注意,'deep_merge!'方法是一個rails方法,所以不能直接在普通的ruby腳本中使用。 – Swaps