rdoba 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +7 -7
  2. data/.gitignore +4 -0
  3. data/.travis.yml +28 -0
  4. data/CHANGES.md +6 -0
  5. data/Gemfile +5 -0
  6. data/README.md +75 -90
  7. data/Rakefile +61 -55
  8. data/TODO +6 -0
  9. data/features/log.feature +100 -29
  10. data/features/mixin.feature +85 -0
  11. data/features/step_definitions/log_steps.rb +58 -22
  12. data/features/step_definitions/mixin_steps.rb +266 -0
  13. data/features/support/env.rb +48 -24
  14. data/features/support/fulltest_as_log.rb.in +143 -0
  15. data/features/support/fulltest_as_self.rb.in +144 -0
  16. data/features/support/mixin_support.rb +13 -0
  17. data/html/.keep +0 -0
  18. data/html/created.rid +28 -0
  19. data/html/css/fonts.css +167 -0
  20. data/html/css/rdoc.css +590 -0
  21. data/html/fonts/Lato-Light.ttf +0 -0
  22. data/html/fonts/Lato-LightItalic.ttf +0 -0
  23. data/html/fonts/Lato-Regular.ttf +0 -0
  24. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  25. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  26. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  27. data/html/images/add.png +0 -0
  28. data/html/images/arrow_up.png +0 -0
  29. data/html/images/brick.png +0 -0
  30. data/html/images/brick_link.png +0 -0
  31. data/html/images/bug.png +0 -0
  32. data/html/images/bullet_black.png +0 -0
  33. data/html/images/bullet_toggle_minus.png +0 -0
  34. data/html/images/bullet_toggle_plus.png +0 -0
  35. data/html/images/date.png +0 -0
  36. data/html/images/delete.png +0 -0
  37. data/html/images/find.png +0 -0
  38. data/html/images/loadingAnimation.gif +0 -0
  39. data/html/images/macFFBgHack.png +0 -0
  40. data/html/images/package.png +0 -0
  41. data/html/images/page_green.png +0 -0
  42. data/html/images/page_white_text.png +0 -0
  43. data/html/images/page_white_width.png +0 -0
  44. data/html/images/plugin.png +0 -0
  45. data/html/images/ruby.png +0 -0
  46. data/html/images/tag_blue.png +0 -0
  47. data/html/images/tag_green.png +0 -0
  48. data/html/images/transparent.png +0 -0
  49. data/html/images/wrench.png +0 -0
  50. data/html/images/wrench_orange.png +0 -0
  51. data/html/images/zoom.png +0 -0
  52. data/html/js/darkfish.js +161 -0
  53. data/html/js/jquery.js +4 -0
  54. data/html/js/navigation.js +142 -0
  55. data/html/js/navigation.js.gz +0 -0
  56. data/html/js/search.js +109 -0
  57. data/html/js/search_index.js +1 -0
  58. data/html/js/search_index.js.gz +0 -0
  59. data/html/js/searcher.js +228 -0
  60. data/html/js/searcher.js.gz +0 -0
  61. data/lib/rdoba/_version_.rb +1 -1
  62. data/lib/rdoba/common.rb +0 -15
  63. data/lib/rdoba/debug.rb +5 -1
  64. data/lib/rdoba/log.rb +360 -189
  65. data/lib/rdoba/merge.rb +21 -0
  66. data/lib/rdoba/mixin/time.rb +11 -0
  67. data/lib/rdoba/mixin/try.rb +6 -0
  68. data/lib/rdoba/mixin/try_1_9_0.rb +4 -0
  69. data/lib/rdoba/mixin/wait_if.rb +21 -0
  70. data/lib/rdoba/mixin.rb +270 -6
  71. data/lib/rdoba/strings.rb +4 -141
  72. data/lib/rdoba.rb +13 -19
  73. data/rdoba.gemspec +30 -24
  74. data/tddium.yml +11 -0
  75. metadata +260 -65
  76. data/features/bcd.feature +0 -29
  77. data/features/step_definitions/bcd_steps.rb +0 -69
  78. data/test/helper.rb +0 -18
  79. data/test/rdoba_test.rb.stub +0 -59
  80. data/test/test_rdoba.rb +0 -7
