core_extended 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .idea/
@@ -0,0 +1,15 @@
1
+ A:
2
+ upcase: ÁÀÄÂÃÅĀĂǍ
3
+ downcase: áàäâãåāăǎ
4
+ E:
5
+ upcase: ÉÈËÊĒĔĖĚ
6
+ downcase: éèëêēĕėě
7
+ I:
8
+ upcase: ÍÌÏÎĨĬǏ
9
+ downcase: íìïîĩĭǐ
10
+ O:
11
+ upcase: ÓÒÖÔÕŌŎŐǑ
12
+ downcase: óòöôõōŏőǒ
13
+ U:
14
+ upcase: ÚÙÜÛŨŪŬŮŰǓ
15
+ downcase: úùüûũūŭůűǔ
@@ -0,0 +1,47 @@
1
+ ---
2
+ A: ĄΑΔΛ
3
+ B: ßɃΒ
4
+ C: ĆĈĊČϚ
5
+ D: ÐĎĐ
6
+ E: ĘƐЗŒΣΞ
7
+ F: ƑϜ
8
+ G: ĜĞĠĢƓǦ
9
+ H: ĤĦ
10
+ I: Įİ
11
+ J: Ĵ
12
+ K: ĶĸƘ
13
+ L: ĹĻĽĿŁ
14
+ N: ŃŅŇŊИ
15
+ O: ØƟƠΘΩ
16
+ P: ÞƤΡ
17
+ R: ŔŖŘЯƦ
18
+ S: ŚŜŞŠƧ
19
+ T: ŢŤŦГΓΤ
20
+ U: ŲƱ
21
+ W: Ŵ
22
+ X: Χ
23
+ Y: ÝŶЧ
24
+ Z: ŹŻŽ
25
+ a: ąæαδλ
26
+ b: Ƅƀƅβ
27
+ c: Ɔćĉċčɔϛ
28
+ d: ðďđ
29
+ e: Əęɛəзœɘςξ
30
+ f: ƒϝ
31
+ g: ĝğġģɠǧ
32
+ h: ĥħ
33
+ i: īį
34
+ j: ĵ
35
+ k: ķƙ
36
+ l: ĺļľŀł
37
+ n: ʼnńņňŋиȠƞ
38
+ o: øɵơθω
39
+ p: þƥρ
40
+ r: ŕŗřяʀ
41
+ s: śŝşšƨ
42
+ t: ţťŧгγτ
43
+ u: ųʊ
44
+ w: ŵ
45
+ x: ×χ
46
+ y: ÿýŷч
47
+ z: źżž
@@ -4,23 +4,25 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'core_extended/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "core_extended"
7
+ spec.name = 'core_extended'
8
8
  spec.version = CoreExtended::VERSION
9
- spec.authors = ["Gabriel Naiman"]
10
- spec.email = ["gabynaiman@gmail.com"]
9
+ spec.authors = ['Gabriel Naiman']
10
+ spec.email = ['gabynaiman@gmail.com']
11
11
  spec.description = 'Ruby core extensions'
12
12
  spec.summary = 'Ruby core extensions'
13
- spec.homepage = "https://github.com/gabynaiman/core_extended"
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/gabynaiman/core_extended'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "minitest", "~> 4.7"
24
- spec.add_development_dependency "turn", "~> 0.9"
25
- spec.add_development_dependency "simplecov"
21
+ spec.add_development_dependency 'bundler', '~> 1.3'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'minitest', '~> 4.7'
24
+ spec.add_development_dependency 'minitest-great_expectations'
25
+ spec.add_development_dependency 'turn', '~> 0.9'
26
+ spec.add_development_dependency 'simplecov'
27
+ spec.add_development_dependency 'json', '~> 1.7.7'
26
28
  end
data/lib/core_extended.rb CHANGED
@@ -1,6 +1,5 @@
1
- require 'core_extended/version'
2
- require 'core_extended/os'
3
- require 'core_extended/marshal'
4
- require 'core_extended/file'
5
- require 'core_extended/string'
1
+ require 'yaml'
2
+ require 'base64'
6
3
 
