gravitext-util 1.6.2-java → 1.7.0-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,11 @@
1
+ === 1.7.0 (2012-11-8)
2
+ * Add Gravitext::DateSupport module, TimeDelta, JDate extension for
3
+ ruby core Time style basic math operations with java.util.Date
4
+ * Add ArrayHTMap.putAll() (optimized), augment(); Use put_all for ruby
5
+ UniMap.merge( UniMap )
6
+ * Optimize KeySpace.keys() array public access
7
+ * Fix error message in ArrayHTMap same KeySpace check
8
+
1
9
  === 1.6.2 (2012-9-15)
2
10
  * Upgrade/broaden to slf4j [1.6.5,1.8), logback ~> 1.2 (now dev)
3
11
 
@@ -9,11 +9,13 @@ bin/gravitext-perftest
9
9
  lib/gravitext-util/version.rb
10
10
  lib/gravitext-util.rb
11
11
  lib/gravitext-util/concurrent.rb
12
+ lib/gravitext-util/date_support.rb
12
13
  lib/gravitext-util/perftest.rb
13
14
  lib/gravitext-util/unimap.rb
14
15
  test/setup.rb
15
16
  test/test_concurrent.rb
17
+ test/test_date_support.rb
16
18
  test/test_ioutils.rb
17
19
  test/test_perftest.rb
18
20
  test/test_unimap.rb