data/lib/rdoba/mixin.rb CHANGED
@@ -1,8 +1,209 @@
1
1
  #!/usr/bin/ruby -KU
2
2
  #encoding:utf-8
3
+
4
+ class String
5
+ # TODO obsolete
6
+ ByteByByte = 0
7
+ FirstChar = 1
8
+ end
3
9
 
4
10
  module Rdoba
5
11
  module Mixin
12
+ class InvalidOption < StandardError ; end
13
+
14
+ module CompareString
15
+ def compare_to value, opts = {}
16
+ if ( opts == :ignore_diacritics ||
17
+ opts.class == Hash && opts.key?( :ignore_diacritics ) )
18
+ # TODO verify composite range
19
+ def crop_diacritics(x)
20
+ (x < 0x300 ||
21
+ x > 0x36f && x < 0x483 ||
22
+ x > 0x487 && x < 0xa67c ||
23
+ x > 0xa67d) && x || nil
24
+ end
25
+
26
+ ( self.unpack( 'U*' ).map do |x|
27
+ crop_diacritics( x ) ; end.compact ) <=>
28
+ ( value.unpack( 'U*' ).map do |x|
29
+ crop_diacritics( x ) ; end.compact )
30
+ else
31
+ self <=> value ; end ; end ; end
32
+
33
+ module ReverseString
34
+
35
+ Fixups = [ :reverse ]
36
+
37
+ Aliases = {
38
+ :__rdoba_mixin_reverse_orig__ => :reverse
39
+ }
40
+
41
+
42
+ def __rdoba_mixin_reverse__ step = 1
43
+ if ( !step.is_a?( Numeric ) || step < 0 ) && step != :byte_by_byte
44
+ raise "Invalid step value #{step.inspect}" ; end
45
+
46
+ if step == :byte_by_byte || step == String::ByteByByte
47
+ arr = []
48
+ self.each_byte do | byte |
49
+ arr << byte.chr ; end
50
+ arr.reverse.join.force_encoding( self.encoding )
51
+ elsif step == 1
52
+ __rdoba_mixin_reverse_orig__
53
+ elsif step > 1
54
+ res = ''
55
+ offset = (self.size + 1) / step * step - step
56
+ ( 0..offset ).step( step ) do | shift |
57
+ res += self[ offset - shift..offset - shift + 1 ] ; end
58
+ res ; end ; end ; end
59
+
60
+ module CaseString
61
+ Fixups = [ :upcase, :downcase ]
62
+
63
+ Aliases = {
64
+ :__rdoba_mixin_upcase_orig__ => :upcase,
65
+ :__rdoba_mixin_downcase_orig__ => :downcase
66
+ }
67
+
68
+ ConvertTable = {
69
+ :up => {
70
+ :ranges => [ {
71
+ :ords => [ (0xE0..0xFF), (0x3B1..0x3CB),
72
+ (0x430..0x44F) ],
73
+ :change => proc { | chr, value | chr -= 0x20 },
74
+ }, {
75
+ :ords => [ (0x3AC..0x3AC) ],
76
+ :change => proc { | ord | ord -= 0x26 },
77
+ }, {
78
+ :ords => [ (0x3AD..0x3AF) ],
79
+ :change => proc { | ord | ord -= 0x25 },
80
+ }, {
81
+ :ords => [ (0x3B0..0x3B0) ],
82
+ :change => proc { | ord | ord -= 0x22 },
83
+ }, {
84
+ :ords => [ (0x1F00..0x1F07), (0x1F10..0x1F17),
85
+ (0x1F20..0x1F27), (0x1F30..0x1F37),
86
+ (0x1F40..0x1F47), (0x1F50..0x1F57),
87
+ (0x1F60..0x1F67), (0x1F80..0x1F87),
88
+ (0x1F90..0x1F97), (0x1Fa0..0x1Fa7),
89
+ (0x1Fb0..0x1Fb3), ],
90
+ :change => proc { | ord | ord += 0x8 },
91
+ }, {
92
+ :ords => [ (0x450..0x45F) ],
93
+ :change => proc { | ord | ord -= 0x50 },
94
+ }, {
95
+ :ords => [ (0x100..0x1B9), (0x1C4..0x233),
96
+ (0x460..0x481), (0x48A..0x523),
97
+ (0x1E00..0x1E95), (0x1EA0..0x1EFF),
98
+ (0x0A642..0xA667), (0x0A680..0x0A697),
99
+ (0xA722..0xA7A9) ],
100
+ :change => proc { | ord | ord.odd? && ( ord - 1 ) || ord },
101
+ } ],
102
+ :default => proc do | ord |
103
+ [ ord ].pack( 'U' ).__rdoba_mixin_upcase_orig__ ; end },
104
+ :down => {
105
+ :ranges => [ {
106
+ :ords => [ (0xC0..0xDF), (0x391..0x3AB),
107
+ (0x410..0x42F) ],
108
+ :change => proc { |chr, value| chr += 0x20 },
109
+ }, {
110
+ :ords => [ (0x386..0x386) ],
111
+ :change => proc { | ord | ord += 0x26 },
112
+ }, {
113
+ :ords => [ (0x388..0x38A) ],
114
+ :change => proc { | ord | ord += 0x25 },
115
+ }, {
116
+ :ords => [ (0x38E..0x38E) ],
117
+ :change => proc { | ord | ord += 0x22 },
118
+ }, {
119
+ :ords => [ (0x1F08..0x1F0F), (0x1F18..0x1F1F),
120
+ (0x1F28..0x1F2F), (0x1F38..0x1F3F),
121
+ (0x1F48..0x1F4F), (0x1F58..0x1F5F),
122
+ (0x1F68..0x1F6F), (0x1F88..0x1F8F),
123
+ (0x1F98..0x1F9F), (0x1Fa8..0x1FaF),
124
+ (0x1Fb8..0x1FbA), ],
125
+ :change => proc { | ord | ord -= 0x8 },
126
+ }, {
127
+ :ords => [ (0x400..0x40F) ],
128
+ :change => proc { | ord | ord += 0x50 },
129
+ }, {
130
+ :ords => [ (0x100..0x1B9), (0x1C4..0x233),
131
+ (0x450..0x481), (0x48A..0x523),
132
+ (0x1E00..0x1E95), (0x1EA0..0x1EFF),
133
+ (0x0A642..0xA667), (0x0A680..0x0A697),
134
+ (0xA722..0xA7A9) ],
135
+ :change => proc { | ord | ord.even? && ( ord + 1 ) || ord },
136
+ } ],
137
+ :default => proc do | ord |
138
+ [ ord ].pack( 'U' ).__rdoba_mixin_downcase_orig__ ; end } }
139
+
140
+ def self.change_case_char dest, char
141
+ ord = char.is_a?( String ) ? char.ord : char.to_i
142
+ table = ConvertTable[ dest ]
143
+ nord = table[ :ranges ].each do |range|
144
+ c = range[ :ords ].each do |r|
145
+ if r.include?( ord )
146
+ break false ; end ; end
147
+ if !c
148
+ break range[ :change ].call ord ; end ; end
149
+
150
+ if !nord.is_a? Numeric
151
+ return table[ :default ].call ord ; end
152
+
153
+ [ nord ].pack( 'U' ) ; end
154
+
155
+ def self.up_char char
156
+ CaseString.change_case_char :up, char ; end
157
+
158
+ def self.downcase_char char
159
+ CaseString.change_case_char :down, char ; end
160
+
161
+ if RUBY_VERSION < '1.9'
162
+ alias :setbyte :[]=
163
+
164
+ def encoding
165
+ 'UTF-8'
166
+ end
167
+
168
+ def force_encoding(*args)
169
+ self
170
+ end
171
+
172
+ def ord
173
+ a = nil
174
+ self.each_byte do |b|
175
+ case ( b & 0xC0 )
176
+ when 0xc0
177
+ a = (b & 0x3F)
178
+ when 0x80
179
+ return (a << 6) + (b & 0x3F)
180
+ else
181
+ return b ; end ; end ; end ; end
182
+
183
+ def __rdoba_mixin_downcase__ options = {}
184
+ self.__rdoba_mixin_changecase__ :down, options ; end
185
+
186
+ def __rdoba_mixin_upcase__ options = {}
187
+ self.__rdoba_mixin_changecase__ :up, options ; end
188
+
189
+ def __rdoba_mixin_changecase__ reg, options = {}
190
+ if ![ :up, :down ].include? reg
191
+ return self ; end
192
+
193
+ re = Regexp.new '[\x80-\xFF]', nil, 'n'
194
+ if options == String::FirstChar || options.include?( :first_char )
195
+ r = self.dup
196
+ r[0] = CaseString.change_case_char reg, self.ord
197
+ r
198
+ elsif self.dup.force_encoding( 'ASCII-8BIT' ).match re
199
+ self.unpack('U*').map do | chr |
200
+ CaseString.change_case_char reg, chr
201
+ end.join
202
+ elsif reg == :up
203
+ self.__rdoba_mixin_upcase_orig__
204
+ else
205
+ self.__rdoba_mixin_downcase_orig__ ; end ; end ; end
206
+
6
207
  module To_hArray
