YkLib 0.1.0

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 (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,59 @@
1
+
2
+
3
+
4
+ module Escseq
5
+ Colors = [ :black,
6
+ :red,
7
+ :green,
8
+ :yellow,
9
+ :blue,
10
+ :purple,
11
+ :cyan,
12
+ :white,
13
+ :unknown,
14
+ :default
15
+ ]
16
+ Colors.each_with_index do |e, i|
17
+ col = e.to_s
18
+ capCol = e.to_s.capitalize
19
+ eval %{
20
+ #{capCol} = "\\x1b[#{i + 30}m"
21
+ Bg#{capCol} = "\\x1b[#{i + 40}m"
22
+ def #{col}
23
+ # if STDOUT.tty?
24
+ #{capCol} + self + Default
25
+ # else
26
+ # self
27
+ # end
28
+ end
29
+ def bg#{capCol}
30
+ # if STDOUT.tty?
31
+ Bg#{capCol} + Black + self + Default + BgDefault
32
+ # else
33
+ # self
34
+ # end
35
+ end
36
+ def self.#{col}
37
+ # if STDOUT.tty?
38
+ #{capCol} + self + Default
39
+ # else
40
+ # self
41
+ # end
42
+ end
43
+ def self.bg#{capCol}
44
+ # if STDOUT.tty?
45
+ Bg#{capCol} + self + Default
46
+ # else
47
+ # self
48
+ # end
49
+ end
50
+ }
51
+ end
52
+ module_function
53
+ def beIncludedBy (klass)
54
+ klass.__send__(:include, Escseq)
55
+ end
56
+ end
57
+
58
+
59
+
@@ -0,0 +1,281 @@
1
+ class String
2
+ class LInfo
3
+ attr_reader :fileName, :lno
4
+ def initialize fName, lno
5
+ @fileName = fName
6
+ @lno = lno
7
+ end
8
+ def - op
9
+ LInfo.new(@fileName, @lno - 1)
10
+ end
11
+ def > op
12
+ @lno > op
13
+ end
14
+ def eql? arg
15
+ @fileName == arg.fileName && @lno == arg.lno
16
+ end
17
+ def hash
18
+ [@fileName, @lno].hash
19
+ end
20
+ def self.convLocations ret
21
+ ret = ret.map do |e|
22
+ file, lnum, funcPos = e.split /:/
23
+ if file && lnum
24
+ file, lnum = convLInfo file, lnum.to_i
25
+ if funcPos
26
+ [file, lnum, funcPos] * ":"
27
+ else
28
+ [file, lnum] * ":"
29
+ end
30
+ else
31
+ e
32
+ end
33
+ end
34
+ ret
35
+ end
36
+ InStrings = {}
37
+ ConvList = {}
38
+ FileLines = {}
39
+ def self.convLInfo f, l
40
+ k = LInfo.new(f, l)
41
+ r = ConvList[k]
42
+ if r
43
+ [r.fileName, r.lno]
44
+ else
45
+ [f, l]
46
+ end
47
+ end
48
+ def self.getFileLine f, ln
49
+ FileLines[f] ||= IO.read(f).lines
50
+ FileLines[f][ln - 1]
51
+ end
52
+ end
53
+ def l?
54
+ @orgPos
55
+ end
56
+ def l
57
+ lc = count($/) + 1
58
+ return if lc == 1
59
+ f, lno_s, = caller(1)[0].split(/:/)
60
+ linfo = LInfo.new(f, lno_s.to_i)
61
+ if !@orgPos
62
+ @orgPos = linfo
63
+ cur = LInfo.new("//" + __id__.to_s, lc)
64
+ while cur > 0
65
+ LInfo::ConvList[cur] = linfo
66
+ inStrings linfo do |linfo_in|
67
+ cur -= 1
68
+ LInfo::ConvList[cur] = linfo_in
69
+ end
70
+ cur -= 1
71
+ linfo -= 1
72
+ end
73
+ if !LInfo::InStrings.empty?
74
+ raise ArgumentError.new("Lined string is not cleared, or concatenated outside")
75
+ end
76
+ else
77
+ LInfo::InStrings[linfo] = self
78
+ end
79
+ self
80
+ end
81
+ private
82
+ def inStrings linfo
83
+ in_string = LInfo::InStrings.delete linfo
84
+ if in_string
85
+ first = true
86
+ in_string.each_line_info do |linfo_in|
87
+ if !first
88
+ yield linfo_in
89
+ end
90
+ first = false if first
91
+ end
92
+ end
93
+ end
94
+ protected
95
+ def each_line_info
96
+ linfo = LInfo.new("//" + __id__.to_s, count($/) + 1)
97
+ while linfo > 0
98
+ yield LInfo::ConvList[linfo]
99
+ linfo -= 1
100
+ end
101
+ end
102
+ public
103
+ def each_line_with_info
104
+ 1.upto count($/) + 1 do |i|
105
+ li = LInfo.new("//" + __id__.to_s, i)
106
+ cv = LInfo::ConvList[li]
107
+ t = cv || li
108
+ f, ln = t.fileName, t.lno
109
+ yield [f, ln] * ":" + " " + LInfo::getFileLine(f, ln).chomp + "/" + (lines[i - 1] ? lines[i - 1].chomp + "\n" : "\n")
110
+ end
111
+ end
112
+ def getStartEnd
113
+ self =~ /^\s+/
114
+ start = $&.size
115
+ self =~ /\s+$/
116
+ ed = $&.size
117
+ [start, size - ed - 1]
118
+ end
119
+ end
120
+
121
+ class Module
122
+ alias_method :__org_class_eval, :class_eval
123
+ def class_eval expr = nil, fname = "(eval)", lno = 1, &bl
124
+ prc = Proc.new{ |e, f, lno, bl|
125
+ e = __translate__ e, f, lno, bl, :class, self
126
+ if bl
127
+ __org_class_eval &bl if !e
128
+ elsif e
129
+ __org_class_eval e, f, lno
130
+ end
131
+ }
132
+ if expr.respond_to?(:l?) && expr.l?
133
+ prc.call expr, "//" + expr.__id__.to_s, 1
134
+ else
135
+ if expr && fname == "(eval)"
136
+ fname, lno = binding.of_caller(1).source_location
137
+ end
138
+ prc.call expr, fname, lno, bl
139
+ end
140
+ end
141
+ alias_method :__org_module_eval, :module_eval
142
+ def module_eval expr = nil, fname = "(eval)", lno = 1, &bl
143
+ prc = Proc.new{ |e, f, lno, bl|
144
+ e = __translate__ e, f, lno, bl, :module, self
145
+ if bl
146
+ __org_module_eval &bl if !e
147
+ elsif e
148
+ __org_module_eval e, f, lno
149
+ end
150
+ }
151
+ if expr.respond_to?(:l?) && expr.l?
152
+ prc.call expr, "//" + expr.__id__.to_s, 1
153
+ else
154
+ if expr && fname == "(eval)"
155
+ fname, lno = binding.of_caller(1).source_location
156
+ end
157
+ prc.call expr, fname, lno, &bl
158
+ end
159
+ end
160
+ end
161
+
162
+ class BasicObject
163
+ alias_method :__org_instance_eval, :instance_eval
164
+ def instance_eval expr = nil, fname = "(eval)", lno = 1, &bl
165
+ prc = Proc.new{ |e, f, lno, bl|
166
+ e = __translate__ e, f, lno, bl, :instance, self
167
+ if bl
168
+ __org_instance_eval f, lno, &bl if !e
169
+ elsif e
170
+ __org_instance_eval e, f, lno
171
+ end
172
+ }
173
+ if expr.respond_to?(:l?) && expr.l?
174
+ prc.call expr, "//" + expr.__id__.to_s, 1
175
+ else
176
+ if expr && fname == "(eval)"
177
+ fname, lno = binding.of_caller(1).source_location
178
+ end
179
+ prc.call expr, fname, lno, bl
180
+ end
181
+ end
182
+ private
183
+ def __translate__ expr, f, lno, bl = nil, mode = :eval, this = nil
184
+ expr
185
+ end
186
+ end
187
+
188
+ class Thread::Backtrace::Location
189
+ end
190
+
191
+ module Kernel
192
+ module_function
193
+ alias_method :__org_eval, :eval
194
+ def eval expr, b = nil, fname = "(eval)", lno = 1
195
+ prc = Proc.new{ |e, f, lno|
196
+ e = __translate__ e, f, lno, nil, :eval, self
197
+ __org_eval e, f, lno
198
+ }
199
+ if expr.l?
200
+ prc.call expr, b, "//" + expr.__id__.to_s, 1
201
+ else
202
+ if fname == "(eval)"
203
+ fname, lno = binding.of_caller(1).source_location
204
+ end
205
+ prc.call expr, b, fname, lno
206
+ end
207
+ end
208
+ alias_method :__org_caller, :caller
209
+ def caller (...)
210
+ ret = __org_caller(...)
211
+ ret.shift
212
+ String::LInfo::convLocations ret
213
+ end
214
+ #alias_method :__org_caller_locations, :caller_locations
215
+ #def caller_locations (...)
216
+ # ret = __org_caller_locations(...)
217
+ #ret.shift
218
+ #String::LInfo::convLocations ret
219
+ #end
220
+ end
221
+
222
+ class Exception
223
+ alias_method :__org_backtrace, :backtrace
224
+ @@last = []
225
+ def backtrace
226
+ #ret = __org_backtrace
227
+ ret = caller
228
+ if !ret.empty?
229
+ @@last = String::LInfo::convLocations ret
230
+ end
231
+ @@last
232
+ end
233
+ alias_method :__org_message, :message
234
+ def message
235
+ ret = __org_message.clone
236
+ ret.gsub! /(\/\/\d+):(\d+):/ do
237
+ f, ln = String::LInfo::convLInfo $1, $2.to_i
238
+ "#{f}:#{ln}"
239
+ end
240
+ ret
241
+ end
242
+ end
243
+
244
+
245
+ class Binding
246
+ alias_method :__org_eval, :eval
247
+ def eval expr, fname = "(eval)", lno = 1
248
+ prc = Proc.new{ |e, f, lno|
249
+ e = __translate__ e, f, lno, nil, :eval, self
250
+ __org_eval e, f, lno
251
+ }
252
+ if expr.l?
253
+ prc.call expr, expr.__id__.to_s, 1
254
+ else
255
+ if fname == "(eval)"
256
+ fname, lno, = caller(1)[0].split(/:/)
257
+ end
258
+ prc.call expr, fname, lno.to_i
259
+ end
260
+ end
261
+ alias_method :_org_source_location, :source_location
262
+ def source_location
263
+ f, ln = _org_source_location
264
+ String::LInfo::convLInfo(f, ln)
265
+ end
266
+ end
267
+
268
+
269
+ class Thread::Backtrace::Location
270
+ alias_method :_org_lineno, :lineno
271
+ alias_method :_org_path, :path
272
+ def path
273
+ f, l = String::LInfo::convLInfo(_org_path, _org_lineno)
274
+ return f
275
+ end
276
+ def lineno
277
+ f, l = String::LInfo::convLInfo(_org_path, _org_lineno)
278
+ return l
279
+ end
280
+ end
281
+
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ require 'binding_of_caller'
5
+
6
+
7
+ class Expector
8
+ class End < Exception
9
+ end
10
+ def until c, &blk
11
+ # p
12
+ bnd = binding.of_caller(1)
13
+ to_throw = Class.new(Exception).new
14
+ begin
15
+ @cmp_test_objs.unshift [c, to_throw, bnd]
16
+ loop do
17
+ begin
18
+ if !@started
19
+ @started = true
20
+ @fiber.resume
21
+ end
22
+ rescue FiberError
23
+ # p
24
+ raise End
25
+ end
26
+ # p @current
27
+ @cmp_test_objs.each do |e, t, b|
28
+ # p [e, t, b]
29
+ # p e === @current
30
+ # p "/#{e}/ === \"#{@current}\""
31
+ # p b.eval("/#{e}/ === \"#{@current}\"")
32
+ if b.eval("#{e.inspect} === #{@current.inspect}")
33
+ # p t
34
+ @started = false
35
+ raise t
36
+ end
37
+ end
38
+ blk.call if blk
39
+ @started = false
40
+ end
41
+ rescue to_throw.class
42
+ # p
43
+ ensure
44
+ @cmp_test_objs.shift
45
+ end
46
+ end
47
+ alias expect until
48
+ def initialize y, &blk
49
+ @cmp_test_objs = []
50
+ if y.respond_to? :each
51
+ y = y.method(:each)
52
+ end
53
+ @fiber = Fiber.new do
54
+ y.call do |e|
55
+ @current = e
56
+ Fiber.yield
57
+ end
58
+ end
59
+ begin
60
+ blk.call self
61
+ rescue End
62
+ # p
63
+ end
64
+ end
65
+ end
66
+
67
+
68
+ if __FILE__ == $0
69
+
70
+ require 'Yk/path_aux'
71
+ require 'Yk/debug2'
72
+
73
+ a = ["abc", "def1", "", "abc", "def2", ""]
74
+
75
+ Expector.new a do |expt|
76
+ loop do
77
+ p
78
+ expt.until /^\s*$/ do
79
+ p
80
+ expt.expect /abc/
81
+ p
82
+ expt.expect /def(\d+)/
83
+ p $1
84
+ print $1.ln
85
+ end
86
+ p
87
+ end
88
+ p
89
+ end
90
+
91
+ p
92
+
93
+ end