vidibus-core_extensions 0.3.17 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Andre Pankratz
1
+ Copyright (c) 2010-2012 Andre Pankratz
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # Vidibus::CoreExtensions [![](http://travis-ci.org/vidibus/vidibus-core_extensions.png)](http://travis-ci.org/vidibus/vidibus-core_extensions) [![](http://stillmaintained.com/vidibus/vidibus-core_extensions.png)](http://stillmaintained.com/vidibus/vidibus-core_extensions)
2
+
3
+ This gem is part of the open source SOA framework Vidibus: http://vidibus.org
4
+
5
+ It provides some extensions to the ruby core.
6
+
7
+
8
+ ## Installation
9
+
10
+ Add `gem "vidibus-secure"` to your Gemfile. Then call `bundle install` on your console.
11
+
12
+
13
+ # Usage
14
+
15
+ ## Array
16
+
17
+ ### Array#flatten_once
18
+
19
+ Flattens first level of an array. Example:
20
+ ```ruby
21
+ [1, [2, [3]]].flatten_once # => [1, 2, [3]]
22
+ ```
23
+
24
+ ### Array#merge
25
+
26
+ Merges given array with current one.
27
+
28
+ It will perform insertion of new items by three rules:
29
+
30
+ 1. If the item's predecessor is present, insert item after it.
31
+ 2. If the item's follower is present, insert item before it.
32
+ 3. Insert item at end of list.
33
+
34
+ Examples:
35
+
36
+ ```ruby
37
+ [].merge([1, 2]) # => [1, 2]
38
+ ['a'].merge([1, 2]) # => ['a', 1, 2]
39
+ [1, 'a'].merge([1, 2]) # => [1, 2, 'a']
40
+ [1, 'a'].merge([3, 1, 2]) # => [3, 1, 2, 'a']
41
+ ```
42
+
43
+ ## Hash
44
+
45
+ ### Hash#to_uri
46
+
47
+ Returns URL-encoded string of uri params. Examples:
48
+
49
+ ```ruby
50
+ {:some => :value, :another => "speciál"}.to_uri # => "some=value&another=speci%C3%A1l"
51
+ {:some => {:nested => :thing}}.to_uri # => "some[nested]=thing"
52
+ ```
53
+
54
+ ### Hash#only
55
+
56
+ Returns a copy of self including only the given keys. Example:
57
+
58
+ ```ruby
59
+ {:name => "Rodrigo", :age => 21}.only(:name) # => {:name => "Rodrigo"}
60
+ ```
61
+
62
+ ### Hash#except
63
+
64
+ Returns a copy of self including all but the given keys. Example:
65
+
66
+ ```ruby
67
+ {:name => "Rodrigo", :age = 21}.except(:name) # => {:age => 21}
68
+ ```
69
+
70
+ ## String
71
+
72
+ ### String#latinize
73
+
74
+ Returns a string without exotic chars. Examples:
75
+
76
+ ```ruby
77
+ "Hola señor, ¿cómo está?".latinize # => "Hola senor, como esta?"
78
+ "Ähre, wem Ähre gebührt.".latinize # => "AEhre, wem AEhre gebuehrt."
79
+ ```
80
+
81
+ ### String#permalink
82
+
83
+ Returns a string that may be used as permalink. Example:
84
+
85
+ ```ruby
86
+ "Hola señor, ¿cómo está?".permalink # => "hola-senor-como-esta"
87
+ ```
88
+
89
+ ## Copyright
90
+
91
+ Copyright (c) 2010-2012 Andre Pankratz. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,36 +1,17 @@
1
- require "rubygems"
2
- require "rake"
3
- require "rake/rdoctask"
4
- require "rspec"
5
- require "rspec/core/rake_task"
1
+ $:.unshift File.expand_path('../lib/', __FILE__)
6
2
 
7
- begin
8
- require "jeweler"
9
- Jeweler::Tasks.new do |gem|
10
- gem.name = "vidibus-core_extensions"
11
- gem.rubyforge_project = "vidibus-core_extensions"
12
- gem.summary = %Q{Extends the ruby core.}
13
- gem.description = %Q{Provides some extensions to the ruby core.}
14
- gem.email = "andre@vidibus.com"
15
- gem.homepage = "http://github.com/vidibus/vidibus-core_extensions"
16
- gem.authors = ["Andre Pankratz"]
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
- end
3
+ require 'bundler'
4
+ require 'rdoc/task'
5
+ require 'rspec'
6
+ require 'rspec/core/rake_task'
7
+ require 'vidibus/core_extensions/version'
22
8
 
23
- Rspec::Core::RakeTask.new(:rcov) do |t|
24
- t.pattern = "spec/**/*_spec.rb"
25
- t.rcov = true
26
- t.rcov_opts = ["--exclude", "^spec,/gems/"]
27
- end
9
+ Bundler::GemHelper.install_tasks
28
10
 
