myrurema 0.0.4 → 0.1.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 +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