YkLib 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +34 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +6 -0
  11. data/YkLib.gemspec +29 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/lib/YkLib/Yk/__advance__.rb +151 -0
  15. data/lib/YkLib/Yk/__defun__.rb +44 -0
  16. data/lib/YkLib/Yk/__hook__.rb +244 -0
  17. data/lib/YkLib/Yk/__minmax__.rb +123 -0
  18. data/lib/YkLib/Yk/__stdlog.rb +329 -0
  19. data/lib/YkLib/Yk/adhocLiterals/email.rb +119 -0
  20. data/lib/YkLib/Yk/adhocLiterals/path.rb +402 -0
  21. data/lib/YkLib/Yk/adhocLiterals/tag.rb +19 -0
  22. data/lib/YkLib/Yk/adhocLiterals/url.rb +36 -0
  23. data/lib/YkLib/Yk/adhocLiterals.rb +199 -0
  24. data/lib/YkLib/Yk/auto_escseq.rb +5 -0
  25. data/lib/YkLib/Yk/auto_pstore.rb +179 -0
  26. data/lib/YkLib/Yk/bsearch.rb +120 -0
  27. data/lib/YkLib/Yk/clambda.rb +309 -0
  28. data/lib/YkLib/Yk/confLine.rb +423 -0
  29. data/lib/YkLib/Yk/create_tty_width_available.rb +24 -0
  30. data/lib/YkLib/Yk/crypt.rb +26 -0
  31. data/lib/YkLib/Yk/debug2 +1 -0
  32. data/lib/YkLib/Yk/debug2.rb +473 -0
  33. data/lib/YkLib/Yk/debugout.rb +139 -0
  34. data/lib/YkLib/Yk/email_tz.rb +533 -0
  35. data/lib/YkLib/Yk/enum_expect.rb +170 -0
  36. data/lib/YkLib/Yk/errlog.rb +5 -0
  37. data/lib/YkLib/Yk/escseq.rb +59 -0
  38. data/lib/YkLib/Yk/eval_alt.rb +281 -0
  39. data/lib/YkLib/Yk/expector.rb +93 -0
  40. data/lib/YkLib/Yk/fetch.rb +556 -0
  41. data/lib/YkLib/Yk/fetch_old.rb +290 -0
  42. data/lib/YkLib/Yk/fib.rb +158 -0
  43. data/lib/YkLib/Yk/file_aux.rb +843 -0
  44. data/lib/YkLib/Yk/file_aux2.rb +919 -0
  45. data/lib/YkLib/Yk/file_aux_old.rb +160 -0
  46. data/lib/YkLib/Yk/filemod.rb +19 -0
  47. data/lib/YkLib/Yk/force_escseq.rb +3 -0
  48. data/lib/YkLib/Yk/generator__.rb +144 -0
  49. data/lib/YkLib/Yk/generator__.rb.org +139 -0
  50. data/lib/YkLib/Yk/indenter/argless_case.rb +46 -0
  51. data/lib/YkLib/Yk/indenter/each_token.rb +671 -0
  52. data/lib/YkLib/Yk/indenter/free_case.rb +313 -0
  53. data/lib/YkLib/Yk/indenter/if_less.rb +53 -0
  54. data/lib/YkLib/Yk/indenter/independent_ensure.rb +23 -0
  55. data/lib/YkLib/Yk/indenter/independent_rescue.rb +23 -0
  56. data/lib/YkLib/Yk/indenter/operand_circumflex.rb +0 -0
  57. data/lib/YkLib/Yk/indenter/operand_period.rb +16 -0
  58. data/lib/YkLib/Yk/indenter/parenless_and.rb +37 -0
  59. data/lib/YkLib/Yk/indenter/post_test.rb +48 -0
  60. data/lib/YkLib/Yk/indenter/token.rb +1525 -0
  61. data/lib/YkLib/Yk/indenter.rb +1382 -0
  62. data/lib/YkLib/Yk/inot.rb +265 -0
  63. data/lib/YkLib/Yk/intf.rb +815 -0
  64. data/lib/YkLib/Yk/io_aux.rb +1332 -0
  65. data/lib/YkLib/Yk/ioctl.rb +60 -0
  66. data/lib/YkLib/Yk/ipcc.rb +87 -0
  67. data/lib/YkLib/Yk/ipcountry.rb +207 -0
  68. data/lib/YkLib/Yk/ipv4adr.rb +318 -0
  69. data/lib/YkLib/Yk/localmail.rb +276 -0
  70. data/lib/YkLib/Yk/method_chain.rb +359 -0
  71. data/lib/YkLib/Yk/misc_tz.rb +1716 -0
  72. data/lib/YkLib/Yk/missing_method.rb +50 -0
  73. data/lib/YkLib/Yk/mojiConv.rb +257 -0
  74. data/lib/YkLib/Yk/nostdlog.rb +4 -0
  75. data/lib/YkLib/Yk/on_marshal.rb +20 -0
  76. data/lib/YkLib/Yk/overrider.rb +47 -0
  77. data/lib/YkLib/Yk/path.rb +293 -0
  78. data/lib/YkLib/Yk/path_aux.rb +883 -0
  79. data/lib/YkLib/Yk/path_aux_alt.rb +0 -0
  80. data/lib/YkLib/Yk/path_rep.rb +1267 -0
  81. data/lib/YkLib/Yk/pg_setup.rb +917 -0
  82. data/lib/YkLib/Yk/procinfo.rb +314 -0
  83. data/lib/YkLib/Yk/proclist.rb +492 -0
  84. data/lib/YkLib/Yk/property.rb +863 -0
  85. data/lib/YkLib/Yk/ranger.rb +606 -0
  86. data/lib/YkLib/Yk/resolv_tz.rb +88 -0
  87. data/lib/YkLib/Yk/rlprompt.rb +73 -0
  88. data/lib/YkLib/Yk/rootexec.rb +48 -0
  89. data/lib/YkLib/Yk/rpm-packageproxy.rb +784 -0
  90. data/lib/YkLib/Yk/rpm-packageproxy2.rb +1430 -0
  91. data/lib/YkLib/Yk/rwhen.rb +21 -0
  92. data/lib/YkLib/Yk/selector.rb +124 -0
  93. data/lib/YkLib/Yk/set.rb +170 -0
  94. data/lib/YkLib/Yk/shellquote.rb +300 -0
  95. data/lib/YkLib/Yk/sio.rb +1001 -0
  96. data/lib/YkLib/Yk/sio0.rb +835 -0
  97. data/lib/YkLib/Yk/sio_aux.rb +1524 -0
  98. data/lib/YkLib/Yk/sio_inot.rb +86 -0
  99. data/lib/YkLib/Yk/sock_aux.rb +42 -0
  100. data/lib/YkLib/Yk/spipe.rb +843 -0
  101. data/lib/YkLib/Yk/sql_table.rb +565 -0
  102. data/lib/YkLib/Yk/stdlog.rb +4 -0
  103. data/lib/YkLib/Yk/syscommand.rb +173 -0
  104. data/lib/YkLib/Yk/sysinit.rb +75 -0
  105. data/lib/YkLib/Yk/ttyFontWidth.rb +46113 -0
  106. data/lib/YkLib/Yk/tty_char.dump +0 -0
  107. data/lib/YkLib/Yk/tty_char.rb +47 -0
  108. data/lib/YkLib/Yk/tty_char_create.rb +437031 -0
  109. data/lib/YkLib/Yk/tty_char_static.rb +437016 -0
  110. data/lib/YkLib/Yk/tty_rewrite.rb +142 -0
  111. data/lib/YkLib/Yk/tty_str.rb +461 -0
  112. data/lib/YkLib/Yk/tty_width.dat.rb +114 -0
  113. data/lib/YkLib/Yk/tty_width.rb +180 -0
  114. data/lib/YkLib/Yk/tty_width_available +569 -0
  115. data/lib/YkLib/Yk/tty_width_list +0 -0
  116. data/lib/YkLib/Yk/tty_width_list.linux +280 -0
  117. data/lib/YkLib/Yk/tty_width_list.windows +324 -0
  118. data/lib/YkLib/Yk/tz_tty +0 -0
  119. data/lib/YkLib/Yk/tz_tty.rb +0 -0
  120. data/lib/YkLib/Yk/uprepos.rb +94 -0
  121. data/lib/YkLib/Yk/userinfo.rb +91 -0
  122. data/lib/YkLib/Yk/with.rb +109 -0
  123. data/lib/YkLib/version.rb +3 -0
  124. data/lib/YkLib.rb +6 -0
  125. metadata +170 -0