19
- lib/gravitext-util/gravitext-util-1.6.2.jar
21
+ lib/gravitext-util/gravitext-util-1.7.0.jar
@@ -0,0 +1,225 @@
1
+ #--
2
+ # Copyright (c) 2012 David Kellum
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License"); you
5
+ # may not use this file except in compliance with the License. You
6
+ # may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13
+ # implied. See the License for the specific language governing
14
+ # permissions and limitations under the License.
15
+ #++
16
+
17
+ require 'gravitext-util/version'
18
+ require 'java'
19
+
20
+ module Gravitext::DateSupport
21
+
22
+ # Alias for java.util.Date
23
+ JDate = Java::java.util.Date
24
+
25
+ # One second in milliseconds
26
+ SEC_TO_MS = 1_000
27
+
28
+ # One minute in milliseconds
29
+ MIN_TO_MS = 60 * 1_000
30
+
31
+ # One hour in milliseconds
32
+ HOUR_TO_MS = 60 * 60 * 1_000
33
+
34
+ # One day in milliseconds
35
+ DAY_TO_MS = 24 * 60 * 60 * 1_000
36
+
37
+ # Return TimeDelta given Numeric seconds
38
+ def d_secs( v )
39
+ TimeDelta.new( SEC_TO_MS * v )
40
+ end
41
+
42
+ # Return TimeDelta given Numeric minutes
43
+ def d_mins( v )
44
+ TimeDelta.new( MIN_TO_MS * v )
45
+ end
46
+
47
+ # Return TimeDelta gioven Numeric hours
48
+ def d_hours( v )
49
+ TimeDelta.new( HOUR_TO_MS * v )
50
+ end
51
+
52
+ # Return TimeDelta gioven Numeric days
53
+ def d_days( v )
54
+ TimeDelta.new( DAY_TO_MS * v )
55
+ end
56
+
57
+ # A Calendar-unaware, immutable, positive or negative time duration
58
+ # optimized for Java's Integer milliseconds resolution and offering
59
+ # various convenience methods for conversion.
60
+ class TimeDelta
61
+
62
+ # Return milliseconds as initialized
63
+ attr_reader :msecs
64
+
65
+ # New TimeDelta given Numeric, positive or negative
66
+ # milliseconds. Optimized for Integer msecs.
67
+ def initialize( msecs )
68
+ @msecs = msecs
69
+ end
70
+
71
+ # True if other is a TimeDelta with equal msecs.
72
+ def ==( other )
73
+ other.is_a?( TimeDelta ) && ( @msecs == other.msecs )
74
+ end
75
+
76
+ # Compare this with other TimeDelta.
77
+ def <=>( other )
78
+ @msecs <=> other.msecs
79
+ end
80
+
81
+ # Return a new TimeDelta representing the sum of this and other
82
+ # TimeDelta
83
+ def +( other )
84
+ TimeDelta.new( @msecs + other.msecs )
85
+ end
86
+
87
+ # Return a new TimeDelta representing the difference of this and
88
+ # other TimeDelta.
89
+ def -( other )
90
+ TimeDelta.new( @msecs - other.msecs )
91
+ end
92
+
93
+ # Return hash code.
94
+ def hash
95
+ @msecs.hash
96
+ end
97
+
98
+ # Return delta as Integer seconds.
99
+ def to_i
100
+ ( @msecs / SEC_TO_MS ).to_i
101
+ end
102
+
103
+ # Return delta as Float seconds (with precision as initialized.)
104
+ def secs
105
+ @msecs / SEC_TO_MS_F
106
+ end
107
+
108
+ alias to_f secs
109
+
110
+ # Return delta as Rational seconds.
111
+ def to_r
112
+ Rational( @msecs, SEC_TO_MS )
113
+ end
114
+
115
+ # Return delta as Float minutes.
116
+ def mins
117
+ @msecs / MIN_TO_MS_F
118
+ end
119
+
120
+ # Return delta as Float hours.
121
+ def hours
122
+ @msecs / HOUR_TO_MS_F
123
+ end
124
+
125
+ # Return delta as Float days.
126
+ def days
127
+ @msecs / DAY_TO_MS_F
128
+ end
129
+
130
+ # Return String representation of this TimeDelta using
131
+ # "+/-(hh:)(mm:)(ss.uuu)" notation (where hour and minute
132
+ # components are only provided when non-zero.
133
+ def to_s
134
+ ms, neg = @msecs < 0 ? [ -@msecs, true ] : [ @msecs, false ]
135
+ secs = ( ms % MIN_TO_MS ) / SEC_TO_MS_F
136
+ mmins = ( ms / MIN_TO_MS ).to_i
137
+ hours, mins = mmins / 60, mmins % 60
138
+
139
+ pad = ( secs < 10.0 ) ? '0' : '';
140
+
141
+ if hours > 0
142
+ hours = -hours if neg
143
+ "%+d:%02d:%s%g" % [ hours, mins, pad, secs ]
144
+ elsif mins > 0
145
+ mins = -mins if neg
146
+ "%+d:%s%g" % [ mins, pad, secs ]
147
+ else
148
+ secs = -secs if neg
149
+ "%+g" % [ secs ]
150
+ end
151
+ end
152
+
153
+ private
154
+
155
+ SEC_TO_MS_F = SEC_TO_MS.to_f #:nodoc:
156
+ MIN_TO_MS_F = MIN_TO_MS.to_f #:nodoc:
157
+ HOUR_TO_MS_F = HOUR_TO_MS.to_f #:nodoc:
158
+ DAY_TO_MS_F = DAY_TO_MS.to_f #:nodoc:
159
+
160
+ end
161
+
162
+ # Extensions to java.util.Date for some basic math operations and
163
+ # and conversions.
164
+ class JDate
165
+
166
+ # Return conversion to ruby core Time (with millisecond precision).
167
+ def to_ruby
168
+ ems = self.time
169
+ Time.at( ems/1000, ( ems % 1000 ) * 1000 )
170
+ end
171
+
172
+ # Return the difference between self and other. If other is a
173
+ # JDate or ruby core Time, returns a TimeDelta. If other is a
174
+ # TimeDelta or Numeric (seconds), return a new JDate.
175
+ def -( other )
176
+ case( other )
177
+ when JDate
178
+ TimeDelta.new( self.time - other.time )
179
+ when TimeDelta
180
+ JDate.new( self.time - other.msecs )
181
+ when Numeric
182
+ JDate.new( self.time - ( other * 1000 ).to_i )
183
+ when Time
184
+ TimeDelta.new( self.time -
185
+ ( ( other.to_i * 1000 ) + other.usec / 1000 ) )
186
+ else
187
+ raise TypeError, "Can't subract #{other.class} from JDate"
188
+ end
189
+ end
190
+
191
+ # Return a new JDate representing the sum of self and other
192
+ # TimeDelta or Numeric (seconds).
193
+ def +( other )
194
+ case( other )
195
+ when TimeDelta
196
+ JDate.new( self.time + other.msecs )
197
+ when Numeric
198
+ JDate.new( self.time + ( other * 1000 ).to_i )
199
+ else
200
+ raise TypeError, "Can't add #{other.class} to JDate"
201
+ end
202
+ end
203
+
204
+ # Return age of self as a TimeDelta, by difference between the
205
+ # current time and self (with millisecond resolution.) Will be
206
+ # positive if self is "in the past".
207
+ def age
208
+ TimeDelta.new( JSystem.current_time_millis - self.time )
209
+ end
210
+
211
+ JSystem = Java::java.lang.System #:nodoc:
212
+
213
+ end
214
+
215
+ end
216
+
217
+ # Ruby core Time extension
218
+ class Time
219
+
220
+ # Return self, already ruby.
221
+ def to_ruby
222
+ self
223
+ end
224
+
225
+ end
@@ -201,18 +201,21 @@ module Gravitext::HTMap
201
201
  UniMap.deep_hash( self )
