2013-12-04 2 views
0

Переводчик полностью испортил файл yaml, скопировав все на слово (не спрашивайте).Скопировать форматирование yaml (indent) из одного файла в другой

Я уже очистил файл с помощью регулярных выражений, но теперь отсутствует отступ (интервал); все начинается с первого символа:

es: 
default_blocks: 
thank_you_html: "thank you text" 

вместо

en: 
    default_blocks: 
    thank_you_html: "thank you text" 

У вас есть хорошее представление о том, как автоматически копировать формат/структуру/отступа от правильного файла (скажем en.yml) к коррумпированному (скажем es.yml)? (Я использую textmate 2.0 в качестве редактора)

Спасибо!

ответ

0

Предполагая, что оригинал и перевод содержат одни и те же строки в каждой строке (для задачи отступа кроме), быстрый & грязный сценарий сканирования ведущие пробелы могут решить это:

#!/usr/bin/env ruby 
# encoding: UTF-8 

indented = File.readlines(ARGV[0]).map do |l| 
    l.scan(/^\s+/)[0] 
end.zip(File.readlines(ARGV[1])).map { |e| e.join }.join 

File.open(ARGV[1], "w") { |io| io.write(indented) } 

Сохранить его, сделать его исполняемый файл и вызвать

./script_name.rb en.yml es.yml 

Был бы не возиться с Textmate, если это не обычная задача, но вы можете легко превратить это в команду и либо приглашение для двух файлов через диалог или выбрать как в файловом браузере , откройте один из них на текущей вкладке и разделите их через переменные среды ($ TM_FILEPATH, $ TM_SELECTED_FILES)

+0

Спасибо, работает как шарм! Извините, но я не могу упрекнуть вас, но у меня низкая репутация. – ruby24

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