Skip to content

Instantly share code, notes, and snippets.

@bfolkens
Created July 24, 2018 04:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bfolkens/dd1bf80a9dc5966af952e2fcca54c339 to your computer and use it in GitHub Desktop.
Save bfolkens/dd1bf80a9dc5966af952e2fcca54c339 to your computer and use it in GitHub Desktop.
ERMAHGERD!
#!/usr/bin/env ruby
require 'rubygems'
require 'ermahgerd'
require 'yaml'
require 'awesome_print'
def deep_derp(h)
Marshal.load(Marshal.dump(h))
end
def interperlert(str, ar = [])
return [''] if str.to_s.size == 0
i = str.partition(/%{.+?}/).reject { |c| c.empty? }
if i.size == 1
return ar + i
else
n = i.pop
return interperlert(n, ar + i)
end
end
def gersbermps(str)
interperlert(str).map {|w| w =~ /%{.+?}/ ? w : Ermahgerd.translate(w) }.join('')
end
def trernslert(y, kerpie: false)
if y.has_key? 'en'
if kerpie
{ 'en' => y['en'], 'er' => trernslert(deep_derp(y['en'])) }
else
{ 'er' => trernslert(deep_derp(y['en'])) }
end
else
y.each_pair do |k, v|
if v.is_a?(Hash)
y[k] = trernslert(v)
elsif v.is_a?(Array)
y[k] = v
else
y[k] = gersbermps(v)
end
end
end
end
# TODO: Merks it erser n der prergremer
# find . -name "en.yml" | while read i; do echo $i `dirname $i`/er.yml; ./ermahgerd.rb < $i > `dirname $i`/er.yml; done
# Nerp kerpie
# find . -name "*.yml" | while read i; do ./ermahgerd.rb < $i > $i.new && mv -v $i.new $i; done
yerml = YAML.load(STDIN)
trernslerted = trernslert(yerml, kerpie: true)
STDOUT.write(trernslerted.to_yaml(line_width: -1))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment