role-rails 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module RoleRails
2
- VERSION = '1.2.1'
2
+ VERSION = '1.3.0'
3
3
  end
@@ -1,19 +1,68 @@
1
1
  !function($){
2
2
  function rewriteSelector(context, name, argPos){
3
3
  var original = context[name];
4
-
4
+
5
5
  if (!original) return;
6
-
6
+
7
7
  context[name] = function(){
8
- arguments[argPos] = arguments[argPos].replace(/@([\w\u00c0-\uFFFF\-]+)/g, '[role~="$1"]')
8
+ arguments[argPos] = arguments[argPos].replace(/@([\w\u00c0-\uFFFF\-]+)/g, '[role~="$1"]');
9
9
  return original.apply(context, arguments);
10
10
  };
11
-
11
+
12
12
  $.extend(context[name], original);
13
13
  }
14
-
14
+
15
15
  rewriteSelector($, 'find', 0);
16
16
  rewriteSelector($, 'multiFilter', 0);
17
17
  rewriteSelector($.find, 'matchesSelector', 1);
18
18
  rewriteSelector($.find, 'matches', 0);
19
+
20
+ function parse(roleString, without){
21
+ var role, result = [], roles = $.trim(roleString).split(/\s+/);
22
+
23
+ for(var i=0; i<roles.length; i++) {
24
+ role = roles[i];
25
+ if (!~$.inArray(role, result) && (!without || !~$.inArray(role, without)))
26
+ result.push(role);
27
+ }
28
+
29
+ return result;
30
+ };
31
+
32
+ $.extend($.fn, {
33
+ roles: function(){ return parse(this.attr('role')); },
34
+
35
+ hasRole: function(roleName){
36
+ var roles = parse(roleName);
37
+ for(var i=0;i<roles.length;i++)
38
+ if (!this.is('@'+roles[i])) return false;
39
+
40
+ return true;
41
+ },
42
+
43
+ addRole: function(roleName){
44
+ if (this.hasRole(roleName)) return this;
45
+
46
+ return this.each(function(_, element){
47
+ var $el = $(element);
48
+ $el.attr('role', parse($el.attr('role') + ' ' + roleName).join(' '));
49
+ });
50
+ },
51
+
52
+ removeRole: function(roleName){
53
+ if (!this.hasRole(roleName)) return this;
54
+
55
+ return this.each(function(_, element){
56
+ var $el = $(element);
57
+ $el.attr('role', parse($el.attr('role'), parse(roleName)).join(' '));
58
+ });
59
+ },
60
+
61
+ toggleRole: function(roleName){
62
+ var roles = parse(roleName);
63
+ for(var i=0;i<roles.length;i++)
64
+ this[this.hasRole(roles[i]) ? 'removeRole' : 'addRole'].call(this, roles[i]);
65
+ return this;
66
+ }
67
+ });
19
68
  }(jQuery)
@@ -1 +1 @@
1
- !function(a){function b(b,c,d){var e=b[c];if(!e)return;b[c]=function(){return arguments[d]=arguments[d].replace(/@([\w\u00c0-\uFFFF\-]+)/g,'[role~="$1"]'),e.apply(b,arguments)},a.extend(b[c],e)}b(a,"find",0),b(a,"multiFilter",0),b(a.find,"matchesSelector",1),b(a.find,"matches",0)}(jQuery);
1
+ !function(a){function b(b,c,d){var e=b[c];if(!e)return;b[c]=function(){return arguments[d]=arguments[d].replace(/@([\w\u00c0-\uFFFF\-]+)/g,'[role~="$1"]'),e.apply(b,arguments)},a.extend(b[c],e)}function c(b,c){var d,e=[],f=a.trim(b).split(/\s+/);for(var g=0;g<f.length;g++)d=f[g],!~a.inArray(d,e)&&(!c||!~a.inArray(d,c))&&e.push(d);return e}b(a,"find",0),b(a,"multiFilter",0),b(a.find,"matchesSelector",1),b(a.find,"matches",0),a.extend(a.fn,{roles:function(){return c(this.attr("role"))},hasRole:function(a){var b=c(a);for(var d=0;d<b.length;d++)if(!this.is("@"+b[d]))return!1;return!0},addRole:function(b){return this.hasRole(b)?this:this.each(function(d,e){var f=a(e);f.attr("role",c(f.attr("role")+" "+b).join(" "))})},removeRole:function(b){return this.hasRole(b)?this.each(function(d,e){var f=a(e);f.attr("role",c(f.attr("role"),c(b)).join(" "))}):this},toggleRole:function(a){var b=c(a);for(var d=0;d<b.length;d++)this[this.hasRole(b[d])?"removeRole":"addRole"].call(this,b[d]);return this}})}(jQuery);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: role-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -174,21 +174,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
174
  - - ! '>='
175
175
  - !ruby/object:Gem::Version
176
176
  version: '0'
177
- segments:
178
- - 0
179
- hash: -3661075772796767822
180
177
  required_rubygems_version: !ruby/object:Gem::Requirement
181
178
  none: false
182
179
  requirements:
183
180
  - - ! '>='
184
181
  - !ruby/object:Gem::Version
185
182
  version: '0'
186
- segments:
187
- - 0
188
- hash: -3661075772796767822
189
183
  requirements: []
190
184
  rubyforge_project: role-rails
191
- rubygems_version: 1.8.22
185
+ rubygems_version: 1.8.24
192
186
  signing_key:
193
187
  specification_version: 3
194
188
  summary: jQuery plugin to provide easy way to handle DOM elements by role attribute