4
+ require 'core_extended/config_reader'
5
+ Dir.glob("#{File.dirname(__FILE__)}/core_extended/*.rb") { |f| require f }
@@ -0,0 +1,7 @@
1
+ class Array
2
+
3
+ def page(number, size=nil)
4
+ Paginator.new self, page: number, size: size
5
+ end
6
+
7
+ end
@@ -0,0 +1,17 @@
1
+ class ConfigReader
2
+
3
+ CONFIG_PATH = File.expand_path(File.join(File.dirname(__FILE__), '../../config'))
4
+
5
+ def self.yaml(filename)
6
+ YAML.load_file File.join(CONFIG_PATH, filename)
7
+ end
8
+
9
+ def self.similar_character_mapping
10
+ @similar_character_mapping ||= yaml('similar_character_mapping.yml').freeze
11
+ end
12
+
13
+ def self.accents_mapping
14
+ @accents_mapping ||= yaml('accents_mapping.yml').freeze
15
+ end
16
+
17
+ end
@@ -1,9 +1,9 @@
1
1
  class File
2
2
 
3
- if OS.windows? && RUBY_PLATFORM == 'java'
4
- def size
5
- lstat.size
6
- end
3
+ alias_method :__size__, :size
4
+ def size
5
+ return lstat.size if OS.windows? && Ruby.jruby?
6
+ __size__
7
7
  end
8
8
 
9
9
  end
@@ -0,0 +1,49 @@
1
+ class Hash
2
+
3
+ Inflector = Struct.new :method, :arguments
4
+
5
+ def self.inflectors
6
+ @inflectors ||= []
7
+ end
8
+
9
+ def self.inflect(method, *args)
10
+ inflectors << Inflector.new(method, args)
11
+ end
12
+
13
+ def self.inflections(key)
14
+ [key.to_s, key.to_s.to_sym].tap do |list|
15
+ inflectors.each do |i|
16
+ k = key.to_s.send i.method, *i.arguments
17
+ list.concat [k, k.to_sym]
18
+ end
19
+ end.uniq
20
+ end
21
+
22
+ def methods(*args)
23
+ keys.flat_map{ |k| self.class.inflections(k).map(&:to_sym) }.uniq.concat(super)
24
+ end
25
+
26
+ def respond_to?(method, *args)
27
+ super || methods.include?(method.to_sym)
28
+ end
29
+
30
+ def get(key)
31
+ indiferent_access = [key, key.to_s, key.to_s.to_sym].uniq
32
+
33
+ indiferent_access.each do |k|
34
+ return self[k] if key?(k)
35
+ end
36
+
37
+ Hash[keys.map{ |k| [k, self.class.inflections(k)] }].each do |k,v|
38
+ return self[k] if (v & indiferent_access).any?
39
+ end
40
+
41
+ nil
42
+ end
43
+
44
+ def method_missing(method, *args, &block)
45
+ return get(method) if respond_to?(method.to_sym)
46
+ super
47
+ end
48
+
49
+ end
@@ -1,5 +1,3 @@
1
- require 'base64'
2
-
3
1
  module Marshal
4
2
 
5
3
  def self.encode64(object)
@@ -0,0 +1,34 @@
1
+ class Paginator
2
+
3
+ include Enumerable
4
+
5
+ attr_reader :page, :size
6
+
7
+ def initialize(collection, options={})
8
+ @collection = collection
9
+ @page = options[:page] ? options[:page].to_i : 1
10
+ @size = options[:size] ? options[:size].to_i : 10
11
+ end
12
+
13
+ def each(&block)
14
+ from = size * (page - 1)
15
+ (@collection.slice(from, size) || []).each(&block)
16
+ end
17
+
18
+ def total
19
+ @collection.count
20
+ end
21
+
22
+ def pages
23
+ (total / size.to_f).ceil
24
+ end
25
+
26
+ def first?
27
+ page == 1
28
+ end
29
+
30
+ def last?
31
+ page == pages
32
+ end
33
+
34
+ end
@@ -0,0 +1,23 @@
1
+ class Ruby
2
+
3
+ def self.engine
4
+ RUBY_ENGINE
5
+ end
6
+
7
+ def self.platform
8
+ RUBY_PLATFORM
9
+ end
10
+
11
+ def self.version
12
+ RUBY_VERSION
13
+ end
14
+
15
+ def self.mri?
16
+ engine == 'ruby'
17
+ end
18
+
19
+ def self.jruby?
20
+ engine == 'jruby'
21
+ end
22
+
23
+ end
@@ -1,17 +1,11 @@
1
- # encoding: utf-8
2
1
  class String
