#!/usr/bin/ruby
# coding: utf-8

require 'nokogiri'

LogLevel=1
raise ArgumentError, 'Language and source/destination files not specified' if ARGV.size != 3
lang = ARGV[0]
srcfile = ARGV[1]
dstfile = ARGV[2]

f=File.open(srcfile)
xml = Nokogiri::XML(f)

def log(level,what)
  indicators = %w(! • # -)
  if level >= LogLevel
    print indicators[level]
  else
    print "\n%s %s\n" % ['*' * (level+1), what]
  end
end

log 0, 'replace images with translated versions'
xml.search('imagedata').each do |img|
  # Included images are in the 'Pictures' directory. Translated images
  # are in Pictures/[langcode]/. Only translated images need to be
  # included.
  orig_img = img.attributes['fileref'].text
  trans_img = orig_img.gsub(/Pictures/, "Pictures/#{lang}")
  next if orig_img == trans_img

  if File.exists?(trans_img)
    log 1, 'Replaced %s by %s' % [orig_img, trans_img]
    img.set_attribute('fileref', trans_img)
  end
end

log 0, 'Writing processed file'
# Unable to figure out API way to replace DOCTYPE
data = xml.to_xml()
File.open(dstfile, 'w') {|f| f.write(data)}
