summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb')
-rwxr-xr-xMaster/texmf-dist/source/generic/hyph-utf8/generate-ptex-patterns.rb92
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