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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +6 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +34 -0
- data/LICENSE.txt +21 -0
- data/README.md +44 -0
- data/Rakefile +6 -0
- data/YkLib.gemspec +29 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/YkLib/Yk/__advance__.rb +151 -0
- data/lib/YkLib/Yk/__defun__.rb +44 -0
- data/lib/YkLib/Yk/__hook__.rb +244 -0
- data/lib/YkLib/Yk/__minmax__.rb +123 -0
- data/lib/YkLib/Yk/__stdlog.rb +329 -0
- data/lib/YkLib/Yk/adhocLiterals/email.rb +119 -0
- data/lib/YkLib/Yk/adhocLiterals/path.rb +402 -0
- data/lib/YkLib/Yk/adhocLiterals/tag.rb +19 -0
- data/lib/YkLib/Yk/adhocLiterals/url.rb +36 -0
- data/lib/YkLib/Yk/adhocLiterals.rb +199 -0
- data/lib/YkLib/Yk/auto_escseq.rb +5 -0
- data/lib/YkLib/Yk/auto_pstore.rb +179 -0
- data/lib/YkLib/Yk/bsearch.rb +120 -0
- data/lib/YkLib/Yk/clambda.rb +309 -0
- data/lib/YkLib/Yk/confLine.rb +423 -0
- data/lib/YkLib/Yk/create_tty_width_available.rb +24 -0
- data/lib/YkLib/Yk/crypt.rb +26 -0
- data/lib/YkLib/Yk/debug2 +1 -0
- data/lib/YkLib/Yk/debug2.rb +473 -0
- data/lib/YkLib/Yk/debugout.rb +139 -0
- data/lib/YkLib/Yk/email_tz.rb +533 -0
- data/lib/YkLib/Yk/enum_expect.rb +170 -0
- data/lib/YkLib/Yk/errlog.rb +5 -0
- data/lib/YkLib/Yk/escseq.rb +59 -0
- data/lib/YkLib/Yk/eval_alt.rb +281 -0
- data/lib/YkLib/Yk/expector.rb +93 -0
- data/lib/YkLib/Yk/fetch.rb +556 -0
- data/lib/YkLib/Yk/fetch_old.rb +290 -0
- data/lib/YkLib/Yk/fib.rb +158 -0
- data/lib/YkLib/Yk/file_aux.rb +843 -0
- data/lib/YkLib/Yk/file_aux2.rb +919 -0
- data/lib/YkLib/Yk/file_aux_old.rb +160 -0
- data/lib/YkLib/Yk/filemod.rb +19 -0
- data/lib/YkLib/Yk/force_escseq.rb +3 -0
- data/lib/YkLib/Yk/generator__.rb +144 -0
- data/lib/YkLib/Yk/generator__.rb.org +139 -0
- data/lib/YkLib/Yk/indenter/argless_case.rb +46 -0
- data/lib/YkLib/Yk/indenter/each_token.rb +671 -0
- data/lib/YkLib/Yk/indenter/free_case.rb +313 -0
- data/lib/YkLib/Yk/indenter/if_less.rb +53 -0
- data/lib/YkLib/Yk/indenter/independent_ensure.rb +23 -0
- data/lib/YkLib/Yk/indenter/independent_rescue.rb +23 -0
- data/lib/YkLib/Yk/indenter/operand_circumflex.rb +0 -0
- data/lib/YkLib/Yk/indenter/operand_period.rb +16 -0
- data/lib/YkLib/Yk/indenter/parenless_and.rb +37 -0
- data/lib/YkLib/Yk/indenter/post_test.rb +48 -0
- data/lib/YkLib/Yk/indenter/token.rb +1525 -0
- data/lib/YkLib/Yk/indenter.rb +1382 -0
- data/lib/YkLib/Yk/inot.rb +265 -0
- data/lib/YkLib/Yk/intf.rb +815 -0
- data/lib/YkLib/Yk/io_aux.rb +1332 -0
- data/lib/YkLib/Yk/ioctl.rb +60 -0
- data/lib/YkLib/Yk/ipcc.rb +87 -0
- data/lib/YkLib/Yk/ipcountry.rb +207 -0
- data/lib/YkLib/Yk/ipv4adr.rb +318 -0
- data/lib/YkLib/Yk/localmail.rb +276 -0
- data/lib/YkLib/Yk/method_chain.rb +359 -0
- data/lib/YkLib/Yk/misc_tz.rb +1716 -0
- data/lib/YkLib/Yk/missing_method.rb +50 -0
- data/lib/YkLib/Yk/mojiConv.rb +257 -0
- data/lib/YkLib/Yk/nostdlog.rb +4 -0
- data/lib/YkLib/Yk/on_marshal.rb +20 -0
- data/lib/YkLib/Yk/overrider.rb +47 -0
- data/lib/YkLib/Yk/path.rb +293 -0
- data/lib/YkLib/Yk/path_aux.rb +883 -0
- data/lib/YkLib/Yk/path_aux_alt.rb +0 -0
- data/lib/YkLib/Yk/path_rep.rb +1267 -0
- data/lib/YkLib/Yk/pg_setup.rb +917 -0
- data/lib/YkLib/Yk/procinfo.rb +314 -0
- data/lib/YkLib/Yk/proclist.rb +492 -0
- data/lib/YkLib/Yk/property.rb +863 -0
- data/lib/YkLib/Yk/ranger.rb +606 -0
- data/lib/YkLib/Yk/resolv_tz.rb +88 -0
- data/lib/YkLib/Yk/rlprompt.rb +73 -0
- data/lib/YkLib/Yk/rootexec.rb +48 -0
- data/lib/YkLib/Yk/rpm-packageproxy.rb +784 -0
- data/lib/YkLib/Yk/rpm-packageproxy2.rb +1430 -0
- data/lib/YkLib/Yk/rwhen.rb +21 -0
- data/lib/YkLib/Yk/selector.rb +124 -0
- data/lib/YkLib/Yk/set.rb +170 -0
- data/lib/YkLib/Yk/shellquote.rb +300 -0
- data/lib/YkLib/Yk/sio.rb +1001 -0
- data/lib/YkLib/Yk/sio0.rb +835 -0
- data/lib/YkLib/Yk/sio_aux.rb +1524 -0
- data/lib/YkLib/Yk/sio_inot.rb +86 -0
- data/lib/YkLib/Yk/sock_aux.rb +42 -0
- data/lib/YkLib/Yk/spipe.rb +843 -0
- data/lib/YkLib/Yk/sql_table.rb +565 -0
- data/lib/YkLib/Yk/stdlog.rb +4 -0
- data/lib/YkLib/Yk/syscommand.rb +173 -0
- data/lib/YkLib/Yk/sysinit.rb +75 -0
- data/lib/YkLib/Yk/ttyFontWidth.rb +46113 -0
- data/lib/YkLib/Yk/tty_char.dump +0 -0
- data/lib/YkLib/Yk/tty_char.rb +47 -0
- data/lib/YkLib/Yk/tty_char_create.rb +437031 -0
- data/lib/YkLib/Yk/tty_char_static.rb +437016 -0
- data/lib/YkLib/Yk/tty_rewrite.rb +142 -0
- data/lib/YkLib/Yk/tty_str.rb +461 -0
- data/lib/YkLib/Yk/tty_width.dat.rb +114 -0
- data/lib/YkLib/Yk/tty_width.rb +180 -0
- data/lib/YkLib/Yk/tty_width_available +569 -0
- data/lib/YkLib/Yk/tty_width_list +0 -0
- data/lib/YkLib/Yk/tty_width_list.linux +280 -0
- data/lib/YkLib/Yk/tty_width_list.windows +324 -0
- data/lib/YkLib/Yk/tz_tty +0 -0
- data/lib/YkLib/Yk/tz_tty.rb +0 -0
- data/lib/YkLib/Yk/uprepos.rb +94 -0
- data/lib/YkLib/Yk/userinfo.rb +91 -0
- data/lib/YkLib/Yk/with.rb +109 -0
- data/lib/YkLib/version.rb +3 -0
- data/lib/YkLib.rb +6 -0
- metadata +170 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# old style funcs
|
|
2
|
+
def File.l_open (f, mode = "r")
|
|
3
|
+
fw = nil
|
|
4
|
+
begin
|
|
5
|
+
case mode
|
|
6
|
+
when "w"
|
|
7
|
+
fw = File.open f, File::WRONLY|File::CREAT|File::NONBLOCK
|
|
8
|
+
fw.flock File::LOCK_EX
|
|
9
|
+
fw.truncate 0
|
|
10
|
+
when "a"
|
|
11
|
+
fw = File.open f, File::WRONLY|File::CREAT|File::APPEND|File::NONBLOCK
|
|
12
|
+
fw.flock File::LOCK_EX
|
|
13
|
+
when "r"
|
|
14
|
+
fw = File.open f, File::RDONLY|File::NONBLOCK
|
|
15
|
+
fw.flock File::LOCK_SH
|
|
16
|
+
when "w+"
|
|
17
|
+
fw = File.open f, File::RDWR|File::CREAT|File::NONBLOCK
|
|
18
|
+
fw.flock File::LOCK_EX
|
|
19
|
+
fw.truncate 0
|
|
20
|
+
when "a+"
|
|
21
|
+
fw = File.open f, File::RDWR|File::CREAT|File::APPEND|File::NONBLOCK
|
|
22
|
+
fw.flock File::LOCK_EX
|
|
23
|
+
when "r+"
|
|
24
|
+
fw = File.open f, File::RDWR|File::NONBLOCK
|
|
25
|
+
fw.flock File::LOCK_EX
|
|
26
|
+
end
|
|
27
|
+
if block_given?
|
|
28
|
+
yield fw
|
|
29
|
+
end
|
|
30
|
+
ensure
|
|
31
|
+
if block_given?
|
|
32
|
+
if fw
|
|
33
|
+
fw.close
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
fw
|
|
38
|
+
end
|
|
39
|
+
def IO.pread (f)
|
|
40
|
+
IO.popen(f).read
|
|
41
|
+
end
|
|
42
|
+
def IO.write (f, *c)
|
|
43
|
+
File.open(f, "w") do |fw|
|
|
44
|
+
c.each do |e|
|
|
45
|
+
fw.write e
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
def IO.pwrite (f, *c)
|
|
50
|
+
IO.popen f, "w" do |fw|
|
|
51
|
+
c.each do |e|
|
|
52
|
+
fw.write e
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
def IO.pwriteln (f, *c)
|
|
57
|
+
IO.popen f, "w" do |fw|
|
|
58
|
+
fw.writeln *c
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
def IO.writeln (f, *args)
|
|
62
|
+
File.open(f, "w") do |fw|
|
|
63
|
+
fw.writeln *args
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
def IO.l_write (f, *c)
|
|
67
|
+
File.l_open(f, "w") do |fw|
|
|
68
|
+
c.each do |e|
|
|
69
|
+
fw.write e
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
def IO.l_read (f)
|
|
74
|
+
c = nil
|
|
75
|
+
File.l_open(f, "r") do |fr|
|
|
76
|
+
c= fr.read
|
|
77
|
+
end
|
|
78
|
+
return c
|
|
79
|
+
end
|
|
80
|
+
def File.rewrite_each_line (fName, lock = false)
|
|
81
|
+
File.open fName, File::RDWR|File::CREAT|File::NONBLOCK do |fw|
|
|
82
|
+
lock && fw.flock(File::LOCK_EX)
|
|
83
|
+
begin
|
|
84
|
+
newLines = []
|
|
85
|
+
modPos = nil
|
|
86
|
+
ln = nil
|
|
87
|
+
lnNew = nil
|
|
88
|
+
pushNewLine = Proc.new do
|
|
89
|
+
lnNew != "" && lnNew[-1] != ?\n && lnNew += "\n"
|
|
90
|
+
newLines.push lnNew
|
|
91
|
+
end
|
|
92
|
+
fw.each_line do |ln|
|
|
93
|
+
lnNew = yield ln
|
|
94
|
+
if newLines.size == 0
|
|
95
|
+
if lnNew != ln
|
|
96
|
+
modPos = fw.pos - ln.size
|
|
97
|
+
pushNewLine.call
|
|
98
|
+
end
|
|
99
|
+
else
|
|
100
|
+
pushNewLine.call
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
if (lnNew = yield("")) != ""
|
|
104
|
+
if modPos == nil
|
|
105
|
+
modPos = fw.pos
|
|
106
|
+
end
|
|
107
|
+
if ln != nil && ln[-1] != ?\n
|
|
108
|
+
lnNew = "\n" + lnNew
|
|
109
|
+
end
|
|
110
|
+
pushNewLine.call
|
|
111
|
+
end
|
|
112
|
+
if newLines.size > 0
|
|
113
|
+
fw.seek modPos
|
|
114
|
+
newLines.each do |e|
|
|
115
|
+
fw.write e
|
|
116
|
+
end
|
|
117
|
+
fw.truncate fw.pos
|
|
118
|
+
end
|
|
119
|
+
ensure
|
|
120
|
+
lock && fw.flock(File::LOCK_UN)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
class File
|
|
125
|
+
def File.nb_open (fName, flg = "r", &bl)
|
|
126
|
+
open fName, IO::FMode.new(flg).to_i | File::NONBLOCK, &bl
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
class IO
|
|
130
|
+
def IO.nb_popen (cmd, flg = "r", &bl)
|
|
131
|
+
IO.popen cmd, IO::FMode.new(flg).to_i | File::NONBLOCK, &bl
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
class Array
|
|
135
|
+
def nb_open (flg = "r", &bl)
|
|
136
|
+
IO.nb_open condSQuote, flg
|
|
137
|
+
end
|
|
138
|
+
def nb_popen (flg = "r", &bl)
|
|
139
|
+
IO.popen condSQuote, IO::FMode.new(flg).to_i | File::NONBLOCK, &bl
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
def nb_open (flg, &bl)
|
|
143
|
+
File.nb_open(flg, &bl)
|
|
144
|
+
end
|
|
145
|
+
class Tempfile
|
|
146
|
+
class TempFifo < String
|
|
147
|
+
def initialize
|
|
148
|
+
super "/var/tmp/#{File.basename($0)}.#{rand(10000000000).to_s}.#{$$}.fifo"
|
|
149
|
+
system "mkfifo /var/tmp/#{File.basename($0)}.#{rand(10000000000).to_s}.#{$$}.fifo"
|
|
150
|
+
at_exit do
|
|
151
|
+
rm_f
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
def self.mkfifo
|
|
156
|
+
TempFifo.new
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'Yk/auto_pstore'
|
|
2
|
+
|
|
3
|
+
class FileMod
|
|
4
|
+
AutoPstore.fileMod ||= {}
|
|
5
|
+
@@fList = {}
|
|
6
|
+
def FileMod.updated? (fName)
|
|
7
|
+
m = AutoPstore.fileMod[fName]
|
|
8
|
+
AutoPstore.setFinalizer(:fileMod, fName) do |obj|
|
|
9
|
+
if fName.exist?
|
|
10
|
+
obj[fName] = fName.mtime
|
|
11
|
+
else
|
|
12
|
+
obj.delete fName
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
m || m < fName.mtime
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Object
|
|
5
|
+
class Generator_
|
|
6
|
+
def inc
|
|
7
|
+
@cnt += 1
|
|
8
|
+
if @nextIsEnd
|
|
9
|
+
@current = nil
|
|
10
|
+
@currentIsEnd = true
|
|
11
|
+
# @block.call
|
|
12
|
+
else
|
|
13
|
+
@current = @next
|
|
14
|
+
begin
|
|
15
|
+
@next = @enum.next
|
|
16
|
+
rescue StopIteration
|
|
17
|
+
@next = nil
|
|
18
|
+
@nextIsEnd = true
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
if @currentIsEnd
|
|
22
|
+
if @fin
|
|
23
|
+
@fin.call
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
self
|
|
27
|
+
end
|
|
28
|
+
def next?
|
|
29
|
+
!@nextIsEnd
|
|
30
|
+
end
|
|
31
|
+
def next
|
|
32
|
+
if @nextIsEnd
|
|
33
|
+
raise StopIteration
|
|
34
|
+
end
|
|
35
|
+
@next
|
|
36
|
+
end
|
|
37
|
+
def +@
|
|
38
|
+
if @currentIsEnd
|
|
39
|
+
raise StopIteration
|
|
40
|
+
end
|
|
41
|
+
@current
|
|
42
|
+
end
|
|
43
|
+
def current?
|
|
44
|
+
!@currentIsEnd
|
|
45
|
+
end
|
|
46
|
+
def current
|
|
47
|
+
if @currentIsEnd
|
|
48
|
+
raise StopIteration
|
|
49
|
+
end
|
|
50
|
+
@current
|
|
51
|
+
end
|
|
52
|
+
def index
|
|
53
|
+
@cnt
|
|
54
|
+
end
|
|
55
|
+
def initialize (m, args, fin = nil, &block)
|
|
56
|
+
if !m.is_a? Method
|
|
57
|
+
m = m.method(:each)
|
|
58
|
+
end
|
|
59
|
+
@block = block
|
|
60
|
+
@cnt = 0
|
|
61
|
+
@fin = fin
|
|
62
|
+
@enum = m.receiver.to_enum #*args
|
|
63
|
+
begin
|
|
64
|
+
@current = @enum.next
|
|
65
|
+
rescue StopIteration
|
|
66
|
+
@currentIsEnd = true
|
|
67
|
+
@nextIsEnd = true
|
|
68
|
+
@fin.call if @fin
|
|
69
|
+
return nil
|
|
70
|
+
else
|
|
71
|
+
@currentIsEnd = false
|
|
72
|
+
begin
|
|
73
|
+
@next = @enum.next
|
|
74
|
+
rescue StopIteration
|
|
75
|
+
@nextIsEnd = true
|
|
76
|
+
else
|
|
77
|
+
@nextIsEnd = false
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
ret = nil
|
|
81
|
+
if block
|
|
82
|
+
begin
|
|
83
|
+
begin
|
|
84
|
+
ret = block.call self
|
|
85
|
+
rescue StopIteration
|
|
86
|
+
break
|
|
87
|
+
end
|
|
88
|
+
inc
|
|
89
|
+
end until @currentIsEnd
|
|
90
|
+
end
|
|
91
|
+
@fin = fin
|
|
92
|
+
ret
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
def each__ (mName = :each)
|
|
96
|
+
m = self.method(mName)
|
|
97
|
+
Generator_.new m, [] do |g|
|
|
98
|
+
yield g
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
def Object.generateEach (m, *args)
|
|
102
|
+
Generator_.new m, args do |g|
|
|
103
|
+
yield g
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
def generator__ (mName = :each, &fin)
|
|
107
|
+
m = self.method(mName)
|
|
108
|
+
Generator_.new m, [], fin
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def generateEach__ (m, *args)
|
|
114
|
+
Object.generateEach(m, *args) do |g|
|
|
115
|
+
yield g
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
#argv = []
|
|
121
|
+
#subArgs = Hash.new
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
#ARGV.each__ do |g|
|
|
125
|
+
# if (+g)[0..1] == "--"
|
|
126
|
+
# subArgNum = 0
|
|
127
|
+
# switch = +g
|
|
128
|
+
# case switch
|
|
129
|
+
# when "--with1SubArg"
|
|
130
|
+
# subArgNum = 2
|
|
131
|
+
# end
|
|
132
|
+
# subArgNum.times do
|
|
133
|
+
# (subArgs[switch] ||= Array.new).push +g.inc
|
|
134
|
+
# end
|
|
135
|
+
# else
|
|
136
|
+
# argv.push +g
|
|
137
|
+
# end
|
|
138
|
+
#end
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
#p argv
|
|
142
|
+
#p subArgs
|
|
143
|
+
|
|
144
|
+
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
#require 'continuation'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Object
|
|
8
|
+
class Generator_
|
|
9
|
+
def inc
|
|
10
|
+
if @currentIsEnd
|
|
11
|
+
raise StopIteration
|
|
12
|
+
end
|
|
13
|
+
@cnt += 1
|
|
14
|
+
if @nextIsEnd
|
|
15
|
+
@current = nil
|
|
16
|
+
@currentIsEnd = true
|
|
17
|
+
else
|
|
18
|
+
@current = @next
|
|
19
|
+
begin
|
|
20
|
+
@next = @enum.next
|
|
21
|
+
rescue StopIteration
|
|
22
|
+
@next = nil
|
|
23
|
+
@nextIsEnd = true
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
self
|
|
27
|
+
end
|
|
28
|
+
def next?
|
|
29
|
+
!@nextIsEnd
|
|
30
|
+
end
|
|
31
|
+
def next
|
|
32
|
+
if @nextIsEnd
|
|
33
|
+
raise StopIteration
|
|
34
|
+
end
|
|
35
|
+
@next
|
|
36
|
+
end
|
|
37
|
+
def +@
|
|
38
|
+
if @currentIsEnd
|
|
39
|
+
raise StopIteration
|
|
40
|
+
end
|
|
41
|
+
@current
|
|
42
|
+
end
|
|
43
|
+
def current?
|
|
44
|
+
!@currentIsEnd
|
|
45
|
+
end
|
|
46
|
+
def current
|
|
47
|
+
if @currentIsEnd
|
|
48
|
+
raise StopIteration
|
|
49
|
+
end
|
|
50
|
+
@current
|
|
51
|
+
end
|
|
52
|
+
def index
|
|
53
|
+
@cnt
|
|
54
|
+
end
|
|
55
|
+
def initialize (m, args, fin = nil, &block)
|
|
56
|
+
if !m.is_a? Method
|
|
57
|
+
m = m.method(:each)
|
|
58
|
+
end
|
|
59
|
+
@block = block
|
|
60
|
+
@cnt = 0
|
|
61
|
+
@enum = m.receiver.to_enum *args
|
|
62
|
+
begin
|
|
63
|
+
@current = @enum.next
|
|
64
|
+
rescue StopIteration
|
|
65
|
+
@currentIsEnd = true
|
|
66
|
+
@nextIsEnd = true
|
|
67
|
+
return nil
|
|
68
|
+
else
|
|
69
|
+
@currentIsEnd = false
|
|
70
|
+
begin
|
|
71
|
+
@next = @enum.next
|
|
72
|
+
rescue StopIteration
|
|
73
|
+
@nextIsEnd = true
|
|
74
|
+
else
|
|
75
|
+
@nextIsEnd = false
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
ret = nil
|
|
79
|
+
begin
|
|
80
|
+
begin
|
|
81
|
+
ret = block.call self
|
|
82
|
+
rescue StopIteration
|
|
83
|
+
break
|
|
84
|
+
end
|
|
85
|
+
inc
|
|
86
|
+
end until @currentIsEnd
|
|
87
|
+
ret
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
def each__ (mName = :each)
|
|
91
|
+
m = self.method(mName)
|
|
92
|
+
Generator_.new m, [] do |g|
|
|
93
|
+
yield g
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
def Object.generateEach (m, *args)
|
|
97
|
+
Generator_.new m, args do |g|
|
|
98
|
+
yield g
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
def generator__ (mName = :each, &fin)
|
|
102
|
+
m = self.method(mName)
|
|
103
|
+
Generator_.new m, [], fin
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def generateEach__ (m, *args)
|
|
109
|
+
Object.generateEach(m, *args) do |g|
|
|
110
|
+
yield g
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
#argv = []
|
|
116
|
+
#subArgs = Hash.new
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
#ARGV.each__ do |g|
|
|
120
|
+
# if (+g)[0..1] == "--"
|
|
121
|
+
# subArgNum = 0
|
|
122
|
+
# switch = +g
|
|
123
|
+
# case switch
|
|
124
|
+
# when "--with1SubArg"
|
|
125
|
+
# subArgNum = 2
|
|
126
|
+
# end
|
|
127
|
+
# subArgNum.times do
|
|
128
|
+
# (subArgs[switch] ||= Array.new).push +g.inc
|
|
129
|
+
# end
|
|
130
|
+
# else
|
|
131
|
+
# argv.push +g
|
|
132
|
+
# end
|
|
133
|
+
#end
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
#p argv
|
|
137
|
+
#p subArgs
|
|
138
|
+
|
|
139
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
class Token
|
|
4
|
+
module ArglessCaseLower
|
|
5
|
+
attr_accessor :arglessCaseUpper
|
|
6
|
+
|
|
7
|
+
def addArglessCaseLower pi
|
|
8
|
+
(@arglessCaseLowers ||= []).push pi
|
|
9
|
+
pi.kind = :argless_case_lower
|
|
10
|
+
pi.arglessCaseUpper = self
|
|
11
|
+
end
|
|
12
|
+
def closeBeginner pi
|
|
13
|
+
if !lines
|
|
14
|
+
raise Error.new("empty line under argless case")
|
|
15
|
+
end
|
|
16
|
+
lines.each_with_index do |item, i|
|
|
17
|
+
Token.addMod item.first.first, "#{i == 0 ? "#{')&&(' if parent.kind == :argless_case_lower}(" : ') ||'}("
|
|
18
|
+
end
|
|
19
|
+
# case
|
|
20
|
+
# x ( x
|
|
21
|
+
# a ) ||( a
|
|
22
|
+
# b )&&( ( b
|
|
23
|
+
# c ) ||( c
|
|
24
|
+
# d ) ||( d )
|
|
25
|
+
# e ) ||( e
|
|
26
|
+
# f ) ||( f )
|
|
27
|
+
")"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
module ArglessCase
|
|
31
|
+
def closeBeginner pi
|
|
32
|
+
Token.addMod s.range, ""
|
|
33
|
+
""
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
module Case
|
|
37
|
+
MethodChain.override do
|
|
38
|
+
def onClassify
|
|
39
|
+
if [:on_nl, :on_semicolon].include? next.kind
|
|
40
|
+
kind = :argless_case
|
|
41
|
+
end
|
|
42
|
+
super
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|