myrurema 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +5 -0
- data/README.mkd +9 -5
- data/VERSION +1 -1
- data/spec/commands.rb +3 -0
- data/src/myrurema.rb +60 -9
- metadata +23 -43
data/HISTORY
CHANGED
data/README.mkd
CHANGED
@@ -60,11 +60,15 @@ ruremaコマンドにメソッド名やクラス名を与えると、リファ
|
|
60
60
|
|
61
61
|
引数によっては、複数の候補が表示されることもあります。
|
62
62
|
|
63
|
-
$ rurema
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
$ rurema each_w
|
64
|
+
(1)Enumerable#each_with_index (2)Enumerable#each_with_object
|
65
|
+
(3)Matrix#each_with_index (4)Prime::PseudoPrimeGenerator#each_with_index
|
66
|
+
which one? >
|
67
|
+
|
68
|
+
(バージョン0.2.0から、上のようにどれを表示するか聞いてくるように
|
69
|
+
なりました。外部プログラムから呼び出す場合などは、--no-askを付けると
|
70
|
+
従来通りの表示になります。この場合は、最後に数字を付けることで、
|
71
|
+
指定した番号の候補を表示できます。(例:$ rurema each_w 3))
|
68
72
|
|
69
73
|
### ローカルWebサーバの起動
|
70
74
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/spec/commands.rb
CHANGED
data/src/myrurema.rb
CHANGED
@@ -11,12 +11,17 @@ class Options
|
|
11
11
|
@open_browser = false
|
12
12
|
@port = nil
|
13
13
|
@dry_run = false
|
14
|
+
@no_ask = false
|
14
15
|
@ruremadir = Pathname("~/.rurema").expand_path
|
15
16
|
@rubyver = RUBY_VERSION
|
16
17
|
|
17
18
|
@optionparser = OptionParser.new{|o|
|
19
|
+
o.banner = [
|
20
|
+
"Usage: rurema [options] <method name or class name>",
|
21
|
+
].join("\n")
|
22
|
+
|
18
23
|
o.on("--init",
|
19
|
-
"initialize rurema"){
|
24
|
+
"initialize rurema system"){
|
20
25
|
@command = :init
|
21
26
|
}
|
22
27
|
o.on("--update",
|
@@ -31,8 +36,12 @@ class Options
|
|
31
36
|
"render a reference as HTML"){
|
32
37
|
@command = :preview
|
33
38
|
}
|
39
|
+
o.on("--list",
|
40
|
+
"list all classes"){
|
41
|
+
@command = :list
|
42
|
+
}
|
34
43
|
|
35
|
-
o.on("----"){}
|
44
|
+
o.on("---- (OPTIONS)"){}
|
36
45
|
|
37
46
|
o.on("--port=N",
|
38
47
|
"port number of the web browser (only meaningful with --server)"){|n|
|
@@ -46,6 +55,10 @@ class Options
|
|
46
55
|
"show commands only"){
|
47
56
|
@dry_run = true
|
48
57
|
}
|
58
|
+
o.on("--no-ask",
|
59
|
+
"do not ask keyboard input"){
|
60
|
+
@no_ask = true
|
61
|
+
}
|
49
62
|
o.on("--ruremadir=PATH",
|
50
63
|
"specify rurema directory (default: #{@ruremadir})"){|path|
|
51
64
|
@ruremadir = Pathname(path)
|
@@ -55,7 +68,7 @@ class Options
|
|
55
68
|
@rubyver = str
|
56
69
|
}
|
57
70
|
|
58
|
-
o.on("-----"){}
|
71
|
+
o.on("----- (INFO)"){}
|
59
72
|
|
60
73
|
o.on("--version",
|
61
74
|
"show version of myrurema"){
|
@@ -70,8 +83,8 @@ class Options
|
|
70
83
|
}
|
71
84
|
@rest_args = @optionparser.parse(argv)
|
72
85
|
end
|
73
|
-
attr_accessor :dry_run, :ruremadir, :rubyver,
|
74
|
-
|
86
|
+
attr_accessor :dry_run, :no_ask, :ruremadir, :rubyver,
|
87
|
+
:open_browser, :command, :port, :rest_args
|
75
88
|
|
76
89
|
def ruremadir=(dir)
|
77
90
|
@ruremadir = Pathname(dir)
|
@@ -120,8 +133,33 @@ class MyRurema
|
|
120
133
|
def search(query, ver)
|
121
134
|
should_have_db(ver)
|
122
135
|
|
123
|
-
|
124
|
-
|
136
|
+
cmd = "#{bitclust_path/'bin/refe.rb'}" +
|
137
|
+
" #{Shellwords.escape query} -d #{db_path(ver)}"
|
138
|
+
sh cmd, :silent => true do |txt|
|
139
|
+
if txt.lines.count < 10 and
|
140
|
+
txt.lines.first(2).join =~ /#{query}.*#{query}/m and
|
141
|
+
!@opt.no_ask
|
142
|
+
|
143
|
+
words = {}
|
144
|
+
k = 0
|
145
|
+
puts txt.lines.map{|line|
|
146
|
+
line.gsub(/(\S+)/){|str|
|
147
|
+
k+=1
|
148
|
+
words[k] = str
|
149
|
+
"(#{k})#{str}"
|
150
|
+
}
|
151
|
+
}
|
152
|
+
print "which one? > "
|
153
|
+
line = $stdin.gets or (puts; exit)
|
154
|
+
n = line.to_i
|
155
|
+
|
156
|
+
puts "searching #{words[n]}"
|
157
|
+
puts
|
158
|
+
search(words[n].sub(/\.#/, "."), ver)
|
159
|
+
else
|
160
|
+
puts txt
|
161
|
+
end
|
162
|
+
end
|
125
163
|
end
|
126
164
|
|
127
165
|
def search_num(query, num, ver)
|
@@ -138,6 +176,13 @@ class MyRurema
|
|
138
176
|
end
|
139
177
|
end
|
140
178
|
|
179
|
+
def list
|
180
|
+
should_have_db(@opt.rubyver)
|
181
|
+
|
182
|
+
sh "#{bitclust_path/'bin/refe.rb'}" +
|
183
|
+
" -l -d #{db_path(@opt.rubyver)}", :silent => true
|
184
|
+
end
|
185
|
+
|
141
186
|
def server
|
142
187
|
port = @opt.port || default_port(@opt.rubyver)
|
143
188
|
th = Thread.new{
|
@@ -226,9 +271,15 @@ class MyRurema
|
|
226
271
|
@opt.ruremadir / "db" / ver
|
227
272
|
end
|
228
273
|
|
229
|
-
def sh(cmd, opt={})
|
274
|
+
def sh(cmd, opt={}, &block)
|
230
275
|
puts cmd unless opt[:silent]
|
231
|
-
|
276
|
+
return if @opt.dry_run
|
277
|
+
|
278
|
+
if block
|
279
|
+
block.call(`#{cmd}`)
|
280
|
+
else
|
281
|
+
system cmd
|
282
|
+
end
|
232
283
|
end
|
233
284
|
|
234
285
|
def error(msg)
|
metadata
CHANGED
@@ -1,33 +1,24 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: myrurema
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 0.1.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Yutaka HARA
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2010-09-01 00:00:00 +09:00
|
19
|
-
default_executable: rurema
|
12
|
+
date: 2011-10-05 00:00:00.000000000 Z
|
20
13
|
dependencies: []
|
21
|
-
|
22
14
|
description: A tool for Rurema (the new Japanese Ruby reference manual)
|
23
15
|
email: yutaka.hara/at/gmail.com
|
24
|
-
executables:
|
16
|
+
executables:
|
25
17
|
- rurema
|
26
18
|
extensions: []
|
27
|
-
|
28
|
-
extra_rdoc_files:
|
19
|
+
extra_rdoc_files:
|
29
20
|
- README.mkd
|
30
|
-
files:
|
21
|
+
files:
|
31
22
|
- HISTORY
|
32
23
|
- README.mkd
|
33
24
|
- Rakefile
|
@@ -37,39 +28,28 @@ files:
|
|
37
28
|
- main.rb
|
38
29
|
- spec/commands.rb
|
39
30
|
- src/myrurema.rb
|
40
|
-
has_rdoc: true
|
41
31
|
homepage: http://github.com/yhara/myrurema
|
42
32
|
licenses: []
|
43
|
-
|
44
33
|
post_install_message:
|
45
|
-
rdoc_options:
|
46
|
-
|
47
|
-
require_paths:
|
34
|
+
rdoc_options: []
|
35
|
+
require_paths:
|
48
36
|
- lib
|
49
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
38
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
|
56
|
-
- 0
|
57
|
-
version: "0"
|
58
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ! '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
44
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
segments:
|
65
|
-
- 0
|
66
|
-
version: "0"
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
67
49
|
requirements: []
|
68
|
-
|
69
50
|
rubyforge_project:
|
70
|
-
rubygems_version: 1.
|
51
|
+
rubygems_version: 1.8.8
|
71
52
|
signing_key:
|
72
53
|
specification_version: 3
|
73
54
|
summary: A tool for Rurema (the new Japanese Ruby reference manual)
|
74
|
-
test_files:
|
75
|
-
- spec/commands.rb
|
55
|
+
test_files: []
|