summaryrefslogtreecommitdiff
path: root/enc/unicode/case-folding.rb
diff options
context:
space:
mode:
Diffstat (limited to 'enc/unicode/case-folding.rb')
-rwxr-xr-xenc/unicode/case-folding.rb18
1 files changed, 12 insertions, 6 deletions
diff --git a/enc/unicode/case-folding.rb b/enc/unicode/case-folding.rb
index de2f4a5ed3..e9428a4103 100755
--- a/enc/unicode/case-folding.rb
+++ b/enc/unicode/case-folding.rb
@@ -20,7 +20,7 @@ class CaseFolding
def print_table_1(dest, type, mapping_data, data)
for k, v in data = data.sort
sk = (Array === k and k.length > 1) ? "{#{hex_seq(k)}}" : ("0x%04x" % k)
- dest.print(" {#{sk}, {#{v.length}#{mapping_data.flags(k, type)}, {#{hex_seq(v)}}}},\n")
+ dest.print(" {#{sk}, {#{v.length}#{mapping_data.flags(k, type, v)}, {#{hex_seq(v)}}}},\n")
end
data
end
@@ -178,6 +178,8 @@ class CaseFolding
end
class MapItem
+ attr_reader :upper, :lower
+
def initialize(code, upper, lower, title)
@code = code
@upper = upper unless upper == ''
@@ -205,13 +207,17 @@ class CaseMapping
# IO.readlines(File.expand_path('SpecialCasing.txt', mapping_directory))
end
- def flags(from, type)
+ def flags(from, type, to)
# types: CaseFold_11, CaseUnfold_11, CaseUnfold_12, CaseUnfold_13
flags = ""
flags += '|F' if type=='CaseFold_11'
-
- #to = @mappings[from]
- #to ? to.flags : ""
+ from = Array(from).map {|i| "%04X" % i}.join(" ")
+ to = Array(to).map {|i| "%04X" % i}.join(" ")
+ item = @mappings[from]
+ if item
+ flags += '|U' if to==item.upper
+ flags += '|D' if to==item.lower
+ end
flags
end
@@ -221,7 +227,7 @@ class CaseMapping
end
class CaseMappingDummy
- def flags(from, type)
+ def flags(from, type, to)
""
end
end