7
208
  def to_h options = {}
8
209
  h = {}
@@ -34,24 +235,87 @@ module Rdoba
34
235
 
35
236
  h ; end ; end
36
237
 
238
+ module Split_byArray
239
+ #
240
+ # +split_by+ method splits the +self+ array by a condition,
241
+ # which is evaliated in a passed block, in two versions that are
242
+ # the return value. Usage:
243
+ #
244
+ # require 'rdoba'
245
+ #
246
+ # rdoba mixin: :split_by
247
+ #
248
+ # (first, second) = [0,1,2,3].split_by { |value| value % 2 == 0 }
249
+ # first # => [0,2]
250
+ # second # => [1,3]
251
+ #
252
+ def split_by &block
253
+ idxs = []
254
+ rejected = self.reject.with_index do |v, i|
255
+ yield( v ) && ( idxs << i ) ; end
256
+ [ self.values_at(*idxs), rejected ] ; end ; end
257
+
37
258
  module EmptyObject
38
259
  def empty?
39
260
  false ; end ; end
40
261
 
41
262
  module EmptyNilClass
42
263
  def empty?
43
- true ; end ; end ; end
264
+ true ; end ; end ; end ; end
44
265
 
266
+ if RUBY_VERSION >= "2.0.0"
267
+ require_relative 'mixin/try'
268
+ else
269
+ require_relative 'mixin/try_1_9_0' ; end
270
+
271
+ require_relative 'mixin/wait_if'
272
+
273
+ module Rdoba
45
274
  def self.mixin options
