myrurema 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.mkd ADDED
@@ -0,0 +1,80 @@
1
+ myrurema
2
+ ========
3
+
4
+ myrurema は、Rubyの次世代日本語版リファレンスである
5
+ 「Rubyリファレンスマニュアル刷新計画」(通称るりま) のリファレンスを
6
+ 手軽に参照するためのツールです。
7
+
8
+ インストール
9
+ ------------
10
+
11
+ Ruby >= 1.8.xと、Subversionが必要です。
12
+
13
+ RubyGemsでインストールします。
14
+
15
+ $ sudo gem install myrurema
16
+
17
+ するとruremaコマンドが使えるようになります。
18
+
19
+ $ rurema
20
+ (ヘルプが表示される)
21
+
22
+ 使い方
23
+ ------
24
+
25
+ 順を追って説明します。
26
+
27
+ ### 初期化
28
+
29
+ まず、リファレンスのデータをダウンロードする必要があります。
30
+
31
+ $ rurema --init
32
+
33
+ のようにすると、~/.rurema/以下にbitclustとdoctreeをダウンロードし、
34
+ 新しくデータベースを作成します。
35
+ (データベースの作成には数分かかります。)
36
+
37
+ 別のディレクトリにインストールしたい場合はruremadirオプションを指定します。
38
+
39
+ $ rurema --init --ruremadir=/some/where
40
+
41
+ ### データベースについて
42
+
43
+ bitclustは、Rubyの各バージョンに合わせたデータベースを
44
+ 作成するようになっています。デフォルトでは、お使いのRubyと
45
+ 同じバージョンのデータベースを生成します。
46
+
47
+ 別のRubyバージョン用のリファレンスデータベースを作成するには、
48
+ rubyverオプションを指定します。
49
+
50
+ $ rurema --init --rubyver=1.9.2
51
+
52
+ ### リファレンスを引く
53
+
54
+ ruremaコマンドにメソッド名やクラス名を与えると、リファレンスを表示します。
55
+
56
+ $ rurema Array#index
57
+
58
+ ### データベースの更新
59
+
60
+ Rubyリファレンス刷新計画では、最新のRubyに完全対応したリファレンスを目指し、
61
+ 日夜更新が続いています。最新のリファレンスデータに更新するには、
62
+ --updateコマンドを使います。
63
+
64
+ $ rurema --update
65
+
66
+ この場合もruremadirオプション、rubyverオプションが指定可能です。
67
+
68
+ その他
69
+ ------
70
+
71
+ ライセンスはbitclustのものに準じます。
72
+
73
+ * [Rubyリファレンスマニュアル刷新計画](http://redmine.ruby-lang.org/projects/show/rurema)
74
+ * [ソースコード(github)](http://github.com/yhara/myrurema)
75
+
76
+ myruremaはいまのところyharaが個人的に作成しています。
77
+
78
+ yhara (Yutaka HARA)
79
+ http://route477.net/
80
+ yutaka.hara.gmail.com
data/Rakefile ADDED
@@ -0,0 +1,45 @@
1
+ #
2
+ # Rakefile to creating gems
3
+ #
4
+ # configurations:
5
+ PROJECT_NAME = File.basename(File.dirname(__FILE__))
6
+
7
+ begin
8
+ require 'jeweler'
9
+ rescue LoadError
10
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
11
+ end
12
+
13
+ Jeweler::Tasks.new do |gemspec|
14
+ gemspec.name = "#{PROJECT_NAME}"
15
+ gemspec.summary = "A tool for Rurema (the new Japanese Ruby reference manual)"
16
+ gemspec.email = "yutaka.hara/at/gmail.com"
17
+ gemspec.homepage = "http://github.com/yhara/#{PROJECT_NAME}"
18
+ gemspec.description = gemspec.summary
19
+ gemspec.authors = ["Yutaka HARA"]
20
+ gemspec.executables = ["rurema"]
21
+ end
22
+
23
+ desc "install current source as a gem"
24
+ task :dogfood => [:gemspec, :build] do
25
+ sh "sudo gem install pkg/#{PROJECT_NAME}-#{File.read("VERSION").chomp}.gem"
26
+ end
27
+
28
+ desc "uninstall the installed gem"
29
+ task :undogfood do
30
+ sh "sudo gem uninstall #{PROJECT_NAME}"
31
+ end
32
+
33
+ desc "uninstall, then install current source as gem"
34
+ task :redogfood => [:undogfood, :dogfood]
35
+
36
+ desc "uninstall temporary gem and install from github"
37
+ task :nodogfood do
38
+ sh "sudo gem uninstall #{PROJECT_NAME}"
39
+ sh "sudo gem install yhara-#{PROJECT_NAME}"
40
+ end
41
+
42
+ desc "check for gem to be built"
43
+ task :stalk do
44
+ sh "gemstalk yhara #{PROJECT_NAME}"
45
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
data/bin/rurema ADDED
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+ require 'optparse'
3
+ require 'pathname'
4
+
5
+ class Pathname; alias / +; end
6
+
7
+ class Options
8
+ def initialize(argv)
9
+ @dry_run = false
10
+ @ruremadir = Pathname("~/.rurema").expand_path
11
+ @rubyver = RUBY_VERSION
12
+ @command = nil
13
+ @query = ""
14
+
15
+ @optionparser = OptionParser.new{|o|
16
+ o.on("--init",
17
+ "initialize rurema"){
18
+ @command = :init
19
+ }
20
+ o.on("--update",
21
+ "update documents and database"){
22
+ @command = :update
23
+ }
24
+
25
+ o.on("--dry-run",
26
+ "show commands only"){
27
+ @dry_run = true
28
+ }
29
+ o.on("--ruremadir=PATH",
30
+ "specify rurema directory (default: #{@ruremadir})"){|path|
31
+ @ruremadir = Pathname(path)
32
+ }
33
+ o.on("--rubyver=STR",
34
+ "specify Ruby version (default: #{@rubyver})"){|str|
35
+ @rubyver = str
36
+ }
37
+ o.on("--help",
38
+ "show this message"){
39
+ puts o
40
+ exit
41
+ }
42
+ }
43
+ @query = @optionparser.parse(argv).join(" ")
44
+ end
45
+ attr_reader :dry_run, :ruremadir, :rubyver
46
+ attr_reader :command, :query
47
+
48
+ def usage
49
+ puts @optionparser
50
+ end
51
+ end
52
+
53
+ class Rurema
54
+ SVN_URL = "http://jp.rubyist.net/svn/rurema"
55
+
56
+ def initialize(opt=Options.new(ARGV))
57
+ @opt = opt
58
+ end
59
+
60
+ def run
61
+ if @opt.command
62
+ send(@opt.command)
63
+ elsif @opt.query.empty?
64
+ @opt.usage
65
+ else
66
+ search(@opt.query, @opt.rubyver)
67
+ end
68
+ end
69
+
70
+ def init
71
+ sh "svn co -rHEAD #{SVN_URL}/doctree/trunk #{doctree_path}"
72
+ sh "svn co -rHEAD #{SVN_URL}/bitclust/trunk #{bitclust_path}"
73
+ init_db(@opt.rubyver)
74
+ end
75
+
76
+ def update
77
+ sh "svn up #{doctree_path}"
78
+ refresh_db(@opt.rubyver)
79
+ end
80
+
81
+ def search(query, ver)
82
+ unless has_db?(ver)
83
+ puts "You don't have a database for ruby #{ver}."
84
+ puts "Make it now? [y/n]"
85
+ if $stdin.gets.chomp.downcase == "y"
86
+ init_db(ver)
87
+ else
88
+ exit
89
+ end
90
+ end
91
+
92
+ sh "#{bitclust_path/'bin/refe.rb'}" +
93
+ " #{query} -d #{db_path(ver)}", :silent => true
94
+ end
95
+
96
+ def server
97
+ # TODO
98
+ end
99
+
100
+ private
101
+
102
+ def init_db(ver)
103
+ sh "#{bitclust_path/'bin/bitclust.rb'}" +
104
+ " -d #{db_path(ver)} init version=#{ver} encoding=euc-jp"
105
+
106
+ refresh_db(ver)
107
+ end
108
+
109
+ def refresh_db(ver)
110
+ puts "Updating Rurema database:"
111
+ puts "This will take a few minutes. Please be patient."
112
+ sh "#{bitclust_path/'bin/bitclust.rb'}" +
113
+ " -d #{db_path(ver)}" +
114
+ " update --stdlibtree=#{doctree_path/'refm/api/src'}"
115
+ end
116
+
117
+ def bitclust_path
118
+ @opt.ruremadir / "bitclust"
119
+ end
120
+
121
+ def doctree_path
122
+ @opt.ruremadir / "doctree"
123
+ end
124
+
125
+ def has_db?(ver)
126
+ db_path(ver).directory?
127
+ end
128
+
129
+ def db_path(ver)
130
+ raise ArgumentError, "malformed ver: #{ver}" unless ver =~ /\A\d.\d.\d\z/
131
+ @opt.ruremadir / "db" / ver
132
+ end
133
+
134
+ def sh(cmd, opt={})
135
+ puts cmd unless opt[:silent]
136
+ system cmd unless @opt.dry_run
137
+ end
138
+ end
139
+
140
+ Rurema.new.run
@@ -0,0 +1,27 @@
1
+ Feature: Basic commands
2
+ Background:
3
+ Given I have the config file with:
4
+ """
5
+ rubys:
6
+ - name: MRI 1.8
7
+ command: 'gem'
8
+ """
9
+
10
+ $B%7%J%j%*(B: $B=i4|2=(B
11
+ $BA0Ds!'$k$j$^%G%#%l%/%H%j$,$J$$(B
12
+ $B$b$7!V(Brurema --init$B!W$r<B9T$7$?(B
13
+ $B$J$i$P!"$k$j$^%G%#%l%/%H%j$K!V(Bbitclust doctree$B!W$,$G$-$k(B
14
+ $B$+$D!"%G!<%?%Y!<%9$,:F9=C[$5$l$k(B
15
+
16
+ $B%7%J%j%*(B: DB$B99?7(B
17
+ $BA0Ds!'$k$j$^%G%#%l%/%H%j$K!V(Bdoctree$B!W$,$"$k(B
18
+ $B$b$7!V(Brurema --update$B!W$r<B9T$7$?(B
19
+ $B$J$i$P!"(Bdoctree$B$,%"%C%W%G!<%H$5$l$k(B
20
+ $B$+$D!"%G!<%?%Y!<%9$,:F9=C[$5$l$k(B
21
+
22
+ $B%7%J%j%*(B: $B8!:w(B
23
+ $BA0Ds!'$k$j$^%G%#%l%/%H%j$K%G!<%?%Y!<%9$,$"$k(B
24
+ $BA0Ds!'$k$j$^%G%#%l%/%H%j$K!V(Bbitclust doctree db-x.x.x$B!W$,$"$k(B
25
+ $B$b$7!V(Brurema Array$B!W$r<B9T$7$?(B
26
+ $B$J$i$P!"(BArray$B$N%I%-%e%a%s%H$,I=<($5$l$k(B
27
+
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: myrurema
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 0
10
+ version: 0.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Yutaka HARA
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-06-05 00:00:00 +09:00
19
+ default_executable: rurema
20
+ dependencies: []
21
+
22
+ description: A tool for Rurema (the new Japanese Ruby reference manual)
23
+ email: yutaka.hara/at/gmail.com
24
+ executables:
25
+ - rurema
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - README.mkd
30
+ files:
31
+ - README.mkd
32
+ - Rakefile
33
+ - VERSION
34
+ - bin/rurema
35
+ - features/basic_commands.feature
36
+ has_rdoc: true
37
+ homepage: http://github.com/yhara/myrurema
38
+ licenses: []
39
+
40
+ post_install_message:
41
+ rdoc_options:
42
+ - --charset=UTF-8
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ hash: 3
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ requirements: []
64
+
65
+ rubyforge_project:
66
+ rubygems_version: 1.3.7
67
+ signing_key:
68
+ specification_version: 3
69
+ summary: A tool for Rurema (the new Japanese Ruby reference manual)
70
+ test_files: []
71
+