202
202
  end
203
203
 
204
- # Merge other (Hash or UniMap) and return new UniMap. Any nil
205
- # values from other Hash will result in removing the associated
206
- # key.
204
+ # Merge other (Hash or UniMap) and return new UniMap. Nil values
205
+ # in other Hash are ignored.
207
206
  def merge( other )
208
207
  clone.merge!( other )
209
208
  end
210
209
 
211
- # Merge other (Hash or UniMap) values to self. Any nil values from
212
- # other Hash will result in removing key from self.
210
+ # Merge other (Hash or UniMap) values to self. Nil values in other
211
+ # Hash are ignored.
213
212
  def merge!( other )
214
- other.each do |k,v|
215
- set( k, v )
213
+ if other.is_a?( UniMap )
214
+ put_all( other )
215
+ else
216
+ other.each do |k,v|
217
+ set( k, v ) unless v.nil?
218
+ end
216
219
  end
217
220
  self
218
221
  end
@@ -16,7 +16,7 @@
16
16
 
17
17
  module Gravitext
18
18
  module Util
19
- VERSION = '1.6.2'
19
+ VERSION = '1.7.0'
20
20
 
21
21
  LIB_DIR = File.dirname(__FILE__) # :nodoc:
22
22
  end
data/pom.xml CHANGED
@@ -4,7 +4,7 @@
4
4
  <groupId>com.gravitext</groupId>
5
5
  <artifactId>gravitext-util</artifactId>
6
6
  <packaging>jar</packaging>
7
- <version>1.6.2</version>
7
+ <version>1.7.0</version>
8
8
  <name>Gravitext Utilities</name>
9
9
  <url>http://gravitext.com/oss/gravitext-util</url>