46
- ( options || [] ).each do |value|
275
+ [ options[ :value ] ].flatten.each do |value|
47
276
  case value
277
+ when :case
278
+ Mixin::CaseString::Aliases.each do |k,v|
279
+ ::String.send :alias_method, k, v ; end
280
+ Mixin::CaseString::Fixups.each do |e|
281
+ ::String.class_eval "def #{e}(*args);self.__rdoba_mixin_#{e}__(*args);end"
282
+ end # trap NameError
283
+ ::String.send :include, Mixin::CaseString
284
+ when :reverse
285
+ Mixin::ReverseString::Aliases.each do |k,v|
286
+ ::String.send :alias_method, k, v ; end
287
+ Mixin::ReverseString::Fixups.each do |e|
288
+ ::String.class_eval "def #{e}(*args);self.__rdoba_mixin_#{e}__(*args);end"
289
+ end # trap NameError
290
+ String.send :include, Mixin::ReverseString
291
+ when :compare
292
+ String.send :include, Mixin::CompareString
48
293
  when :to_h
49
- Array.send :include, Rdoba::Mixin::To_hArray
294
+ if [].respond_to?( :to_h )
295
+ m = Mixin::To_hArray.instance_method( :to_h )
296
+ Array.send( :define_method, :to_h, m )
297
+ else
298
+ Array.send( :include, Mixin::To_hArray ) ; end
299
+ when :time
300
+ require_relative 'mixin/time'
301
+ if File.respond_to?( :mtime )
302
+ [ :mtime, :atime, :ctime ].each do |name|
303
+ m = Mixin::Time.instance_method( name )
304
+ ::File.send( :define_singleton_method, name, m ) ; end
305
+ else
306
+ ::File.send( :extend, Mixin::Time ) ; end
307
+ when :wait_if
308
+ Object.send :include, Mixin::Wait_ifKernel
309
+ when :split_by
310
+ Array.send :include, Mixin::Split_byArray
311
+ when :try
312
+ Object.send :include, Mixin::TryObject
50
313
  when :empty
