myrurema 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/HISTORY +5 -0
  2. data/README.mkd +9 -5
  3. data/VERSION +1 -1
  4. data/spec/commands.rb +3 -0
  5. data/src/myrurema.rb +60 -9
  6. metadata +23 -43
data/HISTORY CHANGED
@@ -1,3 +1,8 @@
1
+ 2011-10-05 version 0.2.0
2
+
3
+ * new: ask which method to show if several methods are found
4
+ * new: --list
5
+
1
6
  2010-09-01 version 0.1.0
2
7
 
3
8
  * new: --preview
data/README.mkd CHANGED
@@ -60,11 +60,15 @@ ruremaコマンドにメソッド名やクラス名を与えると、リファ
60
60
 
61
61
  引数によっては、複数の候補が表示されることもあります。
62
62
 
63
- $ rurema index
64
-
65
- 最後に数字を付けることで、指定した番号の候補を表示できます。
66
-
67
- $ rurema index 1
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
1
+ 0.2.0
data/spec/commands.rb CHANGED
@@ -64,6 +64,9 @@ CASES = {
64
64
  %r{bc-tohtml},
65
65
  %r{(start|open) .*rurema_preview.html}
66
66
  ],
67
+ "rurema --list" => [
68
+ %r{refe.*-l},
69
+ ],
67
70
  }
68
71
 
69
72
  describe MyRurema do
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, :open_browser
74
- attr_accessor :command, :port, :rest_args
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
- sh "#{bitclust_path/'bin/refe.rb'}" +
124
- " #{Shellwords.escape query} -d #{db_path(ver)}", :silent => true
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
- system cmd unless @opt.dry_run
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
- hash: 27
5
- prerelease: false
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
- - --charset=UTF-8
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
- hash: 3
55
- segments:
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
- hash: 3
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.3.7
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: []