underscore_extensions 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm 1.8.7@underscore_extensions --create
1
+ rvm 1.9.3-perf@underscore_extensions --create
data/.travis.yml CHANGED
@@ -2,6 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 1.8.7
4
4
  - 1.9.2
5
+ - 1.9.3
5
6
  before_script:
6
7
  - "export DISPLAY=:99.0"
7
8
  - "sh -e /etc/init.d/xvfb start"
@@ -3,6 +3,16 @@
3
3
  _.mixin(_.str.exports());
4
4
  }
5
5
 
6
+ function namespace(obj, ns) {
7
+ return _(ns).inject(function(base, n) {
8
+ var _baseN = _(base[n]);
9
+ if (_baseN.isUndefined() || _baseN.isNull()) {
10
+ base[n] = {};
11
+ }
12
+ return base[n];
13
+ }, obj);
14
+ }
15
+
6
16
  _.mixin({
7
17
  classify: function(str) {
8
18
  var s = _(str).trim().replace(/(\-|_|\s)+(.)?/g, function(match, separator, chr) {
@@ -25,12 +35,15 @@
25
35
  return result;
26
36
  },
27
37
  namespace: function(obj, ns) {
28
- return _(ns.split('.')).inject(function(base, n) {
29
- if (typeof(base[n]) === 'undefined') {
30
- base[n] = {};
38
+ if (arguments.length === 2) {
39
+ if (_(ns).isArray()) {
40
+ return namespace(obj, ns);
41
+ } else {
42
+ return namespace(obj, ns.split('.'));
31
43
  }
32
- return base[n];
33
- }, obj);
44
+ } else {
45
+ return namespace(obj, Array.prototype.slice.call(arguments, 1));
46
+ }
34
47
  },
35
48
  only: function(obj) {
36
49
  function only() {
@@ -1,5 +1,5 @@
1
1
  module UnderscoreExtensions
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  UNDERSCORE_VERSION = '1.3.1'
4
4
  UNDERSCORE_STRING_VERSION = '2.0.0'
5
5
  end
@@ -18,19 +18,55 @@ describe('_', function() {
18
18
  });
19
19
 
20
20
  describe('#namespace', function() {
21
- it('should create the namespace', function() {
22
- var result = {};
23
- baz = _(result).namespace('foo.bar.baz');
24
- baz.property = 'property';
25
- expect(result.foo.bar.baz).toBeDefined();
26
- expect(result.foo.bar.baz.property).toBeDefined();
21
+ describe('when the namespace is passed as a single parameter with period separator', function() {
22
+ it('should create the namespace', function() {
23
+ var result = {};
24
+ baz = _(result).namespace('foo.bar.baz');
25
+ baz.property = 'property';
26
+ expect(result.foo.bar.baz).toBeDefined();
27
+ expect(result.foo.bar.baz.property).toBeDefined();
28
+ });
29
+
30
+ it('should not overwrite existing namespaces', function() {
31
+ var result = { foo: {a: 'b'}};
32
+ baz = _(result).namespace('foo.bar.baz');
33
+ expect(result.foo.bar.baz).toBeDefined();
34
+ expect(result.foo.a).toEqual('b');
35
+ });
27
36
  });
28
37
 
29
- it('should not overwrite existing namespaces', function() {
30
- var result = { foo: {a: 'b'}};
31
- baz = _(result).namespace('foo.bar.baz');
32
- expect(result.foo.bar.baz).toBeDefined();
33
- expect(result.foo.a).toEqual('b');
38
+ describe('when the namespace is passed as multiple parameters', function() {
39
+ it('should create the namespace', function() {
40
+ var result = {};
41
+ baz = _(result).namespace('foo', 'bar', 'baz');
42
+ baz.property = 'property';
43
+ expect(result.foo.bar.baz).toBeDefined();
44
+ expect(result.foo.bar.baz.property).toBeDefined();
45
+ });
46
+
47
+ it('should not overwrite existing namespaces', function() {
48
+ var result = { foo: {a: 'b'}};
49
+ baz = _(result).namespace('foo', 'bar', 'baz');
50
+ expect(result.foo.bar.baz).toBeDefined();
51
+ expect(result.foo.a).toEqual('b');
52
+ });
53
+ });
54
+
55
+ describe('when the namespace is passed as an array', function() {
56
+ it('should create the namespace', function() {
57
+ var result = {};
58
+ baz = _(result).namespace(['foo', 'bar', 'baz']);
59
+ baz.property = 'property';
60
+ expect(result.foo.bar.baz).toBeDefined();
61
+ expect(result.foo.bar.baz.property).toBeDefined();
62
+ });
63
+
64
+ it('should not overwrite existing namespaces', function() {
65
+ var result = { foo: {a: 'b'}};
66
+ baz = _(result).namespace(['foo', 'bar', 'baz']);
67
+ expect(result.foo.bar.baz).toBeDefined();
68
+ expect(result.foo.a).toEqual('b');
69
+ });
34
70
  });
35
71
  });
36
72
 
metadata CHANGED
@@ -1,119 +1,121 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: underscore_extensions
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Ryan Dy
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-29 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-04-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: fuubar
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: jasmine
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
39
25
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: jasmine
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
47
38
  type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: jshint_on_rails
51
39
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
53
41
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: jshint_on_rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
61
54
  type: :development
62
- version_requirements: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: thin
65
55
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
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
63
+ name: thin
64
+ requirement: !ruby/object:Gem::Requirement
67
65
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
75
70
  type: :development
76
- version_requirements: *id004
77
- - !ruby/object:Gem::Dependency
78
- name: rails
79
71
  prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
81
73
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 5
86
- segments:
87
- - 3
88
- - 1
89
- version: "3.1"
90
- type: :runtime
91
- version_requirements: *id005
92
- - !ruby/object:Gem::Dependency
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
93
79
  name: rails
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '3.1'
86
+ type: :runtime
94
87
  prerelease: false
95
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
96
89
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 5
101
- segments:
102
- - 3
103
- - 1
104
- version: "3.1"
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '3.1'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rails
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '3.1'
105
102
  type: :runtime
106
- version_requirements: *id006
107
- description: Adds extensions to the underscore javascript library. It adds the javascript as a rails engine to be included in to a Rails 3+ project. To use it make sure require underscore, underscore.string and underscore.extensions.
108
- email:
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '3.1'
110
+ description: Adds extensions to the underscore javascript library. It adds the javascript
111
+ as a rails engine to be included in to a Rails 3+ project. To use it make sure require
112
+ underscore, underscore.string and underscore.extensions.
113
+ email:
109
114
  - ryan.dy@gmail.com
110
115
  executables: []
111
-
112
116
  extensions: []
113
-
114
117
  extra_rdoc_files: []
115
-
116
- files:
118
+ files:
117
119
  - .gitignore
118
120
  - .rvmrc
119
121
  - .travis.yml
@@ -130,41 +132,31 @@ files:
130
132
  - underscore_extensions.gemspec
131
133
  - vendor/assets/javascripts/underscore.js
132
134
  - vendor/assets/javascripts/underscore.string.js
133
- has_rdoc: true
134
135
  homepage: http://github.com/rdy/underscore_extensions
135
136
  licenses: []
136
-
137
137
  post_install_message:
138
138
  rdoc_options: []
139
-
140
- require_paths:
139
+ require_paths:
141
140
  - lib
142
- required_ruby_version: !ruby/object:Gem::Requirement
141
+ required_ruby_version: !ruby/object:Gem::Requirement
143
142
  none: false
144
- requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- hash: 3
148
- segments:
149
- - 0
150
- version: "0"
151
- required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ! '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
148
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 3
157
- segments:
158
- - 0
159
- version: "0"
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
160
153
  requirements: []
161
-
162
154
  rubyforge_project: underscore_extensions
163
- rubygems_version: 1.6.2
155
+ rubygems_version: 1.8.19
164
156
  signing_key:
165
157
  specification_version: 3
166
158
  summary: Extensions to underscore javascript library as a rails engine
167
- test_files:
159
+ test_files:
168
160
  - spec/javascripts/support/jasmine.yml
169
161
  - spec/javascripts/support/spec_helper.js
170
162
  - spec/javascripts/underscore.extensions_spec.js