10
10
 
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env jruby
2
+ #.hashdot.profile += jruby-shortlived
3
+
4
+ #--
5
+ # Copyright (c) 2012 David Kellum
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License"); you
8
+ # may not use this file except in compliance with the License. You
9
+ # may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied. See the License for the specific language governing
17
+ # permissions and limitations under the License.
18
+ #++
19
+
20
+ require File.join( File.dirname( __FILE__ ), "setup" )
21
+
22
+ require 'gravitext-util/date_support'
23
+
24
+ class TestDateSupport < MiniTest::Unit::TestCase
25
+ include Gravitext::DateSupport
26
+
27
+ def test_math
28
+ now = JDate.new
29
+ prior = ( now - ( d_mins( 20 ) + d_secs( 10.001 ) ) )
30
+ assert_equal( prior, now - ( 20 * 60.0 + 10.001 ) )
31
+ assert_kind_of( JDate, prior )
32
+ assert_equal( now, prior + ( d_mins( 20 ) + d_secs( 10.001 ) ) )
33
+ assert_equal( now, prior + ( 20 * 60.0 + 10.001 ) )
34
+ assert_equal( ( d_mins( 20 ) + d_secs( 10.001 ) ), now - prior )
35
+ end
36
+
37
+ def test_ruby_math
38
+ now = JDate.new
39
+ assert_equal( 0.0, ( now - now.to_ruby ).secs )
40
+ end
41
+
42
+ def test_age
43
+ prior = JDate.new - d_mins( 1 )
44
+ assert_in_delta( 60.0, prior.age.secs, 1.0 )
45
+ end
46
+
47
+ def test_to_ruby
48
+ now = JDate.new.to_ruby
49
+ assert_kind_of( Time, now )
50
+ assert_same( now, now.to_ruby )
51
+ assert_in_delta( 0.0, Time.now - now, 0.01 )
52
+ end
53
+
54
+ def test_seconds
55
+ assert_equal( 0.001, TimeDelta.new( 1 ).secs )
56
+ assert_equal( 0.9, TimeDelta.new( 900 ).secs )
57
+ assert_equal( -9.98, TimeDelta.new( -9980 ).secs )
58
+ assert_equal( 70.9, TimeDelta.new( 70900 ).secs )
59
+
60
+ assert_equal( -0.9, d_secs( -0.9 ).secs )
61
+ assert_equal( 70.9, d_secs( 70.9 ).secs )
62
+ end
63
+
64
+ def test_minutes
65
+ assert_equal( 0.015, TimeDelta.new( 900 ).mins )
66
+ assert_equal( -0.15, TimeDelta.new( -9000 ).mins )
67
+ assert_equal( 1.10, TimeDelta.new( 66000 ).mins )
68
+
69
+ assert_equal( -0.15, d_mins( -0.15 ).mins )
70
+ assert_equal( 1.10, d_mins( 1.10 ).mins )
71
+ end
72
+
73
+ def test_hours
74
+ assert_equal( 0.25, TimeDelta.new( 15 * 60 * 1_000 ).hours )
75
+ assert_equal( -1.5, TimeDelta.new( -90 * 60 * 1_000 ).hours )
76
+
77
+ assert_equal( 0.25, d_hours( 0.25 ).hours )
78
+ assert_equal( -1.5, d_hours( -1.5 ).hours )
79
+ end
80
+
81
+ def test_seconds_to_s
82
+ assert_equal( "+0.001", TimeDelta.new( 1 ).to_s )
83
+ assert_equal( "+0.9", TimeDelta.new( 900 ).to_s )
84
+ assert_equal( "+0.999", TimeDelta.new( 999 ).to_s )
85
+ assert_equal( "+1.9", TimeDelta.new( 1900 ).to_s )
86
+ assert_equal( "+9.98", TimeDelta.new( 9980 ).to_s )
87
+ end
88
+
89
+ def test_minutes_to_s
90
+ assert_equal( "+1:10.9", TimeDelta.new( 70900 ).to_s )
91
+ end
92
+
93
+ def test_hours_to_s
94
+ assert_equal( "+1:00:00.953",
95
+ TimeDelta.new( 1 * 60 * 60 * 1000 + 953 ).to_s )
96
+ assert_equal( "+99:14:01.001",
97
+ TimeDelta.new( 99 * 60 * 60 * 1000 +
98
+ 14 * 60 * 1000 + 1001 ).to_s )
99
+ end
100
+
101
+ def test_seconds_neg_to_s
102
+ assert_equal( "-0.001", TimeDelta.new( -1 ).to_s )
103
+ assert_equal( "-0.9", TimeDelta.new( -900 ).to_s )
104
+ assert_equal( "-0.999", TimeDelta.new( -999 ).to_s )
105
+ assert_equal( "-1.9", TimeDelta.new( -1900 ).to_s )
106
+ assert_equal( "-9.98", TimeDelta.new( -9980 ).to_s )
107
+ end
108
+
109
+ def test_minute_neg_to_s
110
+ assert_equal( "-1:10.9", TimeDelta.new( -70900 ).to_s )
111
+ end
112
+
113
+ def test_hours_neg_to_s
114
+ assert_equal( "-1:00:00.953",
115
+ TimeDelta.new( -1 * 60 * 60 * 1000 + -953 ).to_s )
116
+ assert_equal( "-99:14:01.001",
117
+ TimeDelta.new( -99 * 60 * 60 * 1000 +
118
+ -14 * 60 * 1000 + -1001 ).to_s )
119
+ end
120
+
121
+ end
metadata CHANGED
@@ -1,128 +1,149 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gravitext-util
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.6.2
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.7.0
6
6
  platform: java
