which_ruby 0.0.1 → 0.0.2

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.
data/lib/which_ruby.rb CHANGED
@@ -1,55 +1,79 @@
1
1
  module WhichRuby
2
2
 
3
- # TODO add some name mapping rbx vs rubinius f.e.
3
+ @@mappings = {
4
+ :rubinius => :rbx,
5
+ }
6
+
7
+ @@rubies = [:ruby, :jruby, :rbx]
4
8
 
5
9
  def ruby_type
6
- return :"#{engine.downcase}" unless engine.nil?
7
- description.match(/\A([^\s]+)/)
10
+ return :"#{ruby_engine.downcase}" unless ruby_engine.nil?
11
+ ruby_description.match(/\A([^\s]+)/)
8
12
  :"#{$1.downcase}"
9
13
  end
10
14
 
11
15
  alias_method :rt, :ruby_type
12
16
 
13
17
  def is_ruby_type?(type)
14
- ruby_type == type
18
+ ruby_type == (@@mappings[type] || type)
15
19
  end
16
20
 
17
21
  alias_method :r?, :is_ruby_type?
18
-
19
- def version
22
+
23
+ def ruby_version
20
24
  RUBY_VERSION
21
25
  end
22
26
 
23
- def description
27
+ def ruby_description
24
28
  RUBY_DESCRIPTION
25
29
  end
26
30
 
27
- def copyright
31
+ def ruby_copyright
28
32
  RUBY_COPYRIGHT
29
33
  end
30
34
 
31
- def patchlevel
35
+ def ruby_patchlevel
32
36
  RUBY_PATCHLEVEL
33
37
  end
34
38
 
35
- def platform
39
+ def ruby_platform
36
40
  RUBY_PLATFORM
37
41
  end
38
42
 
39
- def release_date
43
+ def ruby_release_date
40
44
  RUBY_RELEASE_DATE
41
45
  end
42
46
 
43
- def revision
47
+ def ruby_revision
44
48
  RUBY_REVISION
45
49
  rescue
46
50
  nil
47
51
  end
48
52
 
49
- def engine
53
+ def ruby_engine
50
54
  RUBY_ENGINE
51
55
  rescue
52
56
  nil
53
57
  end
54
58
 
59
+ def respond_to?(sym)
60
+ contains_ruby_type?(strip_sym(sym)) || super(sym)
61
+ end
62
+
63
+ def method_missing(sym, *args, &block)
64
+ name = strip_sym(sym)
65
+ return is_ruby_type?(name) if contains_ruby_type?(name)
66
+ super(sym, *args, &block)
67
+ end
68
+
69
+ private
70
+
71
+ def strip_sym(sym)
72
+ sym.to_s.downcase[0..-2].to_sym
73
+ end
74
+
75
+ def contains_ruby_type?(name)
76
+ @@rubies.include?(@@mappings[name] || name)
77
+ end
78
+
55
79
  end
data/readme.textile CHANGED
@@ -1,9 +1,47 @@
1
1
  h2. About
2
2
 
3
- *which_ruby* is a simple helper for checking running Ruby engine
3
+ *which_ruby* is a simple helper for checking running Ruby engines.
4
4
 
5
5
  h2. Usage
6
6
 
7
+ include WhichRuby in irb:
8
+
7
9
  <pre>
10
+ rvm use jruby
11
+ gem install which_ruby
12
+ irb
13
+ > require 'which_ruby'
14
+ => true
15
+ > include WhichRuby
16
+ => Object
17
+ </pre>
18
+
19
+ access the API:
20
+
21
+ <pre>
22
+ > ruby_type
23
+ => :jruby
24
+ > rt
25
+ => :jruby
26
+ > is_ruby_type? :jruby
27
+ => true
28
+ > r? :jruby
29
+ => true
30
+ > jruby?
31
+ => true
32
+ </pre>
33
+
34
+ h2. Examples
35
+
36
+ Run the examples with different runtimes, jruby for example:
37
+
38
+ <pre>
39
+ rvm use jruby
40
+ ruby examples/ex.rb
41
+ </pre>
42
+
43
+ h2. TODO
8
44
 
9
- </pre>
45
+ * improve me!
46
+ * more docs
47
+ * more todos
@@ -8,15 +8,15 @@ class TestWhichRuby < Test::Unit::TestCase
8
8
  end
9
9
 
10
10
  def test_r_type_from_engine
11
- @helper.stubs(:engine).returns("jruby")
11
+ @helper.stubs(:ruby_engine).returns("jruby")
12
12
 
13
13
  assert_equal(:jruby, @helper.ruby_type)
14
14
  assert_equal(:jruby, @helper.rt)
15
15
  end
16
16
 
17
17
  def test_r_type_from_description
18
- @helper.stubs(:engine).returns(nil)
19
- @helper.stubs(:description).returns("ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]")
18
+ @helper.stubs(:ruby_engine).returns(nil)
19
+ @helper.stubs(:ruby_description).returns("ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-darwin10.4.0], MBARI 0x6770, Ruby Enterprise Edition 2010.02")
20
20
 
21
21
  assert_equal(:ruby, @helper.ruby_type)
22
22
  end
@@ -29,4 +29,20 @@ class TestWhichRuby < Test::Unit::TestCase
29
29
  assert_equal(true, @helper.is_ruby_type?(:ruby))
30
30
  assert_equal(true, @helper.r?(:ruby))
31
31
  end
32
+
33
+ def test_which_r_with_mapping?
34
+ @helper.stubs(:ruby_engine).returns("rbx")
35
+ assert_equal(true, @helper.r?(:rubinius))
36
+ end
37
+
38
+ def test_respond_to?
39
+ @helper.stubs(:ruby_engine).returns("jruby")
40
+ assert_equal(true, @helper.respond_to?(:jruby?))
41
+ end
42
+
43
+ def test_jruby?
44
+ @helper.stubs(:ruby_engine).returns("jruby")
45
+ assert_equal(true, @helper.jruby?)
46
+ end
47
+
32
48
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: which_ruby
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 27
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 1
9
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
10
11
  platform: ruby
11
12
  authors:
12
13
  - "Peter Schr\xC3\xB6der"
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-25 00:00:00 +02:00
18
+ date: 2010-06-29 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -29,6 +30,8 @@ extra_rdoc_files:
29
30
  files:
30
31
  - readme.textile
31
32
  - lib/which_ruby.rb
33
+ - test/test_helper.rb
34
+ - test/test_which_ruby.rb
32
35
  has_rdoc: true
33
36
  homepage: http://github.com/phoet/which_ruby
34
37
  licenses: []
@@ -41,26 +44,30 @@ rdoc_options:
41
44
  require_paths:
42
45
  - lib
43
46
  required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
44
48
  requirements:
45
49
  - - ">="
46
50
  - !ruby/object:Gem::Version
51
+ hash: 3
47
52
  segments:
48
53
  - 0
49
54
  version: "0"
50
55
  required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
51
57
  requirements:
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
60
+ hash: 3
54
61
  segments:
55
62
  - 0
56
63
  version: "0"
57
64
  requirements: []
58
65
 
59
66
  rubyforge_project: none
60
- rubygems_version: 1.3.6
67
+ rubygems_version: 1.3.7
61
68
  signing_key:
62
69
  specification_version: 3
63
- summary: include which_ruby module and use is_ruby_type? or ruby_type
70
+ summary: include which_ruby module and use is_ruby_type? or ruby_type or jruby?
64
71
  test_files:
65
72
  - test/test_helper.rb
66
73
  - test/test_which_ruby.rb