3
2
 
4
- ACCENTS_MAPPING = [
5
- {letter: 'A', upcase: 'ÁÀÄÂ', downcase: 'áàäâ'},
6
- {letter: 'E', upcase: 'ÉÈËÊ', downcase: 'éèëê'},
7
- {letter: 'I', upcase: 'ÍÌÏÎ', downcase: 'íìïî'},
8
- {letter: 'O', upcase: 'ÓÒÖÔ', downcase: 'óòöô'},
9
- {letter: 'U', upcase: 'ÚÙÜÛ', downcase: 'úùüû'}
10
- ]
3
+ ACCENTS_MAPPING = ConfigReader.accents_mapping
4
+ SIMILAR_CHARACTER_MAPPING = ConfigReader.similar_character_mapping
11
5
 
12
6
  alias_method :upcase_ignoring_accents!, :upcase!
13
7
  def upcase!
14
- ACCENTS_MAPPING.each { |map| tr! map[:downcase], map[:upcase] }
8
+ ACCENTS_MAPPING.values.each { |map| tr! map['downcase'], map['upcase'] }
15
9
  upcase_ignoring_accents!
16
10
  end
17
11
 
@@ -21,7 +15,7 @@ class String
21
15
 
22
16
  alias_method :downcase_ignoring_accents!, :downcase!
23
17
  def downcase!
24
- ACCENTS_MAPPING.each { |map| tr! map[:upcase], map[:downcase] }
18
+ ACCENTS_MAPPING.values.each { |map| tr! map['upcase'], map['downcase'] }
25
19
  downcase_ignoring_accents!
26
20
  end
27
21
 
@@ -30,9 +24,9 @@ class String
30
24
  end
31
25
 
32
26
  def unaccented!
33
- ACCENTS_MAPPING.each do |map|
34
- tr! map[:upcase], map[:letter]
35
- tr! map[:downcase], map[:letter].downcase
27
+ ACCENTS_MAPPING.each do |letter,map|
28
+ tr! map['upcase'], letter
29
+ tr! map['downcase'], letter.downcase
36
30
  end
37
31
  nil
38
32
  end
@@ -41,10 +35,21 @@ class String
41
35
  self.dup.tap(&:unaccented!)
42
36
  end
43
37
 
38
+ def letterize!
39
+ SIMILAR_CHARACTER_MAPPING.each do |letter, similar_chars|
40
+ tr! similar_chars, letter.to_s
41
+ end
42
+ end
43
+
44
+ def letterize
45
+ self.dup.tap(&:letterize!)
46
+ end
47
+
44
48
  def normalized!
45
49
  self.strip!
46
50
  self.gsub! /\s/, '_'
47
51
  self.unaccented!
52
+ self.letterize!
48
53
  self.downcase!
49
54
  end
50
55
 
@@ -52,4 +57,25 @@ class String
52
57
  self.dup.tap(&:normalized!)
53
58
  end
54
59
 
60
+ unless method_defined? :underscore
61
+ def underscore
62
+ self.gsub(/::/, '/').
63
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
64
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
65
+ tr("-", "_").
66
+ downcase
67
+ end
68
+ end
69
+
70
+ unless method_defined? :camelize
71
+ def camelize(upper_case_first_letter=true)
72
+ return self if self !~ /_/ && self =~ /[A-Z]+.*/
73
+ if upper_case_first_letter
74
+ split('_').map{|e| e.capitalize}.join
75
+ else
76
+ split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
77
+ end
78
+ end
79
+ end
80
+
55
81
  end
@@ -1,3 +1,3 @@
1
1
  module CoreExtended
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -0,0 +1,21 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Array do
4
+
5
+ it 'Paginate' do
6
+ array = (1..20).to_a
7
+ paginator = array.page(2, 5)
8
+
9
+ paginator.page.must_equal 2
10
+ paginator.size.must_equal 5
11
+
12
+ paginator.total.must_equal 20
13
+ paginator.pages.must_equal 4
14
+
15
+ paginator.wont_be :first?
16
+ paginator.wont_be :last?
17
+
18
+ paginator.to_a.must_equal_contents (6..10).to_a
19
+ end
20
+
21
+ end
data/spec/file_spec.rb CHANGED
@@ -1,10 +1,24 @@
1
- RbConfig::CONFIG['host_os'] = 'mswin'
2
1
  require 'minitest_helper'