51
- Object.send :include, Rdoba::Mixin::EmptyObject
52
- NilClass.send :include, Rdoba::Mixin::EmptyNilClass
314
+ Object.send :include, Mixin::EmptyObject
315
+ NilClass.send :include, Mixin::EmptyNilClass
53
316
  else
54
- Kernel.puts STDERR, "Invalid rdoba-mixin options key: #{value.to_s}"
317
+ raise( Mixin::InvalidOption, "Invalid rdoba-mixin options key: " +
318
+ "#{value.to_s}" )
55
319
  end ; end ; end ; end
56
320
 
57
321
 
data/lib/rdoba/strings.rb CHANGED
@@ -1,149 +1,12 @@
1
1
  #!/usr/bin/ruby -KU
2
2
  #coding:utf-8
3
3
 
4
- class String
5
-
6
- def self.upcase(char)
7
- chr = char.class == String ? char.ord : char.to_i
8
- if chr >= 0x430 and chr < 0x450
9
- chr -= 0x20
10
- elsif chr >= 0x410 and chr < 0x430
11
- elsif chr >= 0x400 and chr < 0x410 or
12
- chr >= 0x450 and chr < 0x482 or
13
- chr >= 0x48A and chr < 0x524 or
14
- chr >= 0xA642 and chr < 0xA668 or
15
- chr >= 0xA680 and chr < 0xA698
16
- chr -= 1 if (chr % 1) == 1
17
- else
18
- return chr.chr.__upcase__
19
- end
20
- chr.chr
21
- end
22
-
23
- def self.downcase(char)
24
- chr = (char.class == String) ? char.ord : char.to_i
25
- if chr >= 0x410 and chr < 0x430
26
- chr += 0x20
27
- elsif chr >= 0x430 and chr < 0x450
28
- elsif chr >= 0x400 and chr < 0x410 or
29
- chr >= 0x450 and chr < 0x482 or
30
- chr >= 0x48A and chr < 0x524 or
31
- chr >= 0xA642 and chr < 0xA668 or
32
- chr >= 0xA680 and chr < 0xA698
33
- chr += 1 if (chr % 1) == 0
34
- else
35
- return chr.chr.__downcase__
36
- end
37
- chr.chr
38
- end
39
-
40
- if RUBY_VERSION < '1.9'
41
-
42
- alias :setbyte :[]=
43
-
44
- def encoding
45
- 'UTF-8'
46
- end
47
-
48
- def force_encoding(*args)
49
- self
50
- end
51
-
52
- def ord
53
- a = nil
54
- self.each_byte do |b|
55
- c = b & 0xC0
56
- case c
57
- when 0xc0
58
- a = (b & 0x3F)
59
- when 0x80
60
- return (a << 6) + (b & 0x3F)
61
- else
62
- return b
63
- end
64
- end
65
- end
66
-
67
- end
68
-
69
- FirstChar = 0
70
- alias :__upcase__ :upcase
71
- def upcase(option = nil)
72
- if option == FirstChar
73
- r = self.dup
74
- r[0] = String.upcase(self.ord)
75
- r
76
- elsif self.match(/[Ѐ-ҁҊ-ԣꙀ-ꙧꚀꚗ]/u)
77
- self.unpack('U*').map do |chr| String.upcase(chr) end.join
78
- else; __upcase__ end
79
- end
80
-
81
- alias :__downcase__ :downcase
82
- def downcase(option = nil)
83
- if option == FirstChar
84
- r = self.dup
85
- r[0] = String.downcase(self.ord)
86
- r
87
- elsif self.match(/[Ѐ-ҁҊ-ԣꙀ-ꙧꚀꚗ]/u)
88
- self.unpack('U*').map do |chr| String.downcase(chr) end.join
89
- else; __downcase__ end
90
- end
4
+ STDERR.puts "Warning: the module 'string' has kept only for backward " \
5
+ "compatibility\nPlease use 'rdoba :mixin' form instead"
91
6
 
