myrurema 0.0.4 → 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.
Files changed (6) hide show
  1. data/HISTORY +7 -0
  2. data/README.mkd +50 -7
  3. data/VERSION +1 -1
  4. data/spec/commands.rb +19 -0
  5. data/src/myrurema.rb +46 -13
  6. metadata +4 -3
data/HISTORY ADDED
@@ -0,0 +1,7 @@
1
+ 2010-09-01 version 0.1.0
2
+
3
+ * new: --preview
4
+
5
+ 2010-09-01 version 0.0.4
6
+
7
+ * can be installed by ruby-station (>= 0.1.6)
data/README.mkd CHANGED
@@ -49,23 +49,33 @@ rubyverオプションを指定します。
49
49
 
50
50
  $ rurema --init --rubyver=1.9.2
51
51
 
52
+ ruremadirオプションとrubyverオプションは、以下の全てのコマンドに対して
53
+ 指定可能です。
54
+
52
55
  ### リファレンスを引く
53
56
 
54
57
  ruremaコマンドにメソッド名やクラス名を与えると、リファレンスを表示します。
55
58
 
56
59
  $ rurema Array#index
57
60
 
58
- ### ローカルWebサーバの起動
61
+ 引数によっては、複数の候補が表示されることもあります。
62
+
63
+ $ rurema index
64
+
65
+ 最後に数字を付けることで、指定した番号の候補を表示できます。
66
+
67
+ $ rurema index 1
59
68
 
60
- bitclustには、Webサーバを起動してブラウザからリファレンスを
61
- 閲覧できるようにする機能があります。
69
+ ### ローカルWebサーバの起動
62
70
 
63
- --serverオプションを指定すると、ローカルにWebサーバが起動します。
71
+ --serverオプションを指定すると、ローカルにWebサーバが起動し、
72
+ ブラウザからリファレンスを閲覧することができます。
64
73
  --browserオプションを指定すると、同時にブラウザでリファレンスのURLを開きます。
65
74
 
66
75
  $ rurema --server --browser
67
76
 
68
- デフォルトではRuby 1.8.7ならポート10187を使います。ポートを変更するには--portオプションを指定します。
77
+ デフォルトではRubyのバージョンに合わせたポート番号(例:Ruby 1.8.7なら
78
+ ポート10187)を使います。ポート番号を変更するには--portオプションを指定します。
69
79
 
70
80
  $ rurema --server --port=9999 --browser
71
81
 
@@ -77,10 +87,43 @@ Rubyリファレンス刷新計画では、最新のRubyに完全対応したリ
77
87
 
78
88
  $ rurema --update
79
89
 
80
- この場合もruremadirオプション、rubyverオプションが指定可能です。
90
+ リファレンスの書き方
91
+ ====================
92
+
93
+ myruremaは、リファレンスを書くための機能も少し備えています。
94
+
95
+ リファレンスの原稿は、~/.rurema/doctree/refm/api/src/ 以下に置かれています。
96
+
97
+ ### プレビュー
98
+
99
+ --previewオプションを指定すると、特定のメソッドをHTMLファイルにコンパイル
100
+ します。
101
+
102
+ rurema --preview _builtin/Array Array#pop
103
+
104
+ コンパイル結果は/tmp/rurema_preview.htmlに保存されます。
105
+ --browserオプションを指定すると、コンパイル結果をブラウザで開きます。
106
+
107
+ rurema --preview _builtin/Array Array#pop --browser
108
+
109
+ うまく書けたら、svn diffコマンドで差分を表示し、
110
+ るりまの[Issue Tracker](http://redmine.ruby-lang.org/projects/rurema/issues)
111
+ にチケットを作って、パッチを貼り付けてください。
112
+ 内容が問題なければ、るりまコミッターがコミットしてくれます。
113
+
114
+ パッチがたくさん採用されれば、そのうちに、あなたもるりまコミッターの
115
+ 一員に勧誘されるでしょう。 :-)
116
+
117
+ ### ディレクトリの移動
118
+
119
+ 「cd ~/.rurema/doctree/refm/api/src/」と毎回タイプするのは面倒なので、
120
+
121
+ $ `rurema --preview`
122
+
123
+ で同じことができるようになっています(zshの場合)。
81
124
 
82
125
  その他
83
- ------
126
+ ======
84
127
 
85
128
  ライセンスはbitclustのものに準じます。
86
129
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.1.0
data/spec/commands.rb CHANGED
@@ -6,6 +6,8 @@ class MyRurema
6
6
  @cmds << cmd
7
7
  end
8
8
  attr_reader :cmds
9
+
10
+ def exit; end
9
11
  end
10
12
 