3
2
 
4
3
  describe File do
5
4
 
5
+ windows_method = OS.method(:windows?)
6
+ jruby_method = Ruby.method(:jruby?)
7
+
8
+ after do
9
+ OS.define_singleton_method :windows?, &windows_method
10
+ Ruby.define_singleton_method :jruby?, &jruby_method
11
+ end
12
+
6
13
  it 'Fix size for windows and jruby' do
7
- File.open(__FILE__, 'r') { |f| f.size.must_equal 193 }
14
+ OS.define_singleton_method(:windows?) { true }
15
+ Ruby.define_singleton_method(:jruby?) { true }
16
+
17
+ File.open("#{File.dirname(__FILE__)}/../LICENSE.txt", 'r') { |f| f.size.must_equal 1071 }
18
+ end
19
+
20
+ it 'Default size for other platforms' do
21
+ File.open("#{File.dirname(__FILE__)}/../LICENSE.txt", 'r') { |f| f.size.must_equal 1071 }
8
22
  end
9
23
 
10
24
  end
data/spec/hash_spec.rb ADDED
@@ -0,0 +1,116 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Hash do
4
+
5
+ after do
6
+ Hash.inflectors.clear
7
+ end
8
+
9
+ describe 'Without inflectors' do
10
+
11
+ before do
12
+ Hash.inflectors.clear
13
+ end
14
+
15
+ hash = {keyName1: 1, 'keyName2' => 2}
16
+
17
+ it 'Inflections' do
18
+ Hash.inflections('keyName').must_equal_contents ['keyName', :keyName]
19
+ end
20
+
21
+ it 'Get with indiferent access' do
22
+ hash.get(:keyName1).must_equal 1
23
+ hash.get('keyName1').must_equal 1
24
+
25
+ hash.get(:keyName2).must_equal 2
26
+ hash.get('keyName2').must_equal 2
27
+
28
+ hash.get(:keyName3).must_be_nil
29
+ hash.get('keyName3').must_be_nil
30
+ end
31
+
32
+ it 'Methods for all keys' do
33
+ hash.methods.must_include :keyName1
34
+ hash.methods.must_include :keyName2
35
+ hash.methods.wont_include :keyName3
36
+ end
37
+
38
+ it 'Respond to all keys' do
39
+ hash.must_be :respond_to?, :keyName1
40
+ hash.must_be :respond_to?, :keyName2
41
+ hash.wont_be :respond_to?, :keyName3
42
+ end
43
+
44
+ it 'Key method accessors' do
45
+ hash.keyName1.must_equal 1
46
+ hash.keyName2.must_equal 2
47
+ proc { hash.keyName3 }.must_raise NoMethodError
48
+ end
49
+
50
+ end
51
+
52
+ describe 'With inflectors' do
53
+
54
+ before do
55
+ Hash.inflect :underscore
56
+ end
57
+
58
+ hash = {keyName1: 1, 'KeyName2' => 2, key_name3: 3}
59
+
60
+ it 'Inflections' do
61
+ Hash.inflections('keyName').must_equal_contents ['keyName', :keyName, 'key_name', :key_name]
62
+ end
63
+
64
+ it 'Get with indiferent access' do
65
+ hash.get(:keyName1).must_equal 1
66
+ hash.get('keyName1').must_equal 1
67
+ hash.get(:key_name1).must_equal 1
68
+ hash.get('key_name1').must_equal 1
69
+
70
+ hash.get(:KeyName2).must_equal 2
71
+ hash.get('KeyName2').must_equal 2
72
+ hash.get(:key_name2).must_equal 2
73
+ hash.get('key_name2').must_equal 2
74
+
75
+ hash.get(:keyName3).must_be_nil
76
+ hash.get('keyName3').must_be_nil
77
+ hash.get(:key_name3).must_equal 3
78
+ hash.get('key_name3').must_equal 3
79
+ end
80
+
81
+ it 'Methods for all keys' do
82
+ hash.methods.must_include :keyName1
83
+ hash.methods.must_include :key_name1
84
+
85
+ hash.methods.must_include :KeyName2
86
+ hash.methods.must_include :key_name2
87
+
88
+ hash.methods.wont_include :keyName3
89
+ hash.methods.must_include :key_name3
90
+ end
91
+
92
+ it 'Respond to all keys' do
93
+ hash.must_be :respond_to?, :keyName1
94
+ hash.must_be :respond_to?, :key_name1
95
+
96
+ hash.must_be :respond_to?, :KeyName2
97
+ hash.must_be :respond_to?, :key_name2
98
+
99
+ hash.wont_be :respond_to?, :keyName3
100
+ hash.must_be :respond_to?, :key_name3
101
+ end
102
+
103
+ it 'Key method accessors' do
104
+ hash.keyName1.must_equal 1
105
+ hash.key_name1.must_equal 1
106
+
107
+ hash.KeyName2.must_equal 2
108
+ hash.key_name2.must_equal 2
109
+
110
+ proc { hash.keyName3 }.must_raise NoMethodError
111
+ hash.key_name3.must_equal 3
112
+ end
113
+
114
+ end
115
+
116
+ end
@@ -1,5 +1,6 @@
1
1
  require 'coverage_helper'
