diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb')
-rwxr-xr-x | Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb b/Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb new file mode 100755 index 00000000000..08a77340d8b --- /dev/null +++ b/Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb @@ -0,0 +1,108 @@ +#!/usr/bin/env ruby + +require 'hyph-utf8' + +# this file generates patterns for pTeX out of the plain ones + +# use 'gem install unicode' if unicode is missing on your computer +# require 'jcode' +# require 'rubygems' +# require 'unicode' + +load 'languages.rb' + +$path_root=File.expand_path("../../..") +$path_ptex="#{$path_root}/tex/generic/hyph-utf8/patterns/ptex" + +# load encodings +encodings_list = ["ascii", "ec", "qx", "t2a", "lmc", "il2", "il3", "l7x"] +encodings = Hash.new +encodings_list.each do |encoding_name| + encodings[encoding_name] = Encoding.new(encoding_name) +end + +$l = Languages.new + +# TODO: should be singleton +languages = $l.list.sort{|a,b| a.name <=> b.name} + +language_codes = Hash.new +languages.each do |language| + language_codes[language.code] = language.code +end +language_codes['mn-cyrl-x-lmc'] = nil +# language_codes['sh-latn'] = 'sr-latn' +language_codes['sh-cyrl'] = nil + +# e = Encoding.new("ec") +# puts e.convert_string_to_escaped_characters("moja čaša") +# +# return + +languages.sort{|x,y| x.code <=> y.code }.each do |language| + encoding = nil + if language.use_new_loader then + if language.encoding == nil or language_codes[language.code] == nil + include_language = false + puts "(skipping #{language.code} # encoding)" + elsif language.encoding == 'ascii' + include_language = false + puts "(skipping #{language.code} # ascii)" + else + include_language = true + encoding = encodings[language.encoding] + end + else + include_language = false + puts "(skipping #{language.code} # loader)" + end + + code = language_codes[language.code] + + if include_language + puts ">> generating #{code} (#{language.name})" + file_ptex = File.open("#{$path_ptex}/phyph-#{code}.tex", "w") + + patterns = language.get_patterns + exceptions = language.get_exceptions + + if code == 'nn' or code == 'nb' + patterns = $l['no'].get_patterns + end + + if language.encoding != 'ascii' then + patterns = encoding.convert_to_escaped_characters(patterns) + exceptions = encoding.convert_to_escaped_characters(exceptions) + end + + file_ptex.puts("% pTeX-friendly hyphenation patterns") + file_ptex.puts("%") + file_ptex.puts("% language: #{language.name} (#{language.code})") + file_ptex.puts("% encoding: #{language.encoding}") + file_ptex.puts("%") + file_ptex.puts("% This file has been auto-generated from hyph-#{language.code}.tex") + file_ptex.puts("% with a script [texmf]/scripts/generic/hyph-utf8/generate-ptex-patterns.rb") + file_ptex.puts("% See the original file for details about author, licence etc.") + file_ptex.puts("%") + + if patterns.length > 0 then + # file_ptex.puts("\\patterns{\n#{encoding.convert_to_escaped_characters(patterns.join("\n"))}\n}") + file_ptex.puts("\\patterns{\n#{patterns.join("\n")}\n}") + end + if exceptions.length > 0 then + # file_ptex.puts("\\hyphenation{\n#{encoding.convert_to_escaped_characters(exceptions.join("\n"))}\n}") + file_ptex.puts("\\hyphenation{\n#{exceptions.join("\n")}\n}") + end + + + # # patterns + # patterns.each do |pattern| + # $file_pat.puts pattern.gsub(/'/,"’") + # end + # # exceptions + # if exceptions != "" + # $file_hyp.puts exceptions + # end + file_ptex.close + end +end |