11
13
  CASES = {
@@ -45,6 +47,23 @@ CASES = {
45
47
  %r{standalone},
46
48
  %r{(start|open) http://localhost:}
47
49
  ],
50
+
51
+ "rurema --preview" => [
52
+ %r{cd .*doctree/refm/api/src},
53
+ ],
54
+
55
+ "rurema --preview _builtin/Array" => [
56
+ %r{bc-tohtml.*_builtin/Array .*rurema_preview.html},
57
+ ],
58
+
59
+ "rurema --preview _builtin/Array Array#pop" => [
60
+ %r{bc-tohtml.*_builtin/Array --target=Array#pop.*rurema_preview.html},
61
+ ],
62
+
63
+ "rurema --preview Array --browser" => [
64
+ %r{bc-tohtml},
65
+ %r{(start|open) .*rurema_preview.html}
66
+ ],
48
67
  }
49
68
 
50
69
  describe MyRurema do
data/src/myrurema.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'optparse'
2
2
  require 'pathname'
3
3
  require 'shellwords'
4
+ require 'tmpdir'
4
5
 
5
6
  class Pathname; alias / +; end
6
7
 
@@ -12,7 +13,6 @@ class Options
12
13
  @dry_run = false
13
14
  @ruremadir = Pathname("~/.rurema").expand_path
14
15
  @rubyver = RUBY_VERSION
15
- @query = ""
16
16
 
17
17
  @optionparser = OptionParser.new{|o|
18
18
  o.on("--init",
@@ -27,13 +27,19 @@ class Options
27
27
  "start web server"){
28
28
  @command = :server
29
29
  }
30
+ o.on("--preview",
31
+ "render a reference as HTML"){
32
+ @command = :preview
33
+ }
34
+
35
+ o.on("----"){}
30
36
 
31
37
  o.on("--port=N",
32
38
  "port number of the web browser (only meaningful with --server)"){|n|
33
39
  @port = n.to_i
34
40
  }
35
41
  o.on("--browser",
36
- "open web browser (only meaningful with --server)"){
42
+ "open web browser (only meaningful with --server or --preview)"){
37
43
  @open_browser = true
38
44
  }
39
45
  o.on("--dry-run",
@@ -48,6 +54,9 @@ class Options
48
54
  "specify Ruby version (default: #{@rubyver})"){|str|
49
55
  @rubyver = str
50
56
  }
57
+
58
+ o.on("-----"){}
59
+
51
60
  o.on("--version",
52
61
  "show version of myrurema"){
53
62
  puts MyRurema::VERSION
@@ -59,12 +68,10 @@ class Options
59
68
  exit
60
69
  }
61
70
  }
62
- @query, @num = @optionparser.parse(argv)
63
- @query = "" if @query.nil?
64
- @num = @num.to_i if @num
71
+ @rest_args = @optionparser.parse(argv)
65
72
  end
66
73
  attr_accessor :dry_run, :ruremadir, :rubyver, :open_browser
67
- attr_accessor :command, :query, :num, :port
74
+ attr_accessor :command, :port, :rest_args
68
75
 
69
76
  def ruremadir=(dir)
70
77
  @ruremadir = Pathname(dir)
@@ -84,15 +91,18 @@ class MyRurema
84
91
  end
85
92
 
86
93
  def run
87
- case
88
- when @opt.command
94
+ if @opt.command
89
95
  send(@opt.command)
90
- when @opt.query.empty?
91
- @opt.usage
92
- when @opt.num
93
- search_num(@opt.query, @opt.num, @opt.rubyver)
94
96
  else
95
- search(@opt.query, @opt.rubyver)
97
+ query, num = *@opt.rest_args
98
+ case
99
+ when query && num
100
+ search_num(query, num.to_i, @opt.rubyver)
101
+ when query
102
+ search(query, @opt.rubyver)
103
+ else
104
+ @opt.usage
105
+ end
96
106
  end
97
107
  end
98
108
 
@@ -144,6 +154,28 @@ class MyRurema
144
154
  end
145
155
  th.join
146
156
  end
157
+
158
+ TMP_FILE = Pathname(Dir.tmpdir)/'rurema_preview.html'
159
+ def preview
160
+ file, target = *@opt.rest_args
161
+
162
+ if file
163
+ error "file not found: #{file}" unless File.exist?(file)
164
+
165
+ result = sh "#{bitclust_path/'tools/bc-tohtml.rb'}" +
166
+ " #{file}" +
167
+ (target ? " --target=#{target}" : "") +
168
+ " --ruby=#{@opt.rubyver}" +
169
+ " > #{TMP_FILE}"
170
+
171
+ if result && @opt.open_browser
172
+ cmd = (/mswin/ =~ RUBY_PLATFORM) ? "start" : "open"
173
+ sh "#{cmd} #{TMP_FILE}"
174
+ end
175
+ else
176
+ sh "cd #{doctree_path/'refm/api/src'}"
177
+ end
178
+ end
147
179
 
148
180
  private
149
181
 
@@ -201,5 +233,6 @@ class MyRurema
201
233
 
202
234
  def error(msg)
203
235
  $stderr.puts msg
236
+ exit
204
237
  end
205
238
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myrurema
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 4
10
- version: 0.0.4
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Yutaka HARA
@@ -28,6 +28,7 @@ extensions: []
28
28
  extra_rdoc_files:
29
29
  - README.mkd
30
30
  files:
31
+ - HISTORY
31
32
  - README.mkd
32
33
  - Rakefile
33
34
  - VERSION