doing 2.0.19 → 2.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/Gemfile.lock +15 -5
  4. data/README.md +1 -1
  5. data/bin/doing +2 -18
  6. data/doing.gemspec +5 -4
  7. data/doing.rdoc +2 -2
  8. data/generate_completions.sh +3 -3
  9. data/lib/doing/cli_status.rb +6 -2
  10. data/lib/doing/completion/bash_completion.rb +185 -0
  11. data/lib/doing/completion/fish_completion.rb +175 -0
  12. data/lib/doing/completion/string.rb +17 -0
  13. data/lib/doing/completion/zsh_completion.rb +140 -0
  14. data/lib/doing/completion.rb +39 -0
  15. data/lib/doing/version.rb +1 -1
  16. data/lib/doing/wwid.rb +19 -5
  17. data/lib/doing.rb +1 -1
  18. data/lib/helpers/fzf/.goreleaser.yml +119 -0
  19. data/lib/helpers/fzf/.rubocop.yml +28 -0
  20. data/lib/helpers/fzf/ADVANCED.md +565 -0
  21. data/lib/helpers/fzf/BUILD.md +49 -0
  22. data/lib/helpers/fzf/CHANGELOG.md +1193 -0
  23. data/lib/helpers/fzf/Dockerfile +11 -0
  24. data/lib/helpers/fzf/LICENSE +21 -0
  25. data/lib/helpers/fzf/Makefile +166 -0
  26. data/lib/helpers/fzf/README-VIM.md +486 -0
  27. data/lib/helpers/fzf/README.md +712 -0
  28. data/lib/helpers/fzf/bin/fzf-tmux +233 -0
  29. data/lib/helpers/fzf/doc/fzf.txt +512 -0
  30. data/lib/helpers/fzf/go.mod +17 -0
  31. data/lib/helpers/fzf/go.sum +31 -0
  32. data/lib/helpers/fzf/install +382 -0
  33. data/lib/helpers/fzf/install.ps1 +65 -0
  34. data/lib/helpers/fzf/main.go +14 -0
  35. data/lib/helpers/fzf/man/man1/fzf-tmux.1 +68 -0
  36. data/lib/helpers/fzf/man/man1/fzf.1 +1001 -0
  37. data/lib/helpers/fzf/plugin/fzf.vim +1048 -0
  38. data/lib/helpers/fzf/shell/completion.bash +381 -0
  39. data/lib/helpers/fzf/shell/completion.zsh +329 -0
  40. data/lib/helpers/fzf/shell/key-bindings.bash +96 -0
  41. data/lib/helpers/fzf/shell/key-bindings.fish +172 -0
  42. data/lib/helpers/fzf/shell/key-bindings.zsh +114 -0
  43. data/lib/helpers/fzf/src/LICENSE +21 -0
  44. data/lib/helpers/fzf/src/algo/algo.go +884 -0
  45. data/lib/helpers/fzf/src/algo/algo_test.go +197 -0
  46. data/lib/helpers/fzf/src/algo/normalize.go +492 -0
  47. data/lib/helpers/fzf/src/ansi.go +409 -0
  48. data/lib/helpers/fzf/src/ansi_test.go +427 -0
  49. data/lib/helpers/fzf/src/cache.go +81 -0
  50. data/lib/helpers/fzf/src/cache_test.go +39 -0
  51. data/lib/helpers/fzf/src/chunklist.go +89 -0
  52. data/lib/helpers/fzf/src/chunklist_test.go +80 -0
  53. data/lib/helpers/fzf/src/constants.go +85 -0
  54. data/lib/helpers/fzf/src/core.go +351 -0
  55. data/lib/helpers/fzf/src/history.go +96 -0
  56. data/lib/helpers/fzf/src/history_test.go +68 -0
  57. data/lib/helpers/fzf/src/item.go +44 -0
  58. data/lib/helpers/fzf/src/item_test.go +23 -0
  59. data/lib/helpers/fzf/src/matcher.go +235 -0
  60. data/lib/helpers/fzf/src/merger.go +120 -0
  61. data/lib/helpers/fzf/src/merger_test.go +88 -0
  62. data/lib/helpers/fzf/src/options.go +1691 -0
  63. data/lib/helpers/fzf/src/options_test.go +457 -0
  64. data/lib/helpers/fzf/src/pattern.go +425 -0
  65. data/lib/helpers/fzf/src/pattern_test.go +209 -0
  66. data/lib/helpers/fzf/src/protector/protector.go +8 -0
  67. data/lib/helpers/fzf/src/protector/protector_openbsd.go +10 -0
  68. data/lib/helpers/fzf/src/reader.go +201 -0
  69. data/lib/helpers/fzf/src/reader_test.go +63 -0
  70. data/lib/helpers/fzf/src/result.go +243 -0
  71. data/lib/helpers/fzf/src/result_others.go +16 -0
  72. data/lib/helpers/fzf/src/result_test.go +159 -0
  73. data/lib/helpers/fzf/src/result_x86.go +16 -0
  74. data/lib/helpers/fzf/src/terminal.go +2832 -0
  75. data/lib/helpers/fzf/src/terminal_test.go +638 -0
  76. data/lib/helpers/fzf/src/terminal_unix.go +26 -0
  77. data/lib/helpers/fzf/src/terminal_windows.go +45 -0
  78. data/lib/helpers/fzf/src/tokenizer.go +253 -0
  79. data/lib/helpers/fzf/src/tokenizer_test.go +112 -0
  80. data/lib/helpers/fzf/src/tui/dummy.go +46 -0
  81. data/lib/helpers/fzf/src/tui/light.go +987 -0
  82. data/lib/helpers/fzf/src/tui/light_unix.go +110 -0
  83. data/lib/helpers/fzf/src/tui/light_windows.go +145 -0
  84. data/lib/helpers/fzf/src/tui/tcell.go +721 -0
  85. data/lib/helpers/fzf/src/tui/tcell_test.go +392 -0
  86. data/lib/helpers/fzf/src/tui/ttyname_unix.go +47 -0
  87. data/lib/helpers/fzf/src/tui/ttyname_windows.go +14 -0
  88. data/lib/helpers/fzf/src/tui/tui.go +625 -0
  89. data/lib/helpers/fzf/src/tui/tui_test.go +20 -0
  90. data/lib/helpers/fzf/src/util/atomicbool.go +34 -0
  91. data/lib/helpers/fzf/src/util/atomicbool_test.go +17 -0
  92. data/lib/helpers/fzf/src/util/chars.go +198 -0
  93. data/lib/helpers/fzf/src/util/chars_test.go +46 -0
  94. data/lib/helpers/fzf/src/util/eventbox.go +96 -0
  95. data/lib/helpers/fzf/src/util/eventbox_test.go +61 -0
  96. data/lib/helpers/fzf/src/util/slab.go +12 -0
  97. data/lib/helpers/fzf/src/util/util.go +138 -0
  98. data/lib/helpers/fzf/src/util/util_test.go +40 -0
  99. data/lib/helpers/fzf/src/util/util_unix.go +47 -0
  100. data/lib/helpers/fzf/src/util/util_windows.go +83 -0
  101. data/lib/helpers/fzf/test/fzf.vader +175 -0
  102. data/lib/helpers/fzf/test/test_go.rb +2626 -0
  103. data/lib/helpers/fzf/uninstall +117 -0
  104. data/scripts/generate_bash_completions.rb +6 -12
  105. data/scripts/generate_fish_completions.rb +7 -16
  106. data/scripts/generate_zsh_completions.rb +6 -15
  107. metadata +144 -9
