underscore_extensions 0.2.2 → 0.2.3

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/Rakefile CHANGED
@@ -14,6 +14,6 @@ rescue LoadError
14
14
  end
15
15
  end
16
16
 
17
- JSLint.config_path = 'config/jshint.yml'
17
+ JSLint.config_path = 'config/jslint.yml'
18
18
 
19
19
  task :default => [:jslint, :'jasmine:ci']
File without changes
@@ -3,6 +3,18 @@
3
3
  _.mixin(_.str.exports());
4
4
  }
5
5
 
6
+ var objectProto = Object.prototype, hasProperty = objectProto.hasOwnProperty;
7
+ function has(obj, key) {
8
+ var result, argLength = arguments.length;
9
+ if (argLength === 1) {
10
+ return true;
11
+ }
12
+ else if (argLength === 2 && (result = obj && hasProperty.call(obj, key))) {
13
+ return result;
14
+ }
15
+ return (result = obj && hasProperty.call(obj, key)) && has.apply(this, [obj[key]].concat(_(arguments).rest(2)));
16
+ }
17
+
6
18
  function namespace(obj, ns) {
7
19
  return _(ns).inject(function(base, n) {
8
20
  var _baseN = _(base[n]);
@@ -14,6 +26,14 @@
14
26
  }
15
27
 
16
28
  _.mixin({
29
+ has: function(obj, key) {
30
+ var isArray = _(key).isArray();
31
+ if (arguments.length === 2 && !isArray) {
32
+ return hasProperty.call(obj, key);
33
+ } else {
34
+ return has.apply(this, isArray && [obj].concat(key) || arguments);
35
+ }
36
+ },
17
37
  namespace: function(obj, ns) {
18
38
  if (arguments.length === 2) {
19
39
  if (_(ns).isArray()) {
@@ -1,5 +1,5 @@
1
1
  module UnderscoreExtensions
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  UNDERSCORE_VERSION = '1.4.3'
4
4
  UNDERSCORE_STRING_VERSION = '2.3.0'
5
5
  end
@@ -52,6 +52,22 @@ describe('_', function() {
52
52
  });
53
53
  });
54
54
 
55
+ describe('#has', function() {
56
+ it('should check each property on the object', function() {
57
+ var obj = {foo: {bar: {baz: true}}};
58
+ expect(_(obj).has('foo', 'fizz')).toBe(false);
59
+ expect(_(obj).has('foo', 'bar', 'baz')).toBe(true);
60
+ expect(_(obj).has('foo', 'bar', 'baz', 'buzz')).toBe(false);
61
+ });
62
+
63
+ it('should check array arguments on the object', function() {
64
+ var obj = {foo: {bar: {baz: true}}};
65
+ expect(_(obj).has(['foo', 'fizz'])).toBe(false);
66
+ expect(_(obj).has(['foo', 'bar', 'baz'])).toBe(true);
67
+ expect(_(obj).has(['foo', 'bar', 'baz', 'buzz'])).toBe(false);
68
+ });
69
+ });
70
+
55
71
  describe('#pluralize', function() {
56
72
  it("should pluralize a model name", function() {
57
73
  expect(_('point').pluralize()).toEqual('points');
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: underscore_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
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-01-12 00:00:00.000000000 Z
12
+ date: 2013-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fuubar
@@ -106,7 +106,7 @@ files:
106
106
  - Gemfile
107
107
  - README.markdown
108
108
  - Rakefile
109
- - config/jshint.yml
109
+ - config/jslint.yml
110
110
  - lib/assets/javascripts/underscore.extensions.js
111
111
  - lib/underscore_extensions.rb
112
112
  - lib/underscore_extensions/version.rb
@@ -131,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
131
  version: '0'
132
132
  segments:
133
133
  - 0
134
- hash: 1602788331734609951
134
+ hash: -1223180764248458327
135
135
  required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  none: false
137
137
  requirements:
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  segments:
142
142
  - 0
143
- hash: 1602788331734609951
143
+ hash: -1223180764248458327
144
144
  requirements: []
145
145
  rubyforge_project: underscore_extensions
146
146
  rubygems_version: 1.8.24