2
2
  require 'minitest/autorun'
3
+ require 'minitest/great_expectations'
3
4
  require 'turn'
4
5
  require 'core_extended'
5
6
 
@@ -0,0 +1,37 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Paginator do
4
+
5
+ array = (1..50).to_a
6
+
7
+ it 'Defaults' do
8
+ paginator = Paginator.new array
9
+
10
+ paginator.page.must_equal 1
11
+ paginator.size.must_equal 10
12
+
13
+ paginator.total.must_equal 50
14
+ paginator.pages.must_equal 5
15
+
16
+ paginator.must_be :first?
17
+ paginator.wont_be :last?
18
+
19
+ paginator.to_a.must_equal_contents (1..10).to_a
20
+ end
21
+
22
+ it 'With arguments' do
23
+ paginator = Paginator.new array, page: 3, size: 20
24
+
25
+ paginator.page.must_equal 3
26
+ paginator.size.must_equal 20
27
+
28
+ paginator.total.must_equal 50
29
+ paginator.pages.must_equal 3
30
+
31
+ paginator.wont_be :first?
32
+ paginator.must_be :last?
33
+
34
+ paginator.to_a.must_equal_contents (41..50).to_a
35
+ end
36
+
37
+ end
data/spec/ruby_spec.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Ruby do
4
+
5
+ it 'Engine' do
6
+ Ruby.engine.must_equal RUBY_ENGINE
7
+ end
8
+
9
+ it 'Platform' do
10
+ Ruby.platform.must_equal RUBY_PLATFORM
11
+ end
12
+
13
+ it 'Version' do
14
+ Ruby.version.must_equal RUBY_VERSION
15
+ end
16
+
17
+ it 'MRI' do
18
+ Ruby.mri?.must_equal RUBY_ENGINE == 'ruby'
19
+ end
20
+
21
+ it 'JRuby' do
22
+ Ruby.jruby?.must_equal RUBY_ENGINE == 'jruby'
23
+ end
24
+
25
+ end
data/spec/string_spec.rb CHANGED
@@ -71,6 +71,33 @@ describe String do
71
71
 
72
72
  end
73
73
 
74
+ describe 'Letterize' do
75
+
76
+ it 'Transform all similar letters' do
77
+ ConfigReader.similar_character_mapping.each do |letter, similar_chars|
78
+ similar_chars.chars.each do |char|
79
+ char.letterize.must_equal letter
80
+ end
81
+ end
82
+ end
83
+
84
+ it 'Transform keeping case' do
85
+ 'ßΔЯƦą'.letterize.must_equal 'BARRa'
86
+ end
87
+
88
+ it 'Keep itself' do
89
+ string = 'ßΔЯƦą'
90
+ string.letterize.must_equal 'BARRa'
91
+ string.must_equal 'ßΔЯƦą'
92
+ end
93
+
94
+ it 'Change itself' do
95
+ string = 'ßΔЯƦą'
96
+ string.letterize!
97
+ string.must_equal 'BARRa'
98
+ end
99
+ end
100
+
74
101
  describe 'Normalized' do
75
102
 
76
103
  it 'Downcase' do
@@ -103,4 +130,44 @@ describe String do
103
130
 
104
131
  end
105
132
 