@@ -0,0 +1,492 @@
1
+ // Normalization of latin script letters
2
+ // Reference: http://www.unicode.org/Public/UCD/latest/ucd/Index.txt
3
+
4
+ package algo
5
+
6
+ var normalized map[rune]rune = map[rune]rune{
7
+ 0x00E1: 'a', // WITH ACUTE, LATIN SMALL LETTER
8
+ 0x0103: 'a', // WITH BREVE, LATIN SMALL LETTER
9
+ 0x01CE: 'a', // WITH CARON, LATIN SMALL LETTER
10
+ 0x00E2: 'a', // WITH CIRCUMFLEX, LATIN SMALL LETTER
11
+ 0x00E4: 'a', // WITH DIAERESIS, LATIN SMALL LETTER
12
+ 0x0227: 'a', // WITH DOT ABOVE, LATIN SMALL LETTER
13
+ 0x1EA1: 'a', // WITH DOT BELOW, LATIN SMALL LETTER
14
+ 0x0201: 'a', // WITH DOUBLE GRAVE, LATIN SMALL LETTER
15
+ 0x00E0: 'a', // WITH GRAVE, LATIN SMALL LETTER
16
+ 0x1EA3: 'a', // WITH HOOK ABOVE, LATIN SMALL LETTER
17
+ 0x0203: 'a', // WITH INVERTED BREVE, LATIN SMALL LETTER
18
+ 0x0101: 'a', // WITH MACRON, LATIN SMALL LETTER
19
+ 0x0105: 'a', // WITH OGONEK, LATIN SMALL LETTER
20
+ 0x1E9A: 'a', // WITH RIGHT HALF RING, LATIN SMALL LETTER
21
+ 0x00E5: 'a', // WITH RING ABOVE, LATIN SMALL LETTER
22
+ 0x1E01: 'a', // WITH RING BELOW, LATIN SMALL LETTER
23
+ 0x00E3: 'a', // WITH TILDE, LATIN SMALL LETTER
24
+ 0x0363: 'a', // , COMBINING LATIN SMALL LETTER
25
+ 0x0250: 'a', // , LATIN SMALL LETTER TURNED
26
+ 0x1E03: 'b', // WITH DOT ABOVE, LATIN SMALL LETTER
27
+ 0x1E05: 'b', // WITH DOT BELOW, LATIN SMALL LETTER
28
+ 0x0253: 'b', // WITH HOOK, LATIN SMALL LETTER
29
+ 0x1E07: 'b', // WITH LINE BELOW, LATIN SMALL LETTER
30
+ 0x0180: 'b', // WITH STROKE, LATIN SMALL LETTER
31
+ 0x0183: 'b', // WITH TOPBAR, LATIN SMALL LETTER
32
+ 0x0107: 'c', // WITH ACUTE, LATIN SMALL LETTER
33
+ 0x010D: 'c', // WITH CARON, LATIN SMALL LETTER
34
+ 0x00E7: 'c', // WITH CEDILLA, LATIN SMALL LETTER
35
+ 0x0109: 'c', // WITH CIRCUMFLEX, LATIN SMALL LETTER
36
+ 0x0255: 'c', // WITH CURL, LATIN SMALL LETTER
37
+ 0x010B: 'c', // WITH DOT ABOVE, LATIN SMALL LETTER
38
+ 0x0188: 'c', // WITH HOOK, LATIN SMALL LETTER
39
+ 0x023C: 'c', // WITH STROKE, LATIN SMALL LETTER
40
+ 0x0368: 'c', // , COMBINING LATIN SMALL LETTER
41
+ 0x0297: 'c', // , LATIN LETTER STRETCHED
42
+ 0x2184: 'c', // , LATIN SMALL LETTER REVERSED
43
+ 0x010F: 'd', // WITH CARON, LATIN SMALL LETTER
44
+ 0x1E11: 'd', // WITH CEDILLA, LATIN SMALL LETTER
45
+ 0x1E13: 'd', // WITH CIRCUMFLEX BELOW, LATIN SMALL LETTER
46
+ 0x0221: 'd', // WITH CURL, LATIN SMALL LETTER
47
+ 0x1E0B: 'd', // WITH DOT ABOVE, LATIN SMALL LETTER
48
+ 0x1E0D: 'd', // WITH DOT BELOW, LATIN SMALL LETTER
49
+ 0x0257: 'd', // WITH HOOK, LATIN SMALL LETTER
50
+ 0x1E0F: 'd', // WITH LINE BELOW, LATIN SMALL LETTER
51
+ 0x0111: 'd', // WITH STROKE, LATIN SMALL LETTER
52
+ 0x0256: 'd', // WITH TAIL, LATIN SMALL LETTER
53
+ 0x018C: 'd', // WITH TOPBAR, LATIN SMALL LETTER
54
+ 0x0369: 'd', // , COMBINING LATIN SMALL LETTER
55
+ 0x00E9: 'e', // WITH ACUTE, LATIN SMALL LETTER
56
+ 0x0115: 'e', // WITH BREVE, LATIN SMALL LETTER
57
+ 0x011B: 'e', // WITH CARON, LATIN SMALL LETTER
58
+ 0x0229: 'e', // WITH CEDILLA, LATIN SMALL LETTER
59
+ 0x1E19: 'e', // WITH CIRCUMFLEX BELOW, LATIN SMALL LETTER
60
+ 0x00EA: 'e', // WITH CIRCUMFLEX, LATIN SMALL LETTER
61
+ 0x00EB: 'e', // WITH DIAERESIS, LATIN SMALL LETTER
62
+ 0x0117: 'e', // WITH DOT ABOVE, LATIN SMALL LETTER
63
+ 0x1EB9: 'e', // WITH DOT BELOW, LATIN SMALL LETTER
64
+ 0x0205: 'e', // WITH DOUBLE GRAVE, LATIN SMALL LETTER
65
+ 0x00E8: 'e', // WITH GRAVE, LATIN SMALL LETTER
66
+ 0x1EBB: 'e', // WITH HOOK ABOVE, LATIN SMALL LETTER
67
+ 0x025D: 'e', // WITH HOOK, LATIN SMALL LETTER REVERSED OPEN
68
+ 0x0207: 'e', // WITH INVERTED BREVE, LATIN SMALL LETTER
69
+ 0x0113: 'e', // WITH MACRON, LATIN SMALL LETTER
70
+ 0x0119: 'e', // WITH OGONEK, LATIN SMALL LETTER
71
+ 0x0247: 'e', // WITH STROKE, LATIN SMALL LETTER
72
+ 0x1E1B: 'e', // WITH TILDE BELOW, LATIN SMALL LETTER
73
+ 0x1EBD: 'e', // WITH TILDE, LATIN SMALL LETTER
74
+ 0x0364: 'e', // , COMBINING LATIN SMALL LETTER
75
+ 0x029A: 'e', // , LATIN SMALL LETTER CLOSED OPEN
76
+ 0x025E: 'e', // , LATIN SMALL LETTER CLOSED REVERSED OPEN
77
+ 0x025B: 'e', // , LATIN SMALL LETTER OPEN
78
+ 0x0258: 'e', // , LATIN SMALL LETTER REVERSED
79
+ 0x025C: 'e', // , LATIN SMALL LETTER REVERSED OPEN
80
+ 0x01DD: 'e', // , LATIN SMALL LETTER TURNED
81
+ 0x1D08: 'e', // , LATIN SMALL LETTER TURNED OPEN
82
+ 0x1E1F: 'f', // WITH DOT ABOVE, LATIN SMALL LETTER
83
+ 0x0192: 'f', // WITH HOOK, LATIN SMALL LETTER
84
+ 0x01F5: 'g', // WITH ACUTE, LATIN SMALL LETTER
85
+ 0x011F: 'g', // WITH BREVE, LATIN SMALL LETTER
86
+ 0x01E7: 'g', // WITH CARON, LATIN SMALL LETTER
87
+ 0x0123: 'g', // WITH CEDILLA, LATIN SMALL LETTER
88
+ 0x011D: 'g', // WITH CIRCUMFLEX, LATIN SMALL LETTER
89
+ 0x0121: 'g', // WITH DOT ABOVE, LATIN SMALL LETTER
90
+ 0x0260: 'g', // WITH HOOK, LATIN SMALL LETTER
91
+ 0x1E21: 'g', // WITH MACRON, LATIN SMALL LETTER
92
+ 0x01E5: 'g', // WITH STROKE, LATIN SMALL LETTER
93
+ 0x0261: 'g', // , LATIN SMALL LETTER SCRIPT
94
+ 0x1E2B: 'h', // WITH BREVE BELOW, LATIN SMALL LETTER
95
+ 0x021F: 'h', // WITH CARON, LATIN SMALL LETTER
96
+ 0x1E29: 'h', // WITH CEDILLA, LATIN SMALL LETTER
97
+ 0x0125: 'h', // WITH CIRCUMFLEX, LATIN SMALL LETTER
98
+ 0x1E27: 'h', // WITH DIAERESIS, LATIN SMALL LETTER
99
+ 0x1E23: 'h', // WITH DOT ABOVE, LATIN SMALL LETTER
100
+ 0x1E25: 'h', // WITH DOT BELOW, LATIN SMALL LETTER
101
+ 0x02AE: 'h', // WITH FISHHOOK, LATIN SMALL LETTER TURNED
102
+ 0x0266: 'h', // WITH HOOK, LATIN SMALL LETTER
103
+ 0x1E96: 'h', // WITH LINE BELOW, LATIN SMALL LETTER
104
+ 0x0127: 'h', // WITH STROKE, LATIN SMALL LETTER
105
+ 0x036A: 'h', // , COMBINING LATIN SMALL LETTER
106
+ 0x0265: 'h', // , LATIN SMALL LETTER TURNED
107
+ 0x2095: 'h', // , LATIN SUBSCRIPT SMALL LETTER
108
+ 0x00ED: 'i', // WITH ACUTE, LATIN SMALL LETTER
109
+ 0x012D: 'i', // WITH BREVE, LATIN SMALL LETTER
110
+ 0x01D0: 'i', // WITH CARON, LATIN SMALL LETTER
111
+ 0x00EE: 'i', // WITH CIRCUMFLEX, LATIN SMALL LETTER
112
+ 0x00EF: 'i', // WITH DIAERESIS, LATIN SMALL LETTER
113
+ 0x1ECB: 'i', // WITH DOT BELOW, LATIN SMALL LETTER
114
+ 0x0209: 'i', // WITH DOUBLE GRAVE, LATIN SMALL LETTER
115
+ 0x00EC: 'i', // WITH GRAVE, LATIN SMALL LETTER
116
+ 0x1EC9: 'i', // WITH HOOK ABOVE, LATIN SMALL LETTER
117
+ 0x020B: 'i', // WITH INVERTED BREVE, LATIN SMALL LETTER
118
+ 0x012B: 'i', // WITH MACRON, LATIN SMALL LETTER
119
+ 0x012F: 'i', // WITH OGONEK, LATIN SMALL LETTER
120
+ 0x0268: 'i', // WITH STROKE, LATIN SMALL LETTER
121
+ 0x1E2D: 'i', // WITH TILDE BELOW, LATIN SMALL LETTER
122
+ 0x0129: 'i', // WITH TILDE, LATIN SMALL LETTER
123
+ 0x0365: 'i', // , COMBINING LATIN SMALL LETTER
124
+ 0x0131: 'i', // , LATIN SMALL LETTER DOTLESS
125
+ 0x1D09: 'i', // , LATIN SMALL LETTER TURNED
126
+ 0x1D62: 'i', // , LATIN SUBSCRIPT SMALL LETTER
127
+ 0x2071: 'i', // , SUPERSCRIPT LATIN SMALL LETTER
128
+ 0x01F0: 'j', // WITH CARON, LATIN SMALL LETTER
129
+ 0x0135: 'j', // WITH CIRCUMFLEX, LATIN SMALL LETTER
130
+ 0x029D: 'j', // WITH CROSSED-TAIL, LATIN SMALL LETTER
131
+ 0x0249: 'j', // WITH STROKE, LATIN SMALL LETTER
132
+ 0x025F: 'j', // WITH STROKE, LATIN SMALL LETTER DOTLESS
133
+ 0x0237: 'j', // , LATIN SMALL LETTER DOTLESS
134
+ 0x1E31: 'k', // WITH ACUTE, LATIN SMALL LETTER
135
+ 0x01E9: 'k', // WITH CARON, LATIN SMALL LETTER
136
+ 0x0137: 'k', // WITH CEDILLA, LATIN SMALL LETTER
137
+ 0x1E33: 'k', // WITH DOT BELOW, LATIN SMALL LETTER
138
+ 0x0199: 'k', // WITH HOOK, LATIN SMALL LETTER
139
+ 0x1E35: 'k', // WITH LINE BELOW, LATIN SMALL LETTER
140
+ 0x029E: 'k', // , LATIN SMALL LETTER TURNED
141
+ 0x2096: 'k', // , LATIN SUBSCRIPT SMALL LETTER
142
+ 0x013A: 'l', // WITH ACUTE, LATIN SMALL LETTER
143
+ 0x019A: 'l', // WITH BAR, LATIN SMALL LETTER
144
+ 0x026C: 'l', // WITH BELT, LATIN SMALL LETTER
145
+ 0x013E: 'l', // WITH CARON, LATIN SMALL LETTER
146
+ 0x013C: 'l', // WITH CEDILLA, LATIN SMALL LETTER
147
+ 0x1E3D: 'l', // WITH CIRCUMFLEX BELOW, LATIN SMALL LETTER
148
+ 0x0234: 'l', // WITH CURL, LATIN SMALL LETTER
149
+ 0x1E37: 'l', // WITH DOT BELOW, LATIN SMALL LETTER
150
+ 0x1E3B: 'l', // WITH LINE BELOW, LATIN SMALL LETTER
151
+ 0x0140: 'l', // WITH MIDDLE DOT, LATIN SMALL LETTER
152
+ 0x026B: 'l', // WITH MIDDLE TILDE, LATIN SMALL LETTER
153
+ 0x026D: 'l', // WITH RETROFLEX HOOK, LATIN SMALL LETTER
154
+ 0x0142: 'l', // WITH STROKE, LATIN SMALL LETTER
155
+ 0x2097: 'l', // , LATIN SUBSCRIPT SMALL LETTER
156
+ 0x1E3F: 'm', // WITH ACUTE, LATIN SMALL LETTER
157
+ 0x1E41: 'm', // WITH DOT ABOVE, LATIN SMALL LETTER
158
+ 0x1E43: 'm', // WITH DOT BELOW, LATIN SMALL LETTER
159
+ 0x0271: 'm', // WITH HOOK, LATIN SMALL LETTER
160
+ 0x0270: 'm', // WITH LONG LEG, LATIN SMALL LETTER TURNED
161
+ 0x036B: 'm', // , COMBINING LATIN SMALL LETTER
162
+ 0x1D1F: 'm', // , LATIN SMALL LETTER SIDEWAYS TURNED
163
+ 0x026F: 'm', // , LATIN SMALL LETTER TURNED
164
+ 0x2098: 'm', // , LATIN SUBSCRIPT SMALL LETTER
165
+ 0x0144: 'n', // WITH ACUTE, LATIN SMALL LETTER
166
+ 0x0148: 'n', // WITH CARON, LATIN SMALL LETTER
167
+ 0x0146: 'n', // WITH CEDILLA, LATIN SMALL LETTER
168
+ 0x1E4B: 'n', // WITH CIRCUMFLEX BELOW, LATIN SMALL LETTER
169
+ 0x0235: 'n', // WITH CURL, LATIN SMALL LETTER
170
+ 0x1E45: 'n', // WITH DOT ABOVE, LATIN SMALL LETTER
171
+ 0x1E47: 'n', // WITH DOT BELOW, LATIN SMALL LETTER
172
+ 0x01F9: 'n', // WITH GRAVE, LATIN SMALL LETTER
173
+ 0x0272: 'n', // WITH LEFT HOOK, LATIN SMALL LETTER
174
+ 0x1E49: 'n', // WITH LINE BELOW, LATIN SMALL LETTER
175
+ 0x019E: 'n', // WITH LONG RIGHT LEG, LATIN SMALL LETTER
176
+ 0x0273: 'n', // WITH RETROFLEX HOOK, LATIN SMALL LETTER
177
+ 0x00F1: 'n', // WITH TILDE, LATIN SMALL LETTER
178
+ 0x2099: 'n', // , LATIN SUBSCRIPT SMALL LETTER
179
+ 0x00F3: 'o', // WITH ACUTE, LATIN SMALL LETTER
180
+ 0x014F: 'o', // WITH BREVE, LATIN SMALL LETTER
181
+ 0x01D2: 'o', // WITH CARON, LATIN SMALL LETTER
182
+ 0x00F4: 'o', // WITH CIRCUMFLEX, LATIN SMALL LETTER
183
+ 0x00F6: 'o', // WITH DIAERESIS, LATIN SMALL LETTER
184
+ 0x022F: 'o', // WITH DOT ABOVE, LATIN SMALL LETTER
185
+ 0x1ECD: 'o', // WITH DOT BELOW, LATIN SMALL LETTER
186
+ 0x0151: 'o', // WITH DOUBLE ACUTE, LATIN SMALL LETTER
187
+ 0x020D: 'o', // WITH DOUBLE GRAVE, LATIN SMALL LETTER
188
+ 0x00F2: 'o', // WITH GRAVE, LATIN SMALL LETTER
189
+ 0x1ECF: 'o', // WITH HOOK ABOVE, LATIN SMALL LETTER
190
+ 0x01A1: 'o', // WITH HORN, LATIN SMALL LETTER
191
+ 0x020F: 'o', // WITH INVERTED BREVE, LATIN SMALL LETTER
192
+ 0x014D: 'o', // WITH MACRON, LATIN SMALL LETTER
193
+ 0x01EB: 'o', // WITH OGONEK, LATIN SMALL LETTER
194
+ 0x00F8: 'o', // WITH STROKE, LATIN SMALL LETTER
195
+ 0x1D13: 'o', // WITH STROKE, LATIN SMALL LETTER SIDEWAYS
196
+ 0x00F5: 'o', // WITH TILDE, LATIN SMALL LETTER
197
+ 0x0366: 'o', // , COMBINING LATIN SMALL LETTER
198
+ 0x0275: 'o', // , LATIN SMALL LETTER BARRED
199
+ 0x1D17: 'o', // , LATIN SMALL LETTER BOTTOM HALF
200
+ 0x0254: 'o', // , LATIN SMALL LETTER OPEN
201
+ 0x1D11: 'o', // , LATIN SMALL LETTER SIDEWAYS
202
+ 0x1D12: 'o', // , LATIN SMALL LETTER SIDEWAYS OPEN
203
+ 0x1D16: 'o', // , LATIN SMALL LETTER TOP HALF
204
+ 0x1E55: 'p', // WITH ACUTE, LATIN SMALL LETTER
205
+ 0x1E57: 'p', // WITH DOT ABOVE, LATIN SMALL LETTER
206
+ 0x01A5: 'p', // WITH HOOK, LATIN SMALL LETTER
207
+ 0x209A: 'p', // , LATIN SUBSCRIPT SMALL LETTER
208
+ 0x024B: 'q', // WITH HOOK TAIL, LATIN SMALL LETTER
209
+ 0x02A0: 'q', // WITH HOOK, LATIN SMALL LETTER
210
+ 0x0155: 'r', // WITH ACUTE, LATIN SMALL LETTER
211
+ 0x0159: 'r', // WITH CARON, LATIN SMALL LETTER
212
+ 0x0157: 'r', // WITH CEDILLA, LATIN SMALL LETTER
213
+ 0x1E59: 'r', // WITH DOT ABOVE, LATIN SMALL LETTER
214
+ 0x1E5B: 'r', // WITH DOT BELOW, LATIN SMALL LETTER
215
+ 0x0211: 'r', // WITH DOUBLE GRAVE, LATIN SMALL LETTER
216
+ 0x027E: 'r', // WITH FISHHOOK, LATIN SMALL LETTER
217
+ 0x027F: 'r', // WITH FISHHOOK, LATIN SMALL LETTER REVERSED
218
+ 0x027B: 'r', // WITH HOOK, LATIN SMALL LETTER TURNED
219
+ 0x0213: 'r', // WITH INVERTED BREVE, LATIN SMALL LETTER
220
+ 0x1E5F: 'r', // WITH LINE BELOW, LATIN SMALL LETTER
221
+ 0x027C: 'r', // WITH LONG LEG, LATIN SMALL LETTER
222
+ 0x027A: 'r', // WITH LONG LEG, LATIN SMALL LETTER TURNED
223
+ 0x024D: 'r', // WITH STROKE, LATIN SMALL LETTER
224
+ 0x027D: 'r', // WITH TAIL, LATIN SMALL LETTER
225
+ 0x036C: 'r', // , COMBINING LATIN SMALL LETTER
226
+ 0x0279: 'r', // , LATIN SMALL LETTER TURNED
227
+ 0x1D63: 'r', // , LATIN SUBSCRIPT SMALL LETTER
228
+ 0x015B: 's', // WITH ACUTE, LATIN SMALL LETTER
229
+ 0x0161: 's', // WITH CARON, LATIN SMALL LETTER
230
+ 0x015F: 's', // WITH CEDILLA, LATIN SMALL LETTER
231
+ 0x015D: 's', // WITH CIRCUMFLEX, LATIN SMALL LETTER
232
+ 0x0219: 's', // WITH COMMA BELOW, LATIN SMALL LETTER
233
+ 0x1E61: 's', // WITH DOT ABOVE, LATIN SMALL LETTER
234
+ 0x1E9B: 's', // WITH DOT ABOVE, LATIN SMALL LETTER LONG
235
+ 0x1E63: 's', // WITH DOT BELOW, LATIN SMALL LETTER
236
+ 0x0282: 's', // WITH HOOK, LATIN SMALL LETTER
237
+ 0x023F: 's', // WITH SWASH TAIL, LATIN SMALL LETTER
238
+ 0x017F: 's', // , LATIN SMALL LETTER LONG
239
+ 0x00DF: 's', // , LATIN SMALL LETTER SHARP
240
+ 0x209B: 's', // , LATIN SUBSCRIPT SMALL LETTER
241
+ 0x0165: 't', // WITH CARON, LATIN SMALL LETTER
242
+ 0x0163: 't', // WITH CEDILLA, LATIN SMALL LETTER
243
+ 0x1E71: 't', // WITH CIRCUMFLEX BELOW, LATIN SMALL LETTER
244
+ 0x021B: 't', // WITH COMMA BELOW, LATIN SMALL LETTER
245
+ 0x0236: 't', // WITH CURL, LATIN SMALL LETTER
246
+ 0x1E97: 't', // WITH DIAERESIS, LATIN SMALL LETTER
247
+ 0x1E6B: 't', // WITH DOT ABOVE, LATIN SMALL LETTER
248
+ 0x1E6D: 't', // WITH DOT BELOW, LATIN SMALL LETTER
249
+ 0x01AD: 't', // WITH HOOK, LATIN SMALL LETTER
250
+ 0x1E6F: 't', // WITH LINE BELOW, LATIN SMALL LETTER
251
+ 0x01AB: 't', // WITH PALATAL HOOK, LATIN SMALL LETTER
252
+ 0x0288: 't', // WITH RETROFLEX HOOK, LATIN SMALL LETTER
253
+ 0x0167: 't', // WITH STROKE, LATIN SMALL LETTER
254
+ 0x036D: 't', // , COMBINING LATIN SMALL LETTER
255
+ 0x0287: 't', // , LATIN SMALL LETTER TURNED
256
+ 0x209C: 't', // , LATIN SUBSCRIPT SMALL LETTER
257
+ 0x0289: 'u', // BAR, LATIN SMALL LETTER
258
+ 0x00FA: 'u', // WITH ACUTE, LATIN SMALL LETTER
259
+ 0x016D: 'u', // WITH BREVE, LATIN SMALL LETTER
260
+ 0x01D4: 'u', // WITH CARON, LATIN SMALL LETTER
261
+ 0x1E77: 'u', // WITH CIRCUMFLEX BELOW, LATIN SMALL LETTER
262
+ 0x00FB: 'u', // WITH CIRCUMFLEX, LATIN SMALL LETTER
263
+ 0x1E73: 'u', // WITH DIAERESIS BELOW, LATIN SMALL LETTER
264
+ 0x00FC: 'u', // WITH DIAERESIS, LATIN SMALL LETTER
265
+ 0x1EE5: 'u', // WITH DOT BELOW, LATIN SMALL LETTER
266
+ 0x0171: 'u', // WITH DOUBLE ACUTE, LATIN SMALL LETTER
267
+ 0x0215: 'u', // WITH DOUBLE GRAVE, LATIN SMALL LETTER
268
+ 0x00F9: 'u', // WITH GRAVE, LATIN SMALL LETTER
269
+ 0x1EE7: 'u', // WITH HOOK ABOVE, LATIN SMALL LETTER
270
+ 0x01B0: 'u', // WITH HORN, LATIN SMALL LETTER
271
+ 0x0217: 'u', // WITH INVERTED BREVE, LATIN SMALL LETTER
272
+ 0x016B: 'u', // WITH MACRON, LATIN SMALL LETTER
273
+ 0x0173: 'u', // WITH OGONEK, LATIN SMALL LETTER
274
+ 0x016F: 'u', // WITH RING ABOVE, LATIN SMALL LETTER
275
+ 0x1E75: 'u', // WITH TILDE BELOW, LATIN SMALL LETTER
276
+ 0x0169: 'u', // WITH TILDE, LATIN SMALL LETTER
277
+ 0x0367: 'u', // , COMBINING LATIN SMALL LETTER
278
+ 0x1D1D: 'u', // , LATIN SMALL LETTER SIDEWAYS
279
+ 0x1D1E: 'u', // , LATIN SMALL LETTER SIDEWAYS DIAERESIZED
280
+ 0x1D64: 'u', // , LATIN SUBSCRIPT SMALL LETTER
281
+ 0x1E7F: 'v', // WITH DOT BELOW, LATIN SMALL LETTER
282
+ 0x028B: 'v', // WITH HOOK, LATIN SMALL LETTER
283
+ 0x1E7D: 'v', // WITH TILDE, LATIN SMALL LETTER
284
+ 0x036E: 'v', // , COMBINING LATIN SMALL LETTER
285
+ 0x028C: 'v', // , LATIN SMALL LETTER TURNED
286
+ 0x1D65: 'v', // , LATIN SUBSCRIPT SMALL LETTER
287
+ 0x1E83: 'w', // WITH ACUTE, LATIN SMALL LETTER
288
+ 0x0175: 'w', // WITH CIRCUMFLEX, LATIN SMALL LETTER
289
+ 0x1E85: 'w', // WITH DIAERESIS, LATIN SMALL LETTER
290
+ 0x1E87: 'w', // WITH DOT ABOVE, LATIN SMALL LETTER
291
+ 0x1E89: 'w', // WITH DOT BELOW, LATIN SMALL LETTER
292
+ 0x1E81: 'w', // WITH GRAVE, LATIN SMALL LETTER
293
+ 0x1E98: 'w', // WITH RING ABOVE, LATIN SMALL LETTER
294
+ 0x028D: 'w', // , LATIN SMALL LETTER TURNED
295
+ 0x1E8D: 'x', // WITH DIAERESIS, LATIN SMALL LETTER
296
+ 0x1E8B: 'x', // WITH DOT ABOVE, LATIN SMALL LETTER
297
+ 0x036F: 'x', // , COMBINING LATIN SMALL LETTER
298
+ 0x00FD: 'y', // WITH ACUTE, LATIN SMALL LETTER
299
+ 0x0177: 'y', // WITH CIRCUMFLEX, LATIN SMALL LETTER
300
+ 0x00FF: 'y', // WITH DIAERESIS, LATIN SMALL LETTER
301
+ 0x1E8F: 'y', // WITH DOT ABOVE, LATIN SMALL LETTER
302
+ 0x1EF5: 'y', // WITH DOT BELOW, LATIN SMALL LETTER
303
+ 0x1EF3: 'y', // WITH GRAVE, LATIN SMALL LETTER
304
+ 0x1EF7: 'y', // WITH HOOK ABOVE, LATIN SMALL LETTER
305
+ 0x01B4: 'y', // WITH HOOK, LATIN SMALL LETTER
306
+ 0x0233: 'y', // WITH MACRON, LATIN SMALL LETTER
307
+ 0x1E99: 'y', // WITH RING ABOVE, LATIN SMALL LETTER
308
+ 0x024F: 'y', // WITH STROKE, LATIN SMALL LETTER
309
+ 0x1EF9: 'y', // WITH TILDE, LATIN SMALL LETTER
310
+ 0x028E: 'y', // , LATIN SMALL LETTER TURNED
311
+ 0x017A: 'z', // WITH ACUTE, LATIN SMALL LETTER
312
+ 0x017E: 'z', // WITH CARON, LATIN SMALL LETTER
313
+ 0x1E91: 'z', // WITH CIRCUMFLEX, LATIN SMALL LETTER
314
+ 0x0291: 'z', // WITH CURL, LATIN SMALL LETTER
315
+ 0x017C: 'z', // WITH DOT ABOVE, LATIN SMALL LETTER
316
+ 0x1E93: 'z', // WITH DOT BELOW, LATIN SMALL LETTER
317
+ 0x0225: 'z', // WITH HOOK, LATIN SMALL LETTER
318
+ 0x1E95: 'z', // WITH LINE BELOW, LATIN SMALL LETTER
319
+ 0x0290: 'z', // WITH RETROFLEX HOOK, LATIN SMALL LETTER
320
+ 0x01B6: 'z', // WITH STROKE, LATIN SMALL LETTER
321
+ 0x0240: 'z', // WITH SWASH TAIL, LATIN SMALL LETTER
322
+ 0x0251: 'a', // , latin small letter script
323
+ 0x00C1: 'A', // WITH ACUTE, LATIN CAPITAL LETTER
324
+ 0x00C2: 'A', // WITH CIRCUMFLEX, LATIN CAPITAL LETTER
325
+ 0x00C4: 'A', // WITH DIAERESIS, LATIN CAPITAL LETTER
326
+ 0x00C0: 'A', // WITH GRAVE, LATIN CAPITAL LETTER
327
+ 0x00C5: 'A', // WITH RING ABOVE, LATIN CAPITAL LETTER
328
+ 0x023A: 'A', // WITH STROKE, LATIN CAPITAL LETTER
329
+ 0x00C3: 'A', // WITH TILDE, LATIN CAPITAL LETTER
330
+ 0x1D00: 'A', // , LATIN LETTER SMALL CAPITAL
331
+ 0x0181: 'B', // WITH HOOK, LATIN CAPITAL LETTER
332
+ 0x0243: 'B', // WITH STROKE, LATIN CAPITAL LETTER
333
+ 0x0299: 'B', // , LATIN LETTER SMALL CAPITAL
334
+ 0x1D03: 'B', // , LATIN LETTER SMALL CAPITAL BARRED
335
+ 0x00C7: 'C', // WITH CEDILLA, LATIN CAPITAL LETTER
336
+ 0x023B: 'C', // WITH STROKE, LATIN CAPITAL LETTER
337
+ 0x1D04: 'C', // , LATIN LETTER SMALL CAPITAL
338
+ 0x018A: 'D', // WITH HOOK, LATIN CAPITAL LETTER
339
+ 0x0189: 'D', // , LATIN CAPITAL LETTER AFRICAN
340
+ 0x1D05: 'D', // , LATIN LETTER SMALL CAPITAL
341
+ 0x00C9: 'E', // WITH ACUTE, LATIN CAPITAL LETTER
342
+ 0x00CA: 'E', // WITH CIRCUMFLEX, LATIN CAPITAL LETTER
343
+ 0x00CB: 'E', // WITH DIAERESIS, LATIN CAPITAL LETTER
344
+ 0x00C8: 'E', // WITH GRAVE, LATIN CAPITAL LETTER
345
+ 0x0246: 'E', // WITH STROKE, LATIN CAPITAL LETTER
346
+ 0x0190: 'E', // , LATIN CAPITAL LETTER OPEN
347
+ 0x018E: 'E', // , LATIN CAPITAL LETTER REVERSED
348
+ 0x1D07: 'E', // , LATIN LETTER SMALL CAPITAL
349
+ 0x0193: 'G', // WITH HOOK, LATIN CAPITAL LETTER
350
+ 0x029B: 'G', // WITH HOOK, LATIN LETTER SMALL CAPITAL
351
+ 0x0262: 'G', // , LATIN LETTER SMALL CAPITAL
352
+ 0x029C: 'H', // , LATIN LETTER SMALL CAPITAL
353
+ 0x00CD: 'I', // WITH ACUTE, LATIN CAPITAL LETTER
354
+ 0x00CE: 'I', // WITH CIRCUMFLEX, LATIN CAPITAL LETTER
355
+ 0x00CF: 'I', // WITH DIAERESIS, LATIN CAPITAL LETTER
356
+ 0x0130: 'I', // WITH DOT ABOVE, LATIN CAPITAL LETTER
357
+ 0x00CC: 'I', // WITH GRAVE, LATIN CAPITAL LETTER
358
+ 0x0197: 'I', // WITH STROKE, LATIN CAPITAL LETTER
359
+ 0x026A: 'I', // , LATIN LETTER SMALL CAPITAL
360
+ 0x0248: 'J', // WITH STROKE, LATIN CAPITAL LETTER
361
+ 0x1D0A: 'J', // , LATIN LETTER SMALL CAPITAL
362
+ 0x1D0B: 'K', // , LATIN LETTER SMALL CAPITAL
363
+ 0x023D: 'L', // WITH BAR, LATIN CAPITAL LETTER
364
+ 0x1D0C: 'L', // WITH STROKE, LATIN LETTER SMALL CAPITAL
365
+ 0x029F: 'L', // , LATIN LETTER SMALL CAPITAL
366
+ 0x019C: 'M', // , LATIN CAPITAL LETTER TURNED
367
+ 0x1D0D: 'M', // , LATIN LETTER SMALL CAPITAL
368
+ 0x019D: 'N', // WITH LEFT HOOK, LATIN CAPITAL LETTER
369
+ 0x0220: 'N', // WITH LONG RIGHT LEG, LATIN CAPITAL LETTER
370
+ 0x00D1: 'N', // WITH TILDE, LATIN CAPITAL LETTER
371
+ 0x0274: 'N', // , LATIN LETTER SMALL CAPITAL
372
+ 0x1D0E: 'N', // , LATIN LETTER SMALL CAPITAL REVERSED
373
+ 0x00D3: 'O', // WITH ACUTE, LATIN CAPITAL LETTER
374
+ 0x00D4: 'O', // WITH CIRCUMFLEX, LATIN CAPITAL LETTER
375
+ 0x00D6: 'O', // WITH DIAERESIS, LATIN CAPITAL LETTER
376
+ 0x00D2: 'O', // WITH GRAVE, LATIN CAPITAL LETTER
377
+ 0x019F: 'O', // WITH MIDDLE TILDE, LATIN CAPITAL LETTER
378
+ 0x00D8: 'O', // WITH STROKE, LATIN CAPITAL LETTER
379
+ 0x00D5: 'O', // WITH TILDE, LATIN CAPITAL LETTER
380
+ 0x0186: 'O', // , LATIN CAPITAL LETTER OPEN
381
+ 0x1D0F: 'O', // , LATIN LETTER SMALL CAPITAL
382
+ 0x1D10: 'O', // , LATIN LETTER SMALL CAPITAL OPEN
383
+ 0x1D18: 'P', // , LATIN LETTER SMALL CAPITAL
384
+ 0x024A: 'Q', // WITH HOOK TAIL, LATIN CAPITAL LETTER SMALL
385
+ 0x024C: 'R', // WITH STROKE, LATIN CAPITAL LETTER
386
+ 0x0280: 'R', // , LATIN LETTER SMALL CAPITAL
387
+ 0x0281: 'R', // , LATIN LETTER SMALL CAPITAL INVERTED
388
+ 0x1D19: 'R', // , LATIN LETTER SMALL CAPITAL REVERSED
389
+ 0x1D1A: 'R', // , LATIN LETTER SMALL CAPITAL TURNED
390
+ 0x023E: 'T', // WITH DIAGONAL STROKE, LATIN CAPITAL LETTER
391
+ 0x01AE: 'T', // WITH RETROFLEX HOOK, LATIN CAPITAL LETTER
392
+ 0x1D1B: 'T', // , LATIN LETTER SMALL CAPITAL
393
+ 0x0244: 'U', // BAR, LATIN CAPITAL LETTER
394
+ 0x00DA: 'U', // WITH ACUTE, LATIN CAPITAL LETTER
395
+ 0x00DB: 'U', // WITH CIRCUMFLEX, LATIN CAPITAL LETTER
396
+ 0x00DC: 'U', // WITH DIAERESIS, LATIN CAPITAL LETTER
397
+ 0x00D9: 'U', // WITH GRAVE, LATIN CAPITAL LETTER
398
+ 0x1D1C: 'U', // , LATIN LETTER SMALL CAPITAL
399
+ 0x01B2: 'V', // WITH HOOK, LATIN CAPITAL LETTER
400
+ 0x0245: 'V', // , LATIN CAPITAL LETTER TURNED
401
+ 0x1D20: 'V', // , LATIN LETTER SMALL CAPITAL
402
+ 0x1D21: 'W', // , LATIN LETTER SMALL CAPITAL
403
+ 0x00DD: 'Y', // WITH ACUTE, LATIN CAPITAL LETTER
404
+ 0x0178: 'Y', // WITH DIAERESIS, LATIN CAPITAL LETTER
405
+ 0x024E: 'Y', // WITH STROKE, LATIN CAPITAL LETTER
406
+ 0x028F: 'Y', // , LATIN LETTER SMALL CAPITAL
407
+ 0x1D22: 'Z', // , LATIN LETTER SMALL CAPITAL
408
+
409
+ 'Ắ': 'A',
410
+ 'Ấ': 'A',
411
+ 'Ằ': 'A',
412
+ 'Ầ': 'A',
413
+ 'Ẳ': 'A',
414
+ 'Ẩ': 'A',
415
+ 'Ẵ': 'A',
416
+ 'Ẫ': 'A',
417
+ 'Ặ': 'A',
418
+ 'Ậ': 'A',
419
+
420
+ 'ắ': 'a',
421
+ 'ấ': 'a',
422
+ 'ằ': 'a',
423
+ 'ầ': 'a',
424
+ 'ẳ': 'a',
425
+ 'ẩ': 'a',
426
+ 'ẵ': 'a',
427
+ 'ẫ': 'a',
428
+ 'ặ': 'a',
429
+ 'ậ': 'a',
430
+
431
+ 'Ế': 'E',
432
+ 'Ề': 'E',
433
+ 'Ể': 'E',
434
+ 'Ễ': 'E',
435
+ 'Ệ': 'E',
436
+
437
+ 'ế': 'e',
438
+ 'ề': 'e',
439
+ 'ể': 'e',
440
+ 'ễ': 'e',
441
+ 'ệ': 'e',
442
+
443
+ 'Ố': 'O',
444
+ 'Ớ': 'O',
445
+ 'Ồ': 'O',
446
+ 'Ờ': 'O',
447
+ 'Ổ': 'O',
448
+ 'Ở': 'O',
449
+ 'Ỗ': 'O',
450
+ 'Ỡ': 'O',
451
+ 'Ộ': 'O',
452
+ 'Ợ': 'O',
453
+
454
+ 'ố': 'o',
455
+ 'ớ': 'o',
456
+ 'ồ': 'o',
457
+ 'ờ': 'o',
458
+ 'ổ': 'o',
459
+ 'ở': 'o',
460
+ 'ỗ': 'o',
461
+ 'ỡ': 'o',
462
+ 'ộ': 'o',
463
+ 'ợ': 'o',
464
+
465
+ 'Ứ': 'U',
466
+ 'Ừ': 'U',
467
+ 'Ử': 'U',
468
+ 'Ữ': 'U',
469
+ 'Ự': 'U',
470
+
471
+ 'ứ': 'u',
472
+ 'ừ': 'u',
473
+ 'ử': 'u',
474
+ 'ữ': 'u',
475
+ 'ự': 'u',
476
+ }
477
+
478
+ // NormalizeRunes normalizes latin script letters
479
+ func NormalizeRunes(runes []rune) []rune {
480
+ ret := make([]rune, len(runes))
481
+ copy(ret, runes)
482
+ for idx, r := range runes {
483
+ if r < 0x00C0 || r > 0x2184 {
484
+ continue
485
+ }
486
+ n := normalized[r]
487
+ if n > 0 {
488
+ ret[idx] = normalized[r]
489
+ }
490
+ }
491
+ return ret
492
+ }