29
11
  Rake::RDocTask.new do |rdoc|
30
- version = File.exist?("VERSION") ? File.read("VERSION") : ""
31
- rdoc.rdoc_dir = "rdoc"
32
- rdoc.title = "vidibus-core_extensions #{version}"
33
- rdoc.rdoc_files.include("README*")
34
- rdoc.rdoc_files.include("lib/**/*.rb")
35
- rdoc.options << "--charset=utf-8"
12
+ rdoc.rdoc_dir = 'rdoc'
13
+ rdoc.title = "Vidibus::CoreExtensions #{Vidibus::CoreExtensions::VERSION}"
14
+ rdoc.rdoc_files.include('README*')
15
+ rdoc.rdoc_files.include('lib/**/*.rb')
16
+ rdoc.options << '--charset=utf-8'
36
17
  end
@@ -1,2 +1 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib", "vidibus"))
2
- require "core_extensions"
1
+ require 'vidibus/core_extensions'
@@ -1,5 +1,5 @@
1
- require "core_extensions/object"
2
- require "core_extensions/hash"
3
- require "core_extensions/array"
4
- require "core_extensions/string"
5
- require "core_extensions/file_utils"
1
+ require 'vidibus/core_extensions/object'
2
+ require 'vidibus/core_extensions/hash'
3
+ require 'vidibus/core_extensions/array'
4
+ require 'vidibus/core_extensions/string'
5
+ require 'vidibus/core_extensions/file_utils'
@@ -135,4 +135,17 @@ class String
135
135
  return self unless params and params.any?
136
136
  self + (self.match(/\?/) ? "&" : "?") + params.to_query
137
137
  end
138
+
139
+ # Converts string into a naturally sortable string.
140
+ def sortable
141
+ matches = self.scan(/(\D+)?(\d+(?:[\.]?\d+)?)(\D+)?/)
142
+ return self.downcase.gsub(/\s/, '') if matches.none?
143
+ ''.tap do |converted|
144
+ matches.each do |s1, i, s2|
145
+ converted << s1.downcase.gsub(/\s/, '') if s1
146
+ converted << '%030f' % i.to_f
147
+ converted << s2.downcase.gsub(/\s/, '') if s2
148
+ end
149
+ end
150
+ end
138
151
  end
@@ -0,0 +1,5 @@
1
+ module Vidibus
2
+ module CoreExtensions
3
+ VERSION = '0.4.1'
4
+ end
5
+ end
metadata CHANGED
@@ -1,136 +1,154 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: vidibus-core_extensions
3
- version: !ruby/object:Gem::Version
4
- hash: 49
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 3
9
- - 17
10
- version: 0.3.17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.1
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
13
- - Andre Pankratz
7
+ authors:
8
+ - André Pankratz
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-02-25 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-09-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0
22
22
  type: :development
23
23
  prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rdoc
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
24
63
  name: rspec
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
26
65
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '2'
36
70
  type: :development
37
71
  prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '2'
78
+ - !ruby/object:Gem::Dependency
38
79
  name: rr
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
40
89
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
48
- requirement: *id002
49
- - !ruby/object:Gem::Dependency
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: simplecov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
50
102
  type: :development
51
103
  prerelease: false
52
- name: relevance-rcov
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
54
105
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
62
- requirement: *id003
63
- description: Provides some extensions to the ruby core.
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: Provides some extensions of the Ruby core
64
111
  email: andre@vidibus.com
65
112
  executables: []
66
-
67
113
  extensions: []
68
-
69
- extra_rdoc_files:
70
- - LICENSE
71
- - README.rdoc
72
- files:
73
- - .bundle/config
74
- - .document
75
- - .rspec
76
- - Gemfile
77
- - Gemfile.lock
78
- - LICENSE
79
- - README.rdoc
80
- - Rakefile
81
- - VERSION
82
- - lib/vidibus-core_extensions.rb
83
- - lib/vidibus/core_extensions.rb
114
+ extra_rdoc_files: []
115
+ files:
84
116
  - lib/vidibus/core_extensions/array.rb
85
117
  - lib/vidibus/core_extensions/file_utils.rb
86
118
  - lib/vidibus/core_extensions/hash.rb
87
119
  - lib/vidibus/core_extensions/object.rb
88
120
  - lib/vidibus/core_extensions/string.rb
89
- - spec/spec_helper.rb
90
- - spec/vidibus/core_extensions/array_spec.rb
91
- - spec/vidibus/core_extensions/file_utils_spec.rb
92
- - spec/vidibus/core_extensions/hash_spec.rb
93
- - spec/vidibus/core_extensions/object_spec.rb
94
- - spec/vidibus/core_extensions/string_spec.rb
95
- - vidibus-core_extensions.gemspec
96
- has_rdoc: true
97
- homepage: http://github.com/vidibus/vidibus-core_extensions
121
+ - lib/vidibus/core_extensions/version.rb
122
+ - lib/vidibus/core_extensions.rb
123
+ - lib/vidibus-core_extensions.rb
124
+ - LICENSE
125
+ - README.md
126
+ - Rakefile
127
+ homepage: https://github.com/vidibus/vidibus-core_extensions
98
128
  licenses: []