7
- authors:
8
- - David Kellum
9
- autorequire:
7
+ authors:
8
+ - David Kellum
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-09-15 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rjack-slf4j
17
- version_requirements: &id001 !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 1.6.5
23
- - - <
24
- - !ruby/object:Gem::Version
25
- version: "1.8"
26
- requirement: *id001
27
- prerelease: false
28
- type: :runtime
29
- - !ruby/object:Gem::Dependency
30
- name: rjack-logback
31
- version_requirements: &id002 !ruby/object:Gem::Requirement
32
- none: false
33
- requirements:
34
- - - ~>
35
- - !ruby/object:Gem::Version
36
- version: "1.2"
37
- requirement: *id002
38
- prerelease: false
39
- type: :development
40
- - !ruby/object:Gem::Dependency
41
- name: minitest
42
- version_requirements: &id003 !ruby/object:Gem::Requirement
43
- none: false
44
- requirements:
45
- - - ~>
46
- - !ruby/object:Gem::Version
47
- version: "2.3"
48
- requirement: *id003
49
- prerelease: false
50
- type: :development
51
- - !ruby/object:Gem::Dependency
52
- name: rjack-tarpit
53
- version_requirements: &id004 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- version: "2.0"
59
- requirement: *id004
60
- prerelease: false
61
- type: :development
62
- description:
63
- email:
64
- - dek-oss@gravitext.com
65
- executables:
66
- - gravitext-ioutil-perftest
67
- - gravitext-perftest
12
+ date: 2012-11-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rjack-slf4j
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 1.6.5
21
+ - - <
22
+ - !ruby/object:Gem::Version
23
+ version: '1.8'
24
+ none: false
25
+ requirement: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.6.5
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '1.8'
33
+ none: false
34
+ prerelease: false
35
+ type: :runtime
36
+ - !ruby/object:Gem::Dependency
37
+ name: rjack-logback
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '1.2'
43
+ none: false
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '1.2'
49
+ none: false
50
+ prerelease: false
51
+ type: :development
52
+ - !ruby/object:Gem::Dependency
53
+ name: minitest
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ version: '2.3'
59
+ none: false
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ version: '2.3'
65
+ none: false
66
+ prerelease: false
67
+ type: :development
68
+ - !ruby/object:Gem::Dependency
69
+ name: rjack-tarpit
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: '2.0'
75
+ none: false
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: '2.0'
81
+ none: false
82
+ prerelease: false
83
+ type: :development
84
+ description:
85
+ email:
86
+ - dek-oss@gravitext.com
87
+ executables:
88
+ - gravitext-ioutil-perftest
89
+ - gravitext-perftest
68
90
  extensions: []
69
-
70
- extra_rdoc_files:
71
- - History.rdoc
72
- - README.rdoc
73
- files:
74
- - History.rdoc
75
- - Manifest.txt
76
- - NOTICE.txt
77
- - README.rdoc
78
- - Rakefile
79
- - pom.xml
80
- - bin/gravitext-ioutil-perftest
81
- - bin/gravitext-perftest
82
- - lib/gravitext-util/version.rb
83
- - lib/gravitext-util.rb
84
- - lib/gravitext-util/concurrent.rb
85
- - lib/gravitext-util/perftest.rb
86
- - lib/gravitext-util/unimap.rb
87
- - test/setup.rb
88
- - test/test_concurrent.rb
89
- - test/test_ioutils.rb
90
- - test/test_perftest.rb
91
- - test/test_unimap.rb
92
- - lib/gravitext-util/gravitext-util-1.6.2.jar
91
+ extra_rdoc_files:
92
+ - History.rdoc
93
+ - README.rdoc
94
+ files:
95
+ - History.rdoc
96
+ - Manifest.txt
97
+ - NOTICE.txt
98
+ - README.rdoc
99
+ - Rakefile
100
+ - pom.xml
101
+ - bin/gravitext-ioutil-perftest
102
+ - bin/gravitext-perftest
103
+ - lib/gravitext-util/version.rb
104
+ - lib/gravitext-util.rb
105
+ - lib/gravitext-util/concurrent.rb
106
+ - lib/gravitext-util/date_support.rb
107
+ - lib/gravitext-util/perftest.rb
108
+ - lib/gravitext-util/unimap.rb
109
+ - test/setup.rb
110
+ - test/test_concurrent.rb
111
+ - test/test_date_support.rb
112
+ - test/test_ioutils.rb
113
+ - test/test_perftest.rb
114
+ - test/test_unimap.rb
115
+ - lib/gravitext-util/gravitext-util-1.7.0.jar
93
116
  homepage: http://gravitext.rubyforge.org
94
117
  licenses: []
95
-
96
- post_install_message:
97
- rdoc_options:
98
- - --main
99
- - README.rdoc
100
- require_paths:
101
- - lib
102
- required_ruby_version: !ruby/object:Gem::Requirement
118
+ post_install_message:
119
+ rdoc_options:
120
+ - --main
121
+ - README.rdoc
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ segments:
130
+ - 0
131
+ hash: 2
103
132
  none: false
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- hash: 2
108
- segments:
109
- - 0
110
- version: "0"
111
- required_rubygems_version: !ruby/object:Gem::Requirement
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ segments:
139
+ - 0
140
+ hash: 2
112
141
  none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- hash: 2
117
- segments:
118
- - 0
119
- version: "0"
120
142
  requirements: []
121
-
122
- rubyforge_project:
123
- rubygems_version: 1.8.15
124
- signing_key:
143
+ rubyforge_project:
144
+ rubygems_version: 1.8.24
145
+ signing_key:
125
146
  specification_version: 3
126
147
  summary: A collection of core java utilities, many with jruby adaptions.
127
148
  test_files: []
128
-
149
+ ...