7
+ class String
92
8
  alias :to_p :to_s
93
-
94
- ByteByByte = 0
95
- alias :__reverse__ :reverse
96
- def reverse(step = 1)
97
- case step
98
- when ByteByByte
99
- arr = []
100
- self.each_byte do |byte| arr << byte.chr end
101
- arr.reverse.join
102
- when 1
103
- __reverse__
104
- else
105
- res = ''
106
- offset = (self.size + 1) / step * step - step
107
- (0..offset).step(step) do |shift|
108
- res += self[offset - shift..offset - shift + 1]
109
- end
110
- res
111
- end
112
- end
113
-
114
- def compare_to(value, opts = {} )
115
- if opts == :ignore_diacritics or
116
- (opts.class == Hash and opts.key? :ignore_diacritics)
117
- # TODO verify composite range
118
- def crop_diacritics(x)
119
- (x < 0x300 or
120
- x > 0x36f and x < 0x483 or
121
- x > 0x487 and x < 0xa67c or
122
- x > 0xa67d) && x || nil
123
- end
124
-
125
- (self.unpack('U*').map do |x| crop_diacritics(x)
126
- end.compact) <=> (value.unpack('U*').map do |x| crop_diacritics(x)
127
- end.compact)
128
- else
129
- self <=> value
130
- end
131
- end
132
9
  end
133
10
 
134
- class Fixnum
135
- alias :__chr__ :chr
136
- def chr
137
- if self >= 256
138
- num = self; s = "\0"; byte = 0x80; a = []
139
- while num >= 0x40
140
- s.setbyte(0, byte + (num & 0x3F))
141
- a << s.dup; num >>= 6; byte = 0x40
142
- end
143
- s.setbyte(0, 0xC0 + (num & 0x3F))
144
- a << s
145
- a.reverse.join.force_encoding('UTF-8')
146
- else; __chr__ end
147
- end
148
- end
11
+ rdoba :mixin => [ :case, :reverse, :compare ]
149
12
 
data/lib/rdoba.rb CHANGED
@@ -1,26 +1,20 @@
1
1
  #encoding: utf-8
2
2
 
3
3
  module Kernel
4
- Modules = [ :bcd ]
4
+ Modules = [ :bcd, :mixin, :log, :debug ]
5
5
 
6
- def rdoba *options
7
- options.each do |option|
8
- key, value = ( option.is_a?( Hash ) &&
9
- [ ( k = option.keys.shift ).to_s.to_sym, option[ k ] ] ||
10
- [ option.to_s.to_sym ] )
11
- case key
12
- when :mixin
13
- require "rdoba/mixin"
14
- Rdoba.mixin value
15
- when :log, :debug
16
- require "rdoba/#{key}"
17
- Rdoba.log( { :in => self }.merge( value || {} ) ) # TODO move log method into module
18
- # TODO and resolve some troubles with eval in main
19
- else
20
- Kernel.puts STDERR, "Unknown rdoba module named as '#{key.to_s}'"
21
- nil; end ||
22
- if Modules.include? key
23
- require "rdoba/#{key}"; end; end; end; end
6
+ def rdoba *options
7
+ options.each do |option|
8
+ ( option.is_a?( Hash ) &&
9
+ option || { option.to_s.to_sym => {} }
10
+ ).each_pair do |key, value|
11
+ if Modules.include? key
12
+ require "rdoba/#{key}"
13
+ if Rdoba.methods.include? key
14
+ if !value.is_a? Hash
15
+ value = { :value => value } ; end
16
+ value.replace( { :self => self }.merge value )
17
+ Rdoba.send key, value ; end ; end ; end; end ; end ; end
24
18
 
