myrurema 0.1.0 → 0.2.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 (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: []