myrurema 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +7 -0
- data/README.mkd +50 -7
- data/VERSION +1 -1
- data/spec/commands.rb +19 -0
- data/src/myrurema.rb +46 -13
- metadata +4 -3
data/HISTORY
ADDED
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
|
-
|
61
|
+
引数によっては、複数の候補が表示されることもあります。
|
62
|
+
|
63
|
+
$ rurema index
|
64
|
+
|
65
|
+
最後に数字を付けることで、指定した番号の候補を表示できます。
|
66
|
+
|
67
|
+
$ rurema index 1
|
59
68
|
|
60
|
-
|
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
|
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
|
-
|
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
|
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
|
-
@
|
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, :
|
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
|
-
|
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
|
-
|
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:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
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
|