99
-
100
129
  post_install_message:
101
130
  rdoc_options: []
102
-
103
- require_paths:
131
+ require_paths:
104
132
  - lib
105
- required_ruby_version: !ruby/object:Gem::Requirement
133
+ required_ruby_version: !ruby/object:Gem::Requirement
106
134
  none: false
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- hash: 3
111
- segments:
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ segments:
112
140
  - 0
113
- version: "0"
114
- required_rubygems_version: !ruby/object:Gem::Requirement
141
+ hash: -4171315463273858690
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
143
  none: false
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 0
122
- version: "0"
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: 1.3.6
123
148
  requirements: []
124
-
125
149
  rubyforge_project: vidibus-core_extensions
126
- rubygems_version: 1.3.7
150
+ rubygems_version: 1.8.24
127
151
  signing_key:
128
152
  specification_version: 3
129
- summary: Extends the ruby core.
130
- test_files:
131
- - spec/spec_helper.rb
132
- - spec/vidibus/core_extensions/array_spec.rb
133
- - spec/vidibus/core_extensions/file_utils_spec.rb
134
- - spec/vidibus/core_extensions/hash_spec.rb
135
- - spec/vidibus/core_extensions/object_spec.rb
136
- - spec/vidibus/core_extensions/string_spec.rb
153
+ summary: Provides some extensions of the Ruby core
154
+ test_files: []
data/.bundle/config DELETED
@@ -1,2 +0,0 @@
1
- ---
2
- BUNDLE_DISABLE_SHARED_GEMS: "1"
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format nested
data/Gemfile DELETED
@@ -1,7 +0,0 @@
1
- source :rubygems
2
-
3
- group :development do
4
- gem "rspec"
5
- gem "rr"
6
- gem "relevance-rcov"
7
- end
data/Gemfile.lock DELETED
@@ -1,22 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- diff-lcs (1.1.2)
5
- relevance-rcov (0.9.2.1)
6
- rr (1.0.2)
7
- rspec (2.5.0)
8
- rspec-core (~> 2.5.0)
9
- rspec-expectations (~> 2.5.0)
10
- rspec-mocks (~> 2.5.0)
11
- rspec-core (2.5.1)
12
- rspec-expectations (2.5.0)
13
- diff-lcs (~> 1.1.2)
14
- rspec-mocks (2.5.0)
15
-
16
- PLATFORMS
17
- ruby
18
-
19
- DEPENDENCIES
20
- relevance-rcov
21
- rr
22
- rspec
data/README.rdoc DELETED
@@ -1,89 +0,0 @@
1
- = vidibus-core_extensions
2
-
3
- This gem is part of the open source SOA framework Vidibus: http://vidibus.org
4
-
5
- It provides some extensions to the ruby core.
6
-
7
-
8
- == Installation
9
-
10
- Add the dependency to the Gemfile of your application:
11
-
12
- gem "vidibus-core_extensions"
13
-
14
- Then call bundle install on your console.
15
-
16
-
17
- = Usage
18
-
19
- == Array
20
-
21
- === Array#flatten_once
22
-
23
- Flattens first level of an array. Example:
24
-
25
- [1, [2, [3]]].flatten_once # => [1, 2, [3]]
26
-
27
-
28
- === Array#merge
29
-
30
- Merges given array with current one.
31
-
32
- It will perform insertion of new items by three rules:
33
-
34
- 1. If the item's predecessor is present, insert item after it.
35
- 2. If the item's follower is present, insert item before it.
36
- 3. Insert item at end of list.
37
-
38
- Examples:
39
-
40
- [].merge([1, 2]) # => [1, 2]
41
- ['a'].merge([1, 2]) # => ['a', 1, 2]
42
- [1, 'a'].merge([1, 2]) # => [1, 2, 'a']
43
- [1, 'a'].merge([3, 1, 2]) # => [3, 1, 2, 'a']
44
-
45
-
46
- == Hash
47
-
48
- === Hash#to_uri
49
-
50
- Returns URL-encoded string of uri params. Examples:
51
-
52
- {:some => :value, :another => "speciál"}.to_uri # => "some=value&another=speci%C3%A1l"
53
- {:some => {:nested => :thing}}.to_uri # => "some[nested]=thing"
54
-
55
-
56
- === Hash#only
57
-
58
- Returns a copy of self including only the given keys. Example:
59
-
60
- {:name => "Rodrigo", :age => 21}.only(:name) # => {:name => "Rodrigo"}
61
-
62
-
63
- === Hash#except
64
-
65
- Returns a copy of self including all but the given keys. Example:
66
-
67
- {:name => "Rodrigo", :age = 21}.except(:name) # => {:age => 21}
68
-
69
-
70
- == String
71
-
72
- === String#latinize
73
-
74
- Returns a string without exotic chars. Examples:
75
-
76
- "Hola señor, ¿cómo está?".latinize # => "Hola senor, como esta?"
77
- "Ähre, wem Ähre gebührt.".latinize # => "AEhre, wem AEhre gebuehrt."
78
-
79
-
80
- === String#permalink
81
-
82
- Returns a string that may be used as permalink. Example:
83
-
84
- "Hola señor, ¿cómo está?".permalink # => "hola-senor-como-esta"
85
-
86
-
87
- == Copyright
88
-
89
- Copyright (c) 2010 Andre Pankratz. See LICENSE for details.
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.3.17
data/spec/spec_helper.rb DELETED
@@ -1,11 +0,0 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
-
4
- require "rubygems"
5
- require "rspec"
6
- require "rr"
7
- require "vidibus-core_extensions"
8
-
9
- RSpec.configure do |config|
10
- config.mock_with :rr
11
- end
@@ -1,199 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "Array" do
4
- describe "#flatten_once" do
5
- it "should return array" do
6
- array = ['go', 'for', 'it']
7
- array.flatten_once.should eql(['go', 'for', 'it'])
8
- end
9
-
10
- it "should return a flattened array" do
11
- array = ['go', ['for', 'it']]
12
- array.flatten_once.should eql(['go', 'for', 'it'])
13
- end
14
-
15
- it "should flatten first level only" do
16
- array = ['go', ['for', ['it']]]
17
- array.flatten_once.should eql(['go', 'for', ['it']])
18
- end
19
-
20
- it "should accept array with mixed values" do
21
- array = ["go", [1,2], { :it => "dude" }]
22
- array.flatten_once.should eql(["go", 1, 2, { :it => "dude" }])
23
- end
24
- end
25
-
26
- describe "#merge" do
27
- it "should merge [] with [1,2]" do
28
- [].merge([1,2]).should eql([1,2])
29
- end
30
-
31
- it "should merge [a] with [1,2]" do
32
- ['a'].merge([1,2]).should eql(['a',1,2])
33
- end
34
-
35
- it "should merge [1,'a'] with [1,2]" do
36
- [1,'a'].merge([1,2]).should eql([1,2,'a'])
37
- end
38
-
39
- it "should merge [1,'a'] with [3,1,2]" do
40
- [1,'a'].merge([3,1,2]).should eql([3,1,2,'a'])
41
- end
42
-
43
- it "should merge ['b',1,'a'] with [3,1,2]" do
44
- ['b',1,'a'].merge([3,1,2]).should eql(['b',3,1,2,'a'])
45
- end
46
-
47
- it "should merge [2,'b',1,'a'] with [3,1,2]" do
48
- [2,'b',1,'a'].merge([3,1,2]).should eql([2,'b',3,1,'a'])
49
- end
50
-
51
- it "should merge [2,'b',1,'a'] with [3,1,2,4]" do
52
- [2,'b',1,'a'].merge([3,1,2,4]).should eql([2,4,'b',3,1,'a'])
53
- end
54
-
55
- it "should merge [2,'b',1,'a'] with [5,3,6,7,1,2,4]" do
56
- [2,'b',1,'a'].merge([5,3,6,7,1,2,4]).should eql([2,4,'b',5,3,6,7,1,'a'])
57
- end
58
-
59
- context "with :strict option" do
60
- it "should merge [] with [1,2]" do
61
- array = [1,2]
62
- [].merge(array, :strict => true).should eql([])
63
- array.should eql([1,2])
64
- end
65
-
66
- it "should merge [1,'a'] with [3,1,2]" do
67
- array = [3,1,2]
68
- [1,'a'].merge(array, :strict => true).should eql([3,1,2,'a'])
69
- array.should be_empty
70
- end
71
- end
72
- end
73
-
74
- describe "#merge_nested" do
75
- it "should merge [[]] with [[1,2]]" do
76
- [[]].merge_nested([[1,2]]).should eql([[1,2]])
77
- end
78
-
79
- it "should merge [[]] with [[1],[2]]" do
80
- [[]].merge_nested([[1],[2]]).should eql([[1,2]])
81
- end
82
-
83
- it "should merge [[],[]] with [[1],[2]]" do
84
- [[],[]].merge_nested([[1],[2]]).should eql([[1],[2]])
85
- end
86
-
87
- it "should merge [[1],[]] with [[1],[2]]" do
88
- [[1],[]].merge_nested([[1],[2]]).should eql([[1],[2]])
89
- end
90
-
91
- it "should merge [[1],[2]] with [[1],[2]]" do
92
- [[1],[2]].merge_nested([[1],[2]]).should eql([[1],[2]])
93
- end
94
-
95
- it "should merge [[2],[1]] with [[1],[2]]" do
96
- [[2],[1]].merge_nested([[1],[2]]).should eql([[2],[1]])
97
- end
98
-
99
- it "should merge [[2]] with [[1],[2]]" do
100
- [[2]].merge_nested([[1],[2]]).should eql([[2,1]])
101
- end
102
-
103
- it "should merge [[2],[]] with [[1],[2]]" do
104
- [[2],[]].merge_nested([[1],[2]]).should eql([[2,1],[]])
105
- end
106
-
107
- it "should merge [[1,2,3]] with [[1,2],[3]]" do
108
- [[1,2,3]].merge_nested([[1,2],[3]]).should eql([[1,2,3]])
109
- end
110
-
111
- it "should merge [[1,2],[3]] with [[1],[2,3]]" do
112
- [[1,2],[3]].merge_nested([[1],[2,3]]).should eql([[1,2],[3]])
113
- end
114
-
115
- it "should keep source intact" do
116
- source = [[1,2]]
117
- [[1,2]].merge_nested(source)
118
- source.should eql([[1,2]])
119
- end
120
- end
121
-
122
- describe "#flatten_with_boundaries" do
123
- it "should flatten [[1]]" do
124
- [[1]].flatten_with_boundaries.should eql(["__a0",1,"__a0"])
125
- end
126
-
127
- it "should flatten [[1],2,[3]]" do
128
- [[1],2,[3]].flatten_with_boundaries.should eql(["__a0",1,"__a0",2,"__a1",3,"__a1"])
129
- end
130
-
131
- it "should flatten [1,[2],3]" do
132
- [1,[2],3].flatten_with_boundaries.should eql([1,"__a0",2,"__a0",3])
133
- end
134
-
135
- it 'should flatten [1,[2],3,4,[["x"]]]' do
136
- [1,[2],3,4,[["x"]]].flatten_with_boundaries.should eql([1,"__a0",2,"__a0",3,4,"__a1",["x"],"__a1"])
137
- end
138
-
139
- it "should handle [1,2]" do
140
- [1,2].flatten_with_boundaries.should eql([1,2])
141
- end
142
- end
143
-
144
- describe "#convert_boundaries" do
145
- it 'should convert ["__a0",1,"__a0"]' do
146
- ["__a0",1,"__a0"].convert_boundaries.should eql([[1]])
147
- end
148
-
149
- it 'should convert ["__a0",1,"__a0",2,"__a1",3,"__a1"]' do
150
- ["__a0",1,"__a0",2,"__a1",3,"__a1"].convert_boundaries.should eql([[1],2,[3]])
151
- end
152
-
153
- it 'should convert [1,"__a0",2,"__a0",3]' do
154
- [1,"__a0",2,"__a0",3].convert_boundaries.should eql([1,[2],3])
155
- end
156
-
157
- it 'should convert [1,"__a0",2,"__a0",3,4,"__a1",["x"],"__a1"]' do
158
- [1,"__a0",2,"__a0",3,4,"__a1",["x"],"__a1"].convert_boundaries.should eql([1,[2],3,4,[["x"]]])
159
- end
160
-
161
- it "should convert [1,2]" do
162
- [1,2].convert_boundaries.should eql([1,2])
163
- end
164
- end
165
-
166
- describe "#sort_by_map" do
167
- it "should sort the list of hashes by given order of attribute values" do
168
- list = [{:n => "two"}, {:n => "one"}, {:n => "three"}]
169
- map = ["one", "two", "three"]
170
- list.sort_by_map(map, :n).should eql([{:n => "one"}, {:n => "two"}, {:n => "three"}])
171
- end
172
-
173
- it "should sort the list of objects by given order of attribute values" do
174
- list = []
175
- list << OpenStruct.new(:n => "two")
176
- list << OpenStruct.new(:n => "one")
177
- list << OpenStruct.new(:n => "three")
178
- map = ["one", "two", "three"]
179
- ordered = list.sort_by_map(map, :n)
180
- ordered[0].n.should eql("one")
181
- ordered[1].n.should eql("two")
182
- ordered[2].n.should eql("three")
183
- end
184
-
185
- it "should sort the list of values by given order" do
186
- list = ["two", "one", "three"]
187
- map = ["one", "two", "three"]
188
- list.sort_by_map(map).should eql(["one", "two", "three"])
189
- end
190
- end
191
-
192
- describe "#delete_rec" do
193
- it "should remove a given item from self" do
194
- list = ["one", "two", ["one"]]
195
- list.delete_rec("one").should eql("one")
196
- list.should eql(["two", []])
197
- end
198
- end
199
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "FileUtils" do
4
- describe ".remove_dir_r" do
5
- let(:tmpdir) { File.join(File.dirname(__FILE__), "..", "..", "tmp") }
6
- before { FileUtils.mkdir_p("#{tmpdir}/some/test/dir")}
7
-
8
- it "should remove the current directory and all its parents up to three levels deep" do
9
- FileUtils.remove_dir_r("#{tmpdir}/some/test/dir")
10
- File.exist?("#{tmpdir}/some").should be_false
11
- File.exist?(tmpdir).should be_true
12
- end
13
-
14
- it "should not remove parent directory unless it is emtpy" do
15
- FileUtils.touch("#{tmpdir}/some/textfile.txt")
16
- FileUtils.remove_dir_r("#{tmpdir}/some/test/dir")
17
- File.exist?("#{tmpdir}/some").should be_true
18
- end
19
-
20
- it "should remove all child directories recursively" do
21
- FileUtils.mkdir_p("#{tmpdir}/some/test/dir/with/some/children")
22
- FileUtils.remove_dir_r("#{tmpdir}/some/test/dir")
23
- File.exist?("#{tmpdir}/some").should be_false
24
- end
25
-
26
- it "should remove parent directories up to provided depth only" do
27
- FileUtils.remove_dir_r("#{tmpdir}/some/test/dir", 2)
28
- File.exist?("#{tmpdir}/some").should be_true
29
- end
30
-
31
- after { FileUtils.remove_dir(tmpdir)}
32
- end
33
- end
@@ -1,115 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "Hash" do
4
- describe "#to_query" do
5
- it "should join params with '&'" do
6
- hash = {:some => "value", :another => "thing"}
7
- parts = hash.to_query.split("&")
8
- parts.sort.should eql(['another=thing', 'some=value'])
9
- end
10
-
11
- it "should return items as urlencoded string" do
12
- hash = {:another => "speciál"}
13
- hash.to_query.should eql("another=speci%C3%A1l")
14
- end
15
-
16
- it "should support multi-level hashes" do
17
- hash = {:some => {:nested => :thing}}
18
- hash.to_query.should eql("some%5Bnested%5D=thing")
19
- end
20
-
21
- it "should support a namespace" do
22
- hash = {:nested => :thing}
23
- hash.to_query(:some).should eql("some%5Bnested%5D=thing")
24
- end
25
- end
26
-
27
- describe "#only" do
28
- it "should return a copy of self but including only the given keys" do
29
- hash = {:name => "rodrigo", :age => 21}
30
- hash.only(:name).should eql({:name => "rodrigo"})
31
- end
32
-
33
- it "should work with array as parameter" do
34
- hash = {:name => "rodrigo", :age => 21}
35
- hash.only([:name, :something]).should eql({:name => "rodrigo"})
36
- end
37
-
38
- it "should work for nested hash" do
39
- hash = {:name => "rodrigo", :girlfriends => ["Anna", "Maria"]}
40
- hash.only(:name, :girlfriends).should eql({:name => "rodrigo", :girlfriends => ["Anna", "Maria"]})
41
- end
42
- end
43
-
44
- describe "#except" do
45
- it "should return a copy of self but including only the given keys" do
46
- hash = {:name => "rodrigo", :age => 21}
47
- hash.except(:name).should eql({:age => 21})
48
- end
49
-
50
- it "should work with array as parameter" do
51
- hash = {:name => "rodrigo", :age => 21}
52
- hash.except([:name, :something]).should eql({:age => 21})
53
- end
54
-
55
- it "should work for nested hash" do
56
- hash = {:name => "rodrigo", :girlfriends => ["Anna", "Maria"]}
57
- hash.except(:name).should eql({:girlfriends => ["Anna", "Maria"]})
58
- end
59
- end
60
-
61
- describe "#to_a_rec" do
62
- it "should return an array" do
63
- hash = {:some => "thing"}
64
- hash.to_a_rec.should eql([[:some, "thing"]])
65
- end
66
-
67
- it "should return an array from nested hashes" do
68
- hash = {:some => {:nested => {:is => ["really", "groovy"]}}}
69
- hash.to_a_rec.should eql([[:some, [[:nested, [[:is, ["really", "groovy"]]]]]]])
70
- end
71
-
72
- it "should return an array from hashes within arrays" do
73
- hash = {:some => [:nested, {:is => ["really", "groovy"]}]}
74
- hash.to_a_rec.should eql([[:some, [:nested, [[:is, ["really", "groovy"]]]]]])
75
- end
76
- end
77
-
78
- describe "#keys?" do
79
- let(:hash) { {:some => "say", :any => "thing"} }
80
-
81
- it "should return true if all keys are given in hash" do
82
- hash.keys?(:some, :any).should be_true
83
- end
84
-
85
- it "should return true if all keys are given in larger hash" do
86
- hash.keys?(:any).should be_true
87
- end
88
-
89
- it "should return false if any of the given key misses in hash" do
90
- hash.keys?(:any, :thing).should be_false
91
- end
92
- end
93
-
94
- describe ".build" do
95
- it "should return a hash" do
96
- Hash.build.should eql(Hash.new)
97
- end
98
-
99
- it "should accept a hash" do
100
- Hash.build({:do => :it}).should eql({:do => :it})
101
- end
102
-
103
- it "should accept an array" do
104
- Hash.build([:do, :it]).should eql({:do => :it})
105
- end
106
-
107
- it "should accept an array and flatten it once" do
108
- Hash.build([:do, [:it]]).should eql({:do => :it})
109
- end
110
-
111
- it "should not accept a multi-level array" do
112
- expect {Hash.build([:do, [:it, [:now]]])}.to raise_error(ArgumentError, "odd number of arguments for Hash")
113
- end
114
- end
115
- end
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "Object" do
4
- describe "#try!" do
5
- let(:dog) do
6
- Struct.new("Dog", :out) unless defined?(Struct::Dog)
7
- Struct::Dog.new(true)
8
- end
9
-
10
- it "should return defined method" do
11
- dog.try!(:out).should be_true
12
- end
13
-
14
- it "should return nil when calling undefined method" do
15
- dog.try!(:food).should be_nil
16
- end
17
-
18
- it "should re-raise exceptions" do
19
- stub(dog).bark { raise("wuff") }
20
- expect {dog.try!(:bark)}.to raise_exception("wuff")
21
- end
22
- end
23
- end
@@ -1,144 +0,0 @@
1
- # encoding: utf-8
2
- require "spec_helper"
3
-
4
- describe "String" do
5
- describe "::LATIN_MAP" do
6
- it "should contain a Hash map" do
7
- String::LATIN_MAP.should be_a(Hash)
8
- end
9
- end
10
-
11
- describe "#latinize" do
12
- it "should convert diacritics" do
13
- "ÀÁÂÃÄÅ Ç Ð ÈÉÊË ÌÍÎÏ Ñ ÒÓÔÕÖØ ÙÚÛÜ Ý àáâãäå ç èéêë ìíîï ñ òóôõöø ùúûü ý".latinize.should
14
- eql("AAAAAEA C D EEEE IIII N OOOOOEO UUUUE Y aaaaaea c eeee iiii n oooooeo uuuue y")
15
- end
16
-
17
- it "should convert ligatures" do
18
- "Æ".latinize.should eql("AE")
19
- "ÆǼ æǽ Œ œ".latinize.should eql("AEAE aeae OE oe")
20
- end
21
-
22
- it "should keep some regular chars" do
23
- ".,|?!:;\"'=+-_".latinize.should eql(".,|?!:;\"'=+-_")
24
- end
25
-
26
- it "should replace exotic chars by whitespace" do
27
- "~÷≥≤˛`ˀð".latinize.should eql(" ")
28
- end
29
-
30
- it "should normalize white space" do
31
- "Hola señor, ¿cómo está?".latinize.should eql("Hola senor, como esta?")
32
- end
33
- end
34
-
35
- describe "#permalink" do
36
- it "should call #latinize" do
37
- string = "hey"
38
- mock(string).latinize { string }
39
- string.permalink.should eql(string)
40
- end
41
-
42
- it "should return lower chars only" do
43
- "HeLlo".permalink.should eql("hello")
44
- end
45
-
46
- it "should turn whitespace into dashes" do
47
- "hey joe".permalink.should eql("hey-joe")
48
- end
49
-
50
- it "should turn special chars into dashes" do
51
- "hi~there".permalink.should eql("hi-there")
52
- end
53
-
54
- it "should not begin with dashes" do
55
- ">duh".permalink.should eql("duh")
56
- end
57
-
58
- it "should not end with dashes" do
59
- "hi!".permalink.should eql("hi")
60
- end
61
-
62
- it "should convert multiple adjacent special chars into a single dash" do
63
- "Hola señor, ¿cómo está?".permalink.should eql("hola-senor-como-esta")
64
- end
65
- end
66
-
67
- describe "#%" do
68
- it "should allow reqular printf behaviour" do
69
- string = "%s, %s" % ["Masao", "Mutoh"]
70
- string.should eql("Masao, Mutoh")
71
- end
72
-
73
- it "should accept named arguments" do
74
- string = "%{firstname}, %{familyname}" % {:firstname => "Masao", :familyname => "Mutoh"}
75
- string.should eql("Masao, Mutoh")
76
- end
77
- end
78
-
79
- describe "#snip" do
80
- it "should truncate string to given length while preserving words" do
81
- "O Brother, Where Art Thou?".snip(13).should eql("O Brother, Where…")
82
- end
83
-
84
- it "should return whole string if it fits in given length" do
85
- "O Brother, Where Art Thou?".snip(100).should eql("O Brother, Where Art Thou?")
86
- end
87
-
88
- it "should return whole string if it equals length" do
89
- "O Brother, Where Art Thou?".snip(26).should eql("O Brother, Where Art Thou?")
90
- end
91
-
92
- it "should strip white space between words" do
93
- "O Brother, Where Art Thou?".snip(11).should eql("O Brother,…")
94
- end
95
-
96
- it "should strip trailing white space" do
97
- "O Brother, Where Art Thou? ".snip(26).should eql("O Brother, Where Art Thou?")
98
- end
99
-
100
- it "should strip leading white space" do
101
- " O Brother, Where Art Thou?".snip(26).should eql("O Brother, Where Art Thou?")
102
- end
103
-
104
- it "should handle content with backets" do
105
- "O Brother (Or Sister), Where Art Thou?".snip(20).should eql("O Brother (Or Sister…")
106
- end
107
- end
108
-
109
- describe "#strip_tags" do
110
- it "should remove all tags from string" do
111
- "<p>Think<br />different</p>".strip_tags.should eql("Thinkdifferent")
112
- end
113
-
114
- it "should even remove chars that aren't tags but look like ones" do
115
- "small < large > small".strip_tags.should eql("small small")
116
- end
117
- end
118
-
119
- describe "#strip_tags!" do
120
- it "should strip tags on self" do
121
- string = "<p>Think<br />different</p>"
122
- string.strip_tags!
123
- string.should eql("Thinkdifferent")
124
- end
125
- end
126
-
127
- describe "#with_params" do
128
- it "should return the current string unless params are given" do
129
- "http://vidibus.org".with_params.should eql("http://vidibus.org")
130
- end
131
-
132
- it "should return the current string if an empty hash is given" do
133
- "http://vidibus.org".with_params({}).should eql("http://vidibus.org")
134
- end
135
-
136
- it "should return the current string with params as query" do
137
- "http://vidibus.org".with_params(:awesome => "yes").should eql("http://vidibus.org?awesome=yes")
138
- end
139
-
140
- it "should append params to existing query" do
141
- "http://vidibus.org?opensource=true".with_params(:awesome => "yes").should eql("http://vidibus.org?opensource=true&awesome=yes")
142
- end
143
- end
144
- end
@@ -1,77 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{vidibus-core_extensions}
8
- s.version = "0.3.17"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Andre Pankratz"]
12
- s.date = %q{2011-02-25}
13
- s.description = %q{Provides some extensions to the ruby core.}
14
- s.email = %q{andre@vidibus.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".bundle/config",
21
- ".document",
22
- ".rspec",
23
- "Gemfile",
24
- "Gemfile.lock",
25
- "LICENSE",
26
- "README.rdoc",
27
- "Rakefile",
28
- "VERSION",
29
- "lib/vidibus-core_extensions.rb",
30
- "lib/vidibus/core_extensions.rb",
31
- "lib/vidibus/core_extensions/array.rb",
32
- "lib/vidibus/core_extensions/file_utils.rb",
33
- "lib/vidibus/core_extensions/hash.rb",
34
- "lib/vidibus/core_extensions/object.rb",
35
- "lib/vidibus/core_extensions/string.rb",
36
- "spec/spec_helper.rb",
37
- "spec/vidibus/core_extensions/array_spec.rb",
38
- "spec/vidibus/core_extensions/file_utils_spec.rb",
39
- "spec/vidibus/core_extensions/hash_spec.rb",
40
- "spec/vidibus/core_extensions/object_spec.rb",
41
- "spec/vidibus/core_extensions/string_spec.rb",
42
- "vidibus-core_extensions.gemspec"
43
- ]
44
- s.homepage = %q{http://github.com/vidibus/vidibus-core_extensions}
45
- s.require_paths = ["lib"]
46
- s.rubyforge_project = %q{vidibus-core_extensions}
47
- s.rubygems_version = %q{1.3.7}
48
- s.summary = %q{Extends the ruby core.}
49
- s.test_files = [
50
- "spec/spec_helper.rb",
51
- "spec/vidibus/core_extensions/array_spec.rb",
52
- "spec/vidibus/core_extensions/file_utils_spec.rb",
53
- "spec/vidibus/core_extensions/hash_spec.rb",
54
- "spec/vidibus/core_extensions/object_spec.rb",
55
- "spec/vidibus/core_extensions/string_spec.rb"
56
- ]
57
-
58
- if s.respond_to? :specification_version then
59
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
60
- s.specification_version = 3
61
-
62
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
- s.add_development_dependency(%q<rspec>, [">= 0"])
64
- s.add_development_dependency(%q<rr>, [">= 0"])
65
- s.add_development_dependency(%q<relevance-rcov>, [">= 0"])
66
- else
67
- s.add_dependency(%q<rspec>, [">= 0"])
68
- s.add_dependency(%q<rr>, [">= 0"])
69
- s.add_dependency(%q<relevance-rcov>, [">= 0"])
70
- end
71
- else
72
- s.add_dependency(%q<rspec>, [">= 0"])
73
- s.add_dependency(%q<rr>, [">= 0"])
74
- s.add_dependency(%q<relevance-rcov>, [">= 0"])
75
- end
76
- end
77
-