underscore_extensions 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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