#!/usr/bin/env ruby
require_relative 'languages.rb'
include TeXLive
include Language::TeXLive
# this file auto-generates loaders for hyphenation patterns - to be improved
$package_name="hyph-utf8"
# TODO - make this a bit less hard-coded
$path_tex_generic="../../../tex/generic"
language_default = Language.new({
"code" => "(default)",
"name" => "english", "synonyms" => ["usenglish", "USenglish", "american"],
"hyphenmin" => [2,3],
"encoding" => "ascii",
"type" => "dictionary",
"authors" => [ "donald_knuth" ],
"licence" => "",
})
# add english to the list
# $l["default"] = language_default
# TODO: should be singleton
languages = Language.all.sort{|a,b| a.name <=> b.name}
$a = Author
language_grouping = {
'english' => ['default', 'en-gb', 'en-us'],
'latin' => ['la', 'la-x-classic'],
'norwegian' => ['nb', 'nn'],
'german' => ['de-1901', 'de-1996','de-ch-1901'],
'mongolian' => ['mn-cyrl', 'mn-cyrl-x-lmc'],
'greek' => ['el-monoton', 'el-polyton'],
'ancientgreek' => ['grc', 'grc-x-ibycus'],
'chinese' => ['zh-latn-pinyin'],
# TODO - until someone tells what to do
#'serbian' => ['sr-latn', 'sr-cyrl'],
'serbian' => ['sh-latn', 'sh-cyrl'],
}
space_leading = " "
space_tr = " "
Package.all.sort.each do |package|
first_line_printed = false
package.languages.each do |language|
if language != nil then
puts "#{space_leading}
"
line_content = ""
if not first_line_printed then
line_content = "#{package.name.capitalize}"
first_line_printed = true;
else
line_content = " "
end
puts "#{space_leading}#{space_tr}#{line_content} | "
# synonyms
if language.synonyms != nil and language.synonyms.length > 0 then
synonyms=", #{language.synonyms.join(', ')}"
else
synonyms=""
end
puts "#{space_leading}#{space_tr}#{language.name}#{synonyms} | "
# if language.use_old_patterns == false then
if language.use_old_loader then
url_patterns = ""
code = language.code
else
url_patterns = "#{$ctan_url}/patterns/tex/hyph-#{language.code}.tex"
code = "#{language.code}"
end
puts "#{space_leading}#{space_tr}#{code} | "
# lefthyphenmin/righthyphenmin
if language.hyphenmin == nil or language.hyphenmin.length == 0 then
lmin = ''
rmin = ''
elsif language.filename_old_patterns == "zerohyph.tex" then
lmin = ''
rmin = ''
else
lmin = language.hyphenmin[0]
rmin = language.hyphenmin[1]
end
puts "#{space_leading}#{space_tr}(#{lmin},#{rmin}) | "
# which file to use
if language.use_old_loader then
file = "#{language.filename_old_patterns}"
else
file = "loadhyph-#{language.code}.tex"
end
#puts "\t#{file} | "
if language.encoding == nil then
encoding = ""
else
encoding = language.encoding.upcase
end
puts "#{space_leading}#{space_tr}#{encoding} | "
# licence
licence = language.licence
puts "#{space_leading}#{space_tr}#{licence} | "
authors = []
if language.authors != nil then
language.authors.each do |a|
author = $a[a]
if author != nil then
authors.push("#{author.name} #{author.surname}")
else
puts "author is nil!!!"
end
end
end
puts "#{space_leading}#{space_tr}#{authors.join(' ')} | "
# finish the language definition
puts "#{space_leading}
\n"
end
end
end