@@ -0,0 +1,180 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ module TTYWidth
5
+ module_function
6
+ def width str, tabstop, pos
7
+ return -1 if pos == -1
8
+ w = pos
9
+ str.each_codepoint do |cp|
10
+ case cp
11
+ when 0x20 ... 0x7f
12
+ w += 1
13
+ when 0x3190 ... 0x4dc0
14
+ w += 2
15
+ when 0x09 #tab
16
+ if tabstop
17
+ w = (w.div(tabstop) + 1) * tabstop
18
+ else
19
+ raise ArgumentError.new("tabstop is not specified, cannot use '\t' for width calculation")
20
+ end
21
+ else
22
+ i = Data.bsearch_index do |item|
23
+ item[0] > cp
24
+ end
25
+ if i
26
+ tmp = Data[i - 1][1]
27
+ if tmp == -1
28
+ if cp > 0x20
29
+ raise ArgumentError.new("cannot use '#{cp.chr(Encoding::UTF_8)}' for width calculation")
30
+ elsif cp == "\n"
31
+ raise ArgumentError.new("cannot use '\\n' for width calculation")
32
+ elsif cp == "\r"
33
+ raise ArgumentError.new("cannot use '\\r' for width calculation")
34
+ else
35
+ raise ArgumentError.new("cannot use control code, 0x#{cp.to_s(16)} for width calculation")
36
+ end
37
+ else
38
+ w += tmp
39
+ end
40
+ else
41
+ w += 1
42
+ end
43
+ end
44
+ end
45
+ w
46
+ end
47
+ Data = [
48
+ [0x0000, -1], [0x0020, 1], [0x007f, -1], [0x009b, -1], [0x009c, -1],
49
+ [0x00a0, 1], [0x00a7, -1], [0x00a9, 1], [0x00b0, -1], [0x00b2, 1],
50
+ [0x00b4, -1], [0x00b5, 1], [0x00b6, -1], [0x00b7, 1], [0x00d7, -1],
51
+ [0x00d8, 1], [0x00f7, -1], [0x00f8, 1], [0x01ce, -1], [0x01cf, 1],
52
+ [0x01d0, -1], [0x01d1, 1], [0x01d2, -1], [0x01d3, 1], [0x01d4, -1],
53
+ [0x01d5, 1], [0x01d6, -1], [0x01d7, 1], [0x01d8, -1], [0x01d9, 1],
54
+ [0x01da, -1], [0x01db, 1], [0x01dc, -1], [0x01dd, 1], [0x02ca, -1],
55
+ [0x02cc, 1], [0x0300, -1], [0x0370, 1], [0x0391, -1], [0x03a2, 1],
56
+ [0x03a3, -1], [0x03aa, 1], [0x03b1, -1], [0x03c2, 1], [0x03c3, -1],
57
+ [0x03ca, 1], [0x0401, -1], [0x0402, 1], [0x0410, -1], [0x0450, 1],
58
+ [0x0451, -1], [0x0452, 1], [0x0483, -1], [0x0487, 1], [0x0488, -1],
59
+ [0x048a, 1], [0x0591, -1], [0x05be, 1], [0x05bf, -1], [0x05c0, 1],
60
+ [0x05c1, -1], [0x05c3, 1], [0x05c4, -1], [0x05c6, 1], [0x05c7, -1],
61
+ [0x05c8, 1], [0x0600, -1], [0x0604, 1], [0x0610, -1], [0x0616, 1],
62
+ [0x064b, -1], [0x065f, 1], [0x0670, -1], [0x0671, 1], [0x06d6, -1],
63
+ [0x06e5, 1], [0x06e7, -1], [0x06e9, 1], [0x06ea, -1], [0x06ee, 1],
64
+ [0x070f, -1], [0x0710, 1], [0x0711, -1], [0x0712, 1], [0x0730, -1],
65
+ [0x074b, 1], [0x07a6, -1], [0x07b1, 1], [0x07eb, -1], [0x07f4, 1],
66
+ [0x0901, -1], [0x0903, 1], [0x093c, -1], [0x093d, 1], [0x0941, -1],
67
+ [0x0949, 1], [0x094d, -1], [0x094e, 1], [0x0951, -1], [0x0955, 1],
68
+ [0x0962, -1], [0x0964, 1], [0x0981, -1], [0x0982, 1], [0x09bc, -1],
69
+ [0x09bd, 1], [0x09c1, -1], [0x09c5, 1], [0x09cd, -1], [0x09ce, 1],
70
+ [0x09e2, -1], [0x09e4, 1], [0x0a01, -1], [0x0a03, 1], [0x0a3c, -1],
71
+ [0x0a3d, 1], [0x0a41, -1], [0x0a43, 1], [0x0a47, -1], [0x0a49, 1],
72
+ [0x0a4b, -1], [0x0a4e, 1], [0x0a70, -1], [0x0a72, 1], [0x0a81, -1],
73
+ [0x0a83, 1], [0x0abc, -1], [0x0abd, 1], [0x0ac1, -1], [0x0ac6, 1],
74
+ [0x0ac7, -1], [0x0ac9, 1], [0x0acd, -1], [0x0ace, 1], [0x0ae2, -1],
75
+ [0x0ae4, 1], [0x0b01, -1], [0x0b02, 1], [0x0b3c, -1], [0x0b3d, 1],
76
+ [0x0b3f, -1], [0x0b40, 1], [0x0b41, -1], [0x0b44, 1], [0x0b4d, -1],
77
+ [0x0b4e, 1], [0x0b56, -1], [0x0b57, 1], [0x0b82, -1], [0x0b83, 1],
78
+ [0x0bc0, -1], [0x0bc1, 1], [0x0bcd, -1], [0x0bce, 1], [0x0c3e, -1],
79
+ [0x0c41, 1], [0x0c46, -1], [0x0c49, 1], [0x0c4a, -1], [0x0c4e, 1],
80
+ [0x0c55, -1], [0x0c57, 1], [0x0cbc, -1], [0x0cbd, 1], [0x0cbf, -1],
81
+ [0x0cc0, 1], [0x0cc6, -1], [0x0cc7, 1], [0x0ccc, -1], [0x0cce, 1],
82
+ [0x0ce2, -1], [0x0ce4, 1], [0x0d41, -1], [0x0d44, 1], [0x0d4d, -1],
83
+ [0x0d4e, 1], [0x0dca, -1], [0x0dcb, 1], [0x0dd2, -1], [0x0dd5, 1],
84
+ [0x0dd6, -1], [0x0dd7, 1], [0x0e31, -1], [0x0e32, 1], [0x0e34, -1],
85
+ [0x0e3b, 1], [0x0e47, -1], [0x0e4f, 1], [0x0eb1, -1], [0x0eb2, 1],
86
+ [0x0eb4, -1], [0x0eba, 1], [0x0ebb, -1], [0x0ebd, 1], [0x0ec8, -1],
87
+ [0x0ece, 1], [0x0f18, -1], [0x0f1a, 1], [0x0f35, -1], [0x0f36, 1],
88
+ [0x0f37, -1], [0x0f38, 1], [0x0f39, -1], [0x0f3a, 1], [0x0f71, -1],
89
+ [0x0f7f, 1], [0x0f80, -1], [0x0f85, 1], [0x0f86, -1], [0x0f88, 1],
90
+ [0x0f90, -1], [0x0f98, 1], [0x0f99, -1], [0x0fbd, 1], [0x0fc6, -1],
91
+ [0x0fc7, 1], [0x102d, -1], [0x1031, 1], [0x1032, -1], [0x1033, 1],
92
+ [0x1036, -1], [0x1038, 1], [0x1039, -1], [0x103a, 1], [0x1058, -1],
93
+ [0x105a, 1], [0x1100, 2], [0x1160, -1], [0x1200, 1], [0x135f, -1],
94
+ [0x1360, 1], [0x1712, -1], [0x1715, 1], [0x1732, -1], [0x1735, 1],
95
+ [0x1752, -1], [0x1754, 1], [0x1772, -1], [0x1774, 1], [0x17b4, -1],
96
+ [0x17b6, 1], [0x17b7, -1], [0x17be, 1], [0x17c6, -1], [0x17c7, 1],
97
+ [0x17c9, -1], [0x17d4, 1], [0x17dd, -1], [0x17de, 1], [0x180b, -1],
98
+ [0x180e, 1], [0x18a9, -1], [0x18aa, 1], [0x1920, -1], [0x1923, 1],
99
+ [0x1927, -1], [0x1929, 1], [0x1932, -1], [0x1933, 1], [0x1939, -1],
100
+ [0x193c, 1], [0x1a17, -1], [0x1a19, 1], [0x1b00, -1], [0x1b04, 1],
101
+ [0x1b34, -1], [0x1b35, 1], [0x1b36, -1], [0x1b3b, 1], [0x1b3c, -1],
102
+ [0x1b3d, 1], [0x1b42, -1], [0x1b43, 1], [0x1b6b, -1], [0x1b74, 1],
103
+ [0x1dc0, -1], [0x1dcb, 1], [0x1dfe, -1], [0x1e00, 1], [0x200b, -1],
104
+ [0x2011, 1], [0x2015, -1], [0x2017, 1], [0x2018, -1], [0x201a, 1],
105
+ [0x201c, -1], [0x201e, 1], [0x2020, -1], [0x2022, 1], [0x2025, -1],
106
+ [0x2027, 1], [0x202a, -1], [0x202f, 1], [0x2030, -1], [0x2031, 1],
107
+ [0x2032, -1], [0x2034, 1], [0x203b, -1], [0x203c, 1], [0x2060, -1],
108
+ [0x2064, 1], [0x206a, -1], [0x2070, 1], [0x20d0, -1], [0x20f0, 1],
109
+ [0x2103, -1], [0x2104, 1], [0x2116, -1], [0x2117, 1], [0x2121, -1],
110
+ [0x2122, 1], [0x212b, -1], [0x212c, 1], [0x2160, -1], [0x216c, 1],
111
+ [0x2170, -1], [0x217a, 1], [0x2189, -1], [0x218a, 1], [0x2190, -1],
112
+ [0x2194, 1], [0x21d2, -1], [0x21d3, 1], [0x21d4, -1], [0x21d5, 1],
113
+ [0x2200, -1], [0x2201, 1], [0x2202, -1], [0x2204, 1], [0x2207, -1],
114
+ [0x2209, 1], [0x220b, -1], [0x220c, 1], [0x2211, -1], [0x2212, 1],
115
+ [0x221a, -1], [0x221b, 1], [0x221d, -1], [0x2221, 1], [0x2225, -1],
116
+ [0x2226, 1], [0x2227, -1], [0x222d, 1], [0x222e, -1], [0x222f, 1],
117
+ [0x2234, -1], [0x2236, 1], [0x223d, -1], [0x223e, 1], [0x2252, -1],
118
+ [0x2253, 1], [0x2260, -1], [0x2262, 1], [0x2266, -1], [0x2268, 1],
119
+ [0x226a, -1], [0x226c, 1], [0x2282, -1], [0x2284, 1], [0x2286, -1],
120
+ [0x2288, 1], [0x22a5, -1], [0x22a6, 1], [0x22bf, -1], [0x22c0, 1],
121
+ [0x2312, -1], [0x2313, 1], [0x231a, -1], [0x231b, 1], [0x2328, -1],
122
+ [0x2329, 2], [0x232b, 1], [0x23e9, -1], [0x23eb, 1], [0x23ed, -1],
123
+ [0x23ef, 1], [0x23f0, -1], [0x23f3, 1], [0x23f8, -1], [0x23fb, 1],
124
+ [0x2460, -1], [0x24ea, 1], [0x24eb, -1], [0x2500, 1], [0x25a0, -1],
125
+ [0x25a2, 1], [0x25b2, -1], [0x25b4, 1], [0x25bc, -1], [0x25be, 1],
126
+ [0x25c6, -1], [0x25c8, 1], [0x25cb, -1], [0x25cc, 1], [0x25ce, -1],
127
+ [0x25d0, 1], [0x25ef, -1], [0x25f0, 1], [0x25fb, -1], [0x25ff, 1],
128
+ [0x2600, -1], [0x2607, 1], [0x2609, -1], [0x260a, 1], [0x260e, -1],
129
+ [0x2610, 1], [0x2611, -1], [0x2612, 1], [0x2614, -1], [0x2616, 1],
130
+ [0x2618, -1], [0x2619, 1], [0x261c, -1], [0x261f, 1], [0x2620, -1],
131
+ [0x2621, 1], [0x2622, -1], [0x2624, 1], [0x2626, -1], [0x2627, 1],
132
+ [0x262a, -1], [0x262b, 1], [0x262e, -1], [0x2630, 1], [0x2638, -1],
133
+ [0x2639, 1], [0x2640, -1], [0x2641, 1], [0x2642, -1], [0x2643, 1],
134
+ [0x2648, -1], [0x2654, 1], [0x265f, -1], [0x2660, 1], [0x2668, -1],
135
+ [0x2669, 1], [0x266a, -1], [0x266b, 1], [0x266d, -1], [0x266e, 1],
136
+ [0x266f, -1], [0x2670, 1], [0x267b, -1], [0x267c, 1], [0x267e, -1],
137
+ [0x267f, 1], [0x2692, -1], [0x2693, 1], [0x2694, -1], [0x2695, 1],
138
+ [0x2696, -1], [0x2698, 1], [0x2699, -1], [0x269a, 1], [0x269b, -1],
139
+ [0x269d, 1], [0x269e, -1], [0x26a1, 1], [0x26aa, -1], [0x26ac, 1],
140
+ [0x26b0, -1], [0x26b1, 1], [0x26bd, -1], [0x26c0, 1], [0x26c4, -1],
141
+ [0x26e2, 1], [0x26e3, -1], [0x26e4, 1], [0x26e8, -1], [0x2700, 1],
142
+ [0x2702, -1], [0x2703, 1], [0x2705, -1], [0x2706, 1], [0x2708, -1],
143
+ [0x270e, 1], [0x270f, -1], [0x2710, 1], [0x2712, -1], [0x2713, 1],
144
+ [0x2714, -1], [0x2715, 1], [0x2716, -1], [0x2717, 1], [0x271d, -1],
145
+ [0x271e, 1], [0x2721, -1], [0x2722, 1], [0x2728, -1], [0x2729, 1],
146
+ [0x2733, -1], [0x2735, 1], [0x273d, -1], [0x273e, 1], [0x2744, -1],
147
+ [0x2745, 1], [0x2747, -1], [0x2748, 1], [0x274c, -1], [0x274d, 1],
148
+ [0x274e, -1], [0x274f, 1], [0x2753, -1], [0x2755, 1], [0x2763, -1],
149
+ [0x2765, 1], [0x2776, -1], [0x2780, 1], [0x2795, -1], [0x2798, 1],
150
+ [0x27a1, -1], [0x27a2, 1], [0x27b0, -1], [0x27b1, 1], [0x27bf, -1],
151
+ [0x27c0, 1], [0x2b05, -1], [0x2b08, 1], [0x2b1b, -1], [0x2b1d, 1],
152
+ [0x2b50, -1], [0x2b51, 1], [0x2b55, -1], [0x2b5a, 1], [0x2e80, 2],
153
+ [0x302a, -1], [0x3030, 2], [0x303f, 1], [0x3040, -1], [0x3041, 2],
154
+ [0x3097, -1], [0x309b, 2], [0x3100, -1], [0x3105, 2], [0x312f, -1],
155
+ [0x3131, 2], [0x318f, -1], [0x3190, 2], [0x4dc0, -1], [0x4e00, 2],
156
+ [0xa4c7, -1], [0xa4d0, 1], [0xa806, -1], [0xa807, 1], [0xa80b, -1],
157
+ [0xa80c, 1], [0xa825, -1], [0xa827, 1], [0xa960, -1], [0xa97d, 1],
158
+ [0xac00, 2], [0xd7a4, 1], [0xd800, -1], [0xf900, 2], [0xfb00, 1],
159
+ [0xfb1e, -1], [0xfb1f, 1], [0xfe00, -1], [0xfe24, 1], [0xfe30, 2],
160
+ [0xfe6c, -1], [0xfe70, 1], [0xfeff, -1], [0xff01, 2], [0xff61, 1],
161
+ [0xffe0, 2], [0xffe7, 1], [0xfff9, -1], [0xfffc, 1]
162
+ ]
163
+ end
164
+
165
+ if File.expand_path(__FILE__) == File.expand_path($0)
166
+ 1.upto 0xffff do |i|
167
+ w = nil
168
+ c = nil
169
+ begin
170
+ c = i.chr(Encoding::UTF_8)
171
+ w = TTYWidth.width(c, 4, 0)
172
+ rescue ArgumentError
173
+ rescue RangeError
174
+ else
175
+ if w != -1
176
+ print "0x#{i.to_s(16)}:'#{c*50}' #{w}\n"
177
+ end
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,569 @@
1
+ 0 -1
2
+ 20 1
3
+ 7f -1
4
+ 9b -1
5
+ 9c -1
6
+ a0 1
7
+ a7 -1
8
+ a9 1
9
+ b0 -1
10
+ b2 1
11
+ b4 -1
12
+ b5 1
13
+ b6 -1
14
+ b7 1
15
+ d7 -1
16
+ d8 1
17
+ f7 -1
18
+ f8 1
19
+ 1ce -1
20
+ 1cf 1
21
+ 1d0 -1
22
+ 1d1 1
23
+ 1d2 -1
24
+ 1d3 1
25
+ 1d4 -1
26
+ 1d5 1
27
+ 1d6 -1
28
+ 1d7 1
29
+ 1d8 -1
30
+ 1d9 1
31
+ 1da -1
32
+ 1db 1
33
+ 1dc -1
34
+ 1dd 1
35
+ 2ca -1
36
+ 2cc 1
37
+ 300 -1
38
+ 370 1
39
+ 391 -1
40
+ 3a2 1
41
+ 3a3 -1
42
+ 3aa 1
43
+ 3b1 -1
44
+ 3c2 1
45
+ 3c3 -1
46
+ 3ca 1
47
+ 401 -1
48
+ 402 1
49
+ 410 -1
50
+ 450 1
51
+ 451 -1
52
+ 452 1
53
+ 483 -1
54
+ 487 1
55
+ 488 -1
56
+ 48a 1
57
+ 591 -1
58
+ 5be 1
59
+ 5bf -1
60
+ 5c0 1
61
+ 5c1 -1
62
+ 5c3 1
63
+ 5c4 -1
64
+ 5c6 1
65
+ 5c7 -1
66
+ 5c8 1
67
+ 600 -1
68
+ 604 1
69
+ 610 -1
70
+ 616 1
71
+ 64b -1
72
+ 65f 1
73
+ 670 -1
74
+ 671 1
75
+ 6d6 -1
76
+ 6e5 1
77
+ 6e7 -1
78
+ 6e9 1
79
+ 6ea -1
80
+ 6ee 1
81
+ 70f -1
82
+ 710 1
83
+ 711 -1
84
+ 712 1
85
+ 730 -1
86
+ 74b 1
87
+ 7a6 -1
88
+ 7b1 1
89
+ 7eb -1
90
+ 7f4 1
91
+ 901 -1
92
+ 903 1
93
+ 93c -1
94
+ 93d 1
95
+ 941 -1
96
+ 949 1
97
+ 94d -1
98
+ 94e 1
99
+ 951 -1
100
+ 955 1
101
+ 962 -1
102
+ 964 1
103
+ 981 -1
104
+ 982 1
105
+ 9bc -1
106
+ 9bd 1
107
+ 9c1 -1
108
+ 9c5 1
109
+ 9cd -1
110
+ 9ce 1
111
+ 9e2 -1
112
+ 9e4 1
113
+ a01 -1
114
+ a03 1
115
+ a3c -1
116
+ a3d 1
117
+ a41 -1
118
+ a43 1
119
+ a47 -1
120
+ a49 1
121
+ a4b -1
122
+ a4e 1
123
+ a70 -1
124
+ a72 1
125
+ a81 -1
126
+ a83 1
127
+ abc -1
128
+ abd 1
129
+ ac1 -1
130
+ ac6 1
131
+ ac7 -1
132
+ ac9 1
133
+ acd -1
134
+ ace 1
135
+ ae2 -1
136
+ ae4 1
137
+ b01 -1
138
+ b02 1
139
+ b3c -1
140
+ b3d 1
141
+ b3f -1
142
+ b40 1
143
+ b41 -1
144
+ b44 1
145
+ b4d -1
146
+ b4e 1
147
+ b56 -1
148
+ b57 1
149
+ b82 -1
150
+ b83 1
151
+ bc0 -1
152
+ bc1 1
153
+ bcd -1
154
+ bce 1
155
+ c3e -1
156
+ c41 1
157
+ c46 -1
158
+ c49 1
159
+ c4a -1
160
+ c4e 1
161
+ c55 -1
162
+ c57 1
163
+ cbc -1
164
+ cbd 1
165
+ cbf -1
166
+ cc0 1
167
+ cc6 -1
168
+ cc7 1
169
+ ccc -1
170
+ cce 1
171
+ ce2 -1
172
+ ce4 1
173
+ d41 -1
174
+ d44 1
175
+ d4d -1
176
+ d4e 1
177
+ dca -1
178
+ dcb 1
179
+ dd2 -1
180
+ dd5 1
181
+ dd6 -1
182
+ dd7 1
183
+ e31 -1
184
+ e32 1
185
+ e34 -1
186
+ e3b 1
187
+ e47 -1
188
+ e4f 1
189
+ eb1 -1
190
+ eb2 1
191
+ eb4 -1
192
+ eba 1
193
+ ebb -1
194
+ ebd 1
195
+ ec8 -1
196
+ ece 1
197
+ f18 -1
198
+ f1a 1
199
+ f35 -1
200
+ f36 1
201
+ f37 -1
202
+ f38 1
203
+ f39 -1
204
+ f3a 1
205
+ f71 -1
206
+ f7f 1
207
+ f80 -1
208
+ f85 1
209
+ f86 -1
210
+ f88 1
211
+ f90 -1
212
+ f98 1
213
+ f99 -1
214
+ fbd 1
215
+ fc6 -1
216
+ fc7 1
217
+ 102d -1
218
+ 1031 1
219
+ 1032 -1
220
+ 1033 1
221
+ 1036 -1
222
+ 1038 1
223
+ 1039 -1
224
+ 103a 1
225
+ 1058 -1
226
+ 105a 1
227
+ 1100 2
228
+ 1160 -1
229
+ 1200 1
230
+ 135f -1
231
+ 1360 1
232
+ 1712 -1
233
+ 1715 1
234
+ 1732 -1
235
+ 1735 1
236
+ 1752 -1
237
+ 1754 1
238
+ 1772 -1
239
+ 1774 1
240
+ 17b4 -1
241
+ 17b6 1
242
+ 17b7 -1
243
+ 17be 1
244
+ 17c6 -1
245
+ 17c7 1
246
+ 17c9 -1
247
+ 17d4 1
248
+ 17dd -1
249
+ 17de 1
250
+ 180b -1
251
+ 180e 1
252
+ 18a9 -1
253
+ 18aa 1
254
+ 1920 -1
255
+ 1923 1
256
+ 1927 -1
257
+ 1929 1
258
+ 1932 -1
259
+ 1933 1
260
+ 1939 -1
261
+ 193c 1
262
+ 1a17 -1
263
+ 1a19 1
264
+ 1b00 -1
265
+ 1b04 1
266
+ 1b34 -1
267
+ 1b35 1
268
+ 1b36 -1
269
+ 1b3b 1
270
+ 1b3c -1
271
+ 1b3d 1
272
+ 1b42 -1
273
+ 1b43 1
274
+ 1b6b -1
275
+ 1b74 1
276
+ 1dc0 -1
277
+ 1dcb 1
278
+ 1dfe -1
279
+ 1e00 1
280
+ 200b -1
281
+ 2011 1
282
+ 2015 -1
283
+ 2017 1
284
+ 2018 -1
285
+ 201a 1
286
+ 201c -1
287
+ 201e 1
288
+ 2020 -1
289
+ 2022 1
290
+ 2025 -1
291
+ 2027 1
292
+ 202a -1
293
+ 202f 1
294
+ 2030 -1
295
+ 2031 1
296
+ 2032 -1
297
+ 2034 1
298
+ 203b -1
299
+ 203c 1
300
+ 2060 -1
301
+ 2064 1
302
+ 206a -1
303
+ 2070 1
304
+ 20d0 -1
305
+ 20f0 1
306
+ 2103 -1
307
+ 2104 1
308
+ 2116 -1
309
+ 2117 1
310
+ 2121 -1
311
+ 2122 1
312
+ 212b -1
313
+ 212c 1
314
+ 2160 -1
315
+ 216c 1
316
+ 2170 -1
317
+ 217a 1
318
+ 2189 -1
319
+ 218a 1
320
+ 2190 -1
321
+ 2194 1
322
+ 21d2 -1
323
+ 21d3 1
324
+ 21d4 -1
325
+ 21d5 1
326
+ 2200 -1
327
+ 2201 1
328
+ 2202 -1
329
+ 2204 1
330
+ 2207 -1
331
+ 2209 1
332
+ 220b -1
333
+ 220c 1
334
+ 2211 -1
335
+ 2212 1
336
+ 221a -1
337
+ 221b 1
338
+ 221d -1
339
+ 2221 1
340
+ 2225 -1
341
+ 2226 1
342
+ 2227 -1
343
+ 222d 1
344
+ 222e -1
345
+ 222f 1
346
+ 2234 -1
347
+ 2236 1
348
+ 223d -1
349
+ 223e 1
350
+ 2252 -1
351
+ 2253 1
352
+ 2260 -1
353
+ 2262 1
354
+ 2266 -1
355
+ 2268 1
356
+ 226a -1
357
+ 226c 1
358
+ 2282 -1
359
+ 2284 1
360
+ 2286 -1
361
+ 2288 1
362
+ 22a5 -1
363
+ 22a6 1
364
+ 22bf -1
365
+ 22c0 1
366
+ 2312 -1
367
+ 2313 1
368
+ 231a -1
369
+ 231b 1
370
+ 2328 -1
371
+ 2329 2
372
+ 232b 1
373
+ 23e9 -1
374
+ 23eb 1
375
+ 23ed -1
376
+ 23ef 1
377
+ 23f0 -1
378
+ 23f3 1
379
+ 23f8 -1
380
+ 23fb 1
381
+ 2460 -1
382
+ 24ea 1
383
+ 24eb -1
384
+ 2500 1
385
+ 25a0 -1
386
+ 25a2 1
387
+ 25b2 -1
388
+ 25b4 1
389
+ 25bc -1
390
+ 25be 1
391
+ 25c6 -1
392
+ 25c8 1
393
+ 25cb -1
394
+ 25cc 1
395
+ 25ce -1
396
+ 25d0 1
397
+ 25ef -1
398
+ 25f0 1
399
+ 25fb -1
400
+ 25ff 1
401
+ 2600 -1
402
+ 2607 1
403
+ 2609 -1
404
+ 260a 1
405
+ 260e -1
406
+ 2610 1
407
+ 2611 -1
408
+ 2612 1
409
+ 2614 -1
410
+ 2616 1
411
+ 2618 -1
412
+ 2619 1
413
+ 261c -1
414
+ 261f 1
415
+ 2620 -1
416
+ 2621 1
417
+ 2622 -1
418
+ 2624 1
419
+ 2626 -1
420
+ 2627 1
421
+ 262a -1
422
+ 262b 1
423
+ 262e -1
424
+ 2630 1
425
+ 2638 -1
426
+ 2639 1
427
+ 2640 -1
428
+ 2641 1
429
+ 2642 -1
430
+ 2643 1
431
+ 2648 -1
432
+ 2654 1
433
+ 265f -1
434
+ 2660 1
435
+ 2668 -1
436
+ 2669 1
437
+ 266a -1
438
+ 266b 1
439
+ 266d -1
440
+ 266e 1
441
+ 266f -1
442
+ 2670 1
443
+ 267b -1
444
+ 267c 1
445
+ 267e -1
446
+ 267f 1
447
+ 2692 -1
448
+ 2693 1
449
+ 2694 -1
450
+ 2695 1
451
+ 2696 -1
452
+ 2698 1
453
+ 2699 -1
454
+ 269a 1
455
+ 269b -1
456
+ 269d 1
457
+ 269e -1
458
+ 26a1 1
459
+ 26aa -1
460
+ 26ac 1
461
+ 26b0 -1
462
+ 26b1 1
463
+ 26bd -1
464
+ 26c0 1
465
+ 26c4 -1
466
+ 26e2 1
467
+ 26e3 -1
468
+ 26e4 1
469
+ 26e8 -1
470
+ 2700 1
471
+ 2702 -1
472
+ 2703 1
473
+ 2705 -1
474
+ 2706 1
475
+ 2708 -1
476
+ 270e 1
477
+ 270f -1
478
+ 2710 1
479
+ 2712 -1
480
+ 2713 1
481
+ 2714 -1
482
+ 2715 1
483
+ 2716 -1
484
+ 2717 1
485
+ 271d -1
486
+ 271e 1
487
+ 2721 -1
488
+ 2722 1
489
+ 2728 -1
490
+ 2729 1
491
+ 2733 -1
492
+ 2735 1
493
+ 273d -1
494
+ 273e 1
495
+ 2744 -1
496
+ 2745 1
497
+ 2747 -1
498
+ 2748 1
499
+ 274c -1
500
+ 274d 1
501
+ 274e -1
502
+ 274f 1
503
+ 2753 -1
504
+ 2755 1
505
+ 2763 -1
506
+ 2765 1
507
+ 2776 -1
508
+ 2780 1
509
+ 2795 -1
510
+ 2798 1
511
+ 27a1 -1
512
+ 27a2 1
513
+ 27b0 -1
514
+ 27b1 1
515
+ 27bf -1
516
+ 27c0 1
517
+ 2b05 -1
518
+ 2b08 1
519
+ 2b1b -1
520
+ 2b1d 1
521
+ 2b50 -1
522
+ 2b51 1
523
+ 2b55 -1
524
+ 2b5a 1
525
+ 2e80 2
526
+ 302a -1
527
+ 3030 2
528
+ 303f 1
529
+ 3040 -1
530
+ 3041 2
531
+ 3097 -1
532
+ 309b 2
533
+ 3100 -1
534
+ 3105 2
535
+ 312f -1
536
+ 3131 2
537
+ 318f -1
538
+ 3190 2
539
+ 4dc0 -1
540
+ 4e00 2
541
+ a4c7 -1
542
+ a4d0 1
543
+ a806 -1
544
+ a807 1
545
+ a80b -1
546
+ a80c 1
547
+ a825 -1
548
+ a827 1
549
+ a960 -1
550
+ a97d 1
551
+ ac00 2
552
+ d7a4 1
553
+ d800 -1
554
+ f900 2
555
+ fb00 1
556
+ fb1e -1
557
+ fb1f 1
558
+ fe00 -1
559
+ fe24 1
560
+ fe30 2
561
+ fe6c -1
562
+ fe70 1
563
+ feff -1
564
+ ff01 2
565
+ ff61 1
566
+ ffe0 2
567
+ ffe7 1
568
+ fff9 -1
569
+ fffc 1
File without changes