25
19
  require 'rbconfig'
26
20
 
data/rdoba.gemspec CHANGED
@@ -3,30 +3,36 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
  require "rdoba/_version_"
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "rdoba"
7
- s.version = Rdoba::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = [ 'Малъ Скрылёвъ (Malo Skrylevo)' ]
10
- s.email = [ '3aHyga@gmail.com' ]
11
- s.homepage = 'https://github.com/3aHyga/rdoba'
12
- s.summary = 'Ruby extension library (Ruby DOBAvka)'
13
- s.description = 'Ruby extension library. It extends Kernel, Object, ' +
14
- 'String, Hash, Array, and some other classes. Also allows ' +
15
- 'to log application state with debug lines to an io'
16
- s.license = 'MIT'
6
+ s.name = "rdoba"
7
+ s.version = Rdoba::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = [ 'Малъ Скрылёвъ (Malo Skrylevo)' ]
10
+ s.email = [ '3aHyga@gmail.com' ]
11
+ s.homepage = 'https://github.com/3aHyga/rdoba'
12
+ s.summary = 'Ruby extension library (Ruby DOBAvka)'
13
+ s.description = 'Ruby extension library. It extends Kernel, Object, ' \
14
+ 'String, Hash, Array, and some other classes. Also allows ' \
15
+ 'to log application state with debug lines to an io'
16
+ s.license = 'MIT'
17
17
 
18
- s.rubyforge_project = "rdoba"
19
- s.files = `git ls-files`.split("\n")
20
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
- s.require_paths = [ "lib" ]
23
- s.extra_rdoc_files = [ 'README.md', 'LICENSE' ]
18
+ s.rubyforge_project = "rdoba"
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.executables = `git ls-files -- bin/*`.split( "\n" ).map{ |f| File.basename(f) }
22
+ s.require_paths = [ "lib" ]
23
+ s.extra_rdoc_files = [ 'README.md', 'LICENSE', 'CHANGES.md' ] |
24
+ `find html/`.split( "\n" )
24
25
 
25
- s.required_rubygems_version = '>= 1.6.0'
26
- s.required_ruby_version = '>= 1.9.0'
26
+ s.add_development_dependency 'simplecov', '~> 0'
27
+ s.add_development_dependency 'tddium', '~> 0'
28
+ s.add_development_dependency 'rake', '~> 0'
29
+ s.add_development_dependency 'bundler', '~> 1.5'
30
+ s.add_development_dependency 'cucumber', '~> 1.3'
31
+ s.add_development_dependency 'coveralls', '~> 0'
32
+ s.add_development_dependency 'rdiscount', '~> 2.1'
33
+ s.add_development_dependency 'rdoc', '~> 4.2'
34
+ s.add_development_dependency 'rspec-expectations', '~> 3.3'
35
+ s.add_development_dependency 'ffi-stat', '~> 0.4'
27
36
 
28
- s.add_development_dependency 'rake'
29
- s.add_development_dependency 'bundler', '~> 1.3'
30
- s.add_development_dependency 'cucumber', '~> 1.3'
31
- s.add_development_dependency 'coveralls'
32
- end
37
+ s.required_rubygems_version = '>= 1.6.0'
38
+ s.required_ruby_version = '>= 1.9.0' ; end
data/tddium.yml ADDED
@@ -0,0 +1,11 @@
1
+ :tddium:
2
+ :ruby_version: ruby-1.9.3-p547
3
+ :bundler_version: '~> 1.6.5'
4
+ :test_pattern:
5
+ - features/\*.feature
6
+ :tests:
7
+ - bundle exec cucumber
8
+ :coverage: true
9
+ :postgresql: false
10
+ :mysql: false
11
+ :sqlite: false