2014-01-30 6 views
1

У меня есть следующий Csv пример:Ruby: 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

полезен при преобразовании файлов в локализацию yamls в рельсах. Также обратите внимание, что метод 'deep_merge!' - это метод rails, поэтому его нельзя использовать непосредственно в простом рубиновом скрипте. – Swaps

Смежные вопросы