133
+ describe 'Underscore' do
134
+
135
+ it 'Camel case' do
136
+ 'CamelCase'.underscore.must_equal 'camel_case'
137
+ end
138
+
139
+ it 'Camel case start with downcase' do
140
+ 'camelCase'.underscore.must_equal 'camel_case'
141
+ end
142
+
143
+ it 'Lower case' do
144
+ 'lowercase'.underscore.must_equal 'lowercase'
145
+ end
146
+
147
+ it 'Upper case' do
148
+ 'UPPERCASE'.underscore.must_equal 'uppercase'
149
+ end
150
+
151
+ end
152
+
153
+ describe 'Camelize' do
154
+
155
+ it 'Underscore' do
156
+ 'under_score'.camelize.must_equal 'UnderScore'
157
+ end
158
+
159
+ it 'Underscore convert staring with downcase' do
160
+ 'under_score'.camelize(false).must_equal 'underScore'
161
+ end
162
+
163
+ it 'Lower case' do
164
+ 'lowercase'.camelize.must_equal 'Lowercase'
165
+ end
166
+
167
+ it 'Upper case' do
168
+ 'UPPERCASE'.camelize.must_equal 'UPPERCASE'
169
+ end
170
+
171
+ end
172
+
106
173
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: core_extended
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-04 00:00:00.000000000 Z
12
+ date: 2013-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '4.7'
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest-great_expectations
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: turn
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -91,6 +107,22 @@ dependencies:
91
107
  - - ! '>='
92
108
  - !ruby/object:Gem::Version
93
109
  version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: json
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.7.7
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.7.7
94
126
  description: Ruby core extensions
95
127
  email:
96
128
  - gabynaiman@gmail.com
@@ -105,18 +137,29 @@ files:
105
137
  - LICENSE.txt
106
138
  - README.md
107
139
  - Rakefile
140
+ - config/accents_mapping.yml
141
+ - config/similar_character_mapping.yml
108
142
  - core_extended.gemspec
109
143
  - lib/core_extended.rb
144
+ - lib/core_extended/array.rb
145
+ - lib/core_extended/config_reader.rb
110
146
  - lib/core_extended/file.rb
147
+ - lib/core_extended/hash.rb
111
148
  - lib/core_extended/marshal.rb
112
149
  - lib/core_extended/os.rb
150
+ - lib/core_extended/paginator.rb
151
+ - lib/core_extended/ruby.rb
113
152
  - lib/core_extended/string.rb
114
153
  - lib/core_extended/version.rb
154
+ - spec/array_spec.rb
115
155
  - spec/coverage_helper.rb
116
156
  - spec/file_spec.rb
157
+ - spec/hash_spec.rb
117
158
  - spec/marshal_spec.rb
118
159
  - spec/minitest_helper.rb
119
160
  - spec/os_spec.rb
161
+ - spec/paginator_spec.rb
162
+ - spec/ruby_spec.rb
120
163
  - spec/string_spec.rb
121
164
  homepage: https://github.com/gabynaiman/core_extended
122
165
  licenses:
@@ -131,23 +174,32 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
174
  - - ! '>='
132
175
  - !ruby/object:Gem::Version
133
176
  version: '0'
177
+ segments:
178
+ - 0
179
+ hash: 2176153387559094585
134
180
  required_rubygems_version: !ruby/object:Gem::Requirement
135
181
  none: false
136
182
  requirements:
137
183
  - - ! '>='
138
184
  - !ruby/object:Gem::Version
139
185
  version: '0'
186
+ segments:
187
+ - 0
188
+ hash: 2176153387559094585
140
189
  requirements: []
141
190
  rubyforge_project:
142
- rubygems_version: 1.8.24
191
+ rubygems_version: 1.8.25
143
192
  signing_key:
144
193
  specification_version: 3
145
194
  summary: Ruby core extensions
146
195
  test_files:
196
+ - spec/array_spec.rb
147
197
  - spec/coverage_helper.rb
148
198
  - spec/file_spec.rb
199
+ - spec/hash_spec.rb
149
200
  - spec/marshal_spec.rb
150
201
  - spec/minitest_helper.rb
151
202
  - spec/os_spec.rb
203
+ - spec/paginator_spec.rb
204
+ - spec/ruby_spec.rb
152
205
  - spec/string_spec.rb
153
- has_rdoc: