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,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