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 | 92 |
1 files changed, 49 insertions, 43 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 index e537fe43ba7..0f50706dc01 100755 --- a/Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb +++ b/Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb @@ -1,7 +1,10 @@ #!/usr/bin/env ruby require_relative 'hyph-utf8' -require_relative 'languages' +require_relative 'lib/tex/hyphen' +require_relative 'lib/tex/hyphen/texlive' +include TeX::Hyphen +include TeXLive # this file generates patterns for pTeX out of the plain ones @@ -9,7 +12,7 @@ require_relative 'languages' encodings_list = ["ascii", "ec", "qx", "t2a", "lmc", "il2", "il3", "l7x", "t8m", "lth"] encodings = Hash.new encodings_list.each do |encoding_name| - encodings[encoding_name] = HyphEncoding.new(encoding_name) + encodings[encoding_name] = HyphEncoding.new(encoding_name) end header = <<-HEADER @@ -24,53 +27,56 @@ header = <<-HEADER %% HEADER +print 'Generating pTeX patterns for (skipped # reason): ' Language.all.sort.each do |language| - if language.use_old_loader - puts "(skipping #{language.code} # loader)" - next - end + if language.use_old_patterns_comment || !language.encoding || language.encoding == 'ascii' + if language.use_old_patterns_comment + reason = 'legacy patterns' + else + reason = sprintf 'encoding: %s', language.encoding.inspect + end + print '(', language.bcp47, ' # ', reason, ') ' - if language.encoding == nil || language.encoding == 'ascii' - puts "(skipping #{language.code} # #{if language.encoding then 'ascii' else 'encoding' end})" - next - else - encoding = encodings[language.encoding] - end + next + else + encoding = encodings[language.encoding] + end - code = language.code + bcp47 = language.bcp47 - puts ">> generating #{code} (#{language.name.safe})" - File.open(File.join(PATH::PTEX, sprintf('hyph-%s.%s.tex', code, language.encoding)), 'w') do |file_ptex| - patterns = language.patterns - exceptions = language.exceptions + print bcp47, ' ' + File.open(File.join(PATH::PTEX, sprintf('hyph-%s.%s.tex', bcp47, language.encoding)), 'w') do |file_ptex| + patterns = language.patterns + exceptions = language.exceptions - characters = patterns.join('').gsub(/[.0-9]/,'').unpack('U*').sort.uniq + characters = patterns.join('').gsub(/[.0-9]/,'').unpack('U*').sort.uniq - if language.encoding != 'ascii' then - patterns = encoding.convert_to_escaped_characters(patterns) - exceptions = encoding.convert_to_escaped_characters(exceptions) - end + if language.encoding != 'ascii' then + patterns = encoding.convert_to_escaped_characters(patterns) + exceptions = encoding.convert_to_escaped_characters(exceptions) + end - file_ptex.printf(header, language.name.safe, language.code, language.encoding, language.code) + file_ptex.printf(header, language.babelname, language.bcp47, language.encoding, language.bcp47) - file_ptex.puts("\\bgroup") - # setting lccodes for letters - characters.each do |c| - if (c == 0x01FD or c == 0x0301) and language.code == 'la-x-liturgic' - # skip - elsif c >= 128 then - code = encoding.unicode_characters[c].code_enc - file_ptex.printf("\\lccode\"%02X=\"%02X\n", code, code) - end - end - # patterns - if patterns.length > 0 then - file_ptex.puts("\\patterns{\n#{patterns.join("\n")}\n}") - end - # exceptions - if exceptions.length > 0 then - file_ptex.puts("\\hyphenation{\n#{exceptions.join("\n")}\n}") - end - file_ptex.puts("\\egroup") - end + file_ptex.puts("\\bgroup") + # setting lccodes for letters + characters.each do |c| + if (c == 0x01FD or c == 0x0301) and language.bcp47 == 'la-x-liturgic' + # skip + elsif c >= 128 then + code = encoding.unicode_characters[c].code_enc + file_ptex.printf("\\lccode\"%02X=\"%02X\n", code, code) + end + end + # patterns + if patterns.length > 0 then + file_ptex.puts("\\patterns{\n#{patterns.join("\n")}\n}") + end + # exceptions + if exceptions.length > 0 then + file_ptex.puts("\\hyphenation{\n#{exceptions.join("\n")}\n}") + end + file_ptex.puts("\\egroup") + end end +puts |