riotjs-rails 0.9.8 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb7e2baf9a0ae4cadabc315ccf3489e5b9162da1
4
- data.tar.gz: 9df2e6f95dc4accee2853cd9e6ce33637574d1d8
3
+ metadata.gz: f222c4cd22794990b0681aa182d3af6f72cd1f5f
4
+ data.tar.gz: 915c88f6e99f63079c46144eeec23181b8494bbc
5
5
  SHA512:
6
- metadata.gz: f5f739ef1e692afc263672db881c3ba148d76c82d53df2faa99bddc177c36df6c36f6d9bb4624c9bed105f2ac50e3d81eeda72c6ab48f35712147ef7e29a0547
7
- data.tar.gz: 81c8575331611137ff2592866c9a9ab285c5a8b304e6d8a80e40a2dd7655299c5b2ad8ecc08c736fa9a01001740971426b73cd792286accf199b7d41094709c6
6
+ metadata.gz: 6b242901d2737c0f5a26bf6d3583eabe7ecc166ac2d8573b836eff2465fa702b920dd53863dd0c08e5132e4a229935ab56ff400484b32d4132bd9a7380a44a45
7
+ data.tar.gz: 7b11dbaedd9be16fa687695ff555e68b8bb061025af6f88101699adaaa95155bb911405c93165fb2e3ef9b47cde4216f64d1d7170330f4a2b99cc35796e755d1
@@ -1,5 +1,5 @@
1
1
  module Riot
2
2
  module Rails
3
- VERSION = "0.9.8"
3
+ VERSION = "1.0.4"
4
4
  end
5
5
  end
@@ -1,12 +1,12 @@
1
- /* Riot 0.9.8, @license MIT, (c) 2014 Moot Inc + contributors */
2
- (function($) { "use strict";
1
+ /* Riot 1.0.4, @license MIT, (c) 2014 Muut Inc + contributors */
2
+ (function(riot) { "use strict";
3
3
 
4
- $.observable = function(el) {
4
+ riot.observable = function(el) {
5
5
  var callbacks = {}, slice = [].slice;
6
6
 
7
7
  el.on = function(events, fn) {
8
8
  if (typeof fn === "function") {
9
- events.replace(/[^\s]+/g, function(name, pos) {
9
+ events.replace(/\S+/g, function(name, pos) {
10
10
  (callbacks[name] = callbacks[name] || []).push(fn);
11
11
  fn.typed = pos > 0;
12
12
  });
@@ -14,11 +14,18 @@ $.observable = function(el) {
14
14
  return el;
15
15
  };
16
16
 
17
- el.off = function(events) {
18
- events.replace(/[^\s]+/g, function(name) {
19
- callbacks[name] = [];
20
- });
21
- if (events == "*") callbacks = {};
17
+ el.off = function(events, fn) {
18
+ if (events === "*") callbacks = {};
19
+ else if (fn) {
20
+ var arr = callbacks[events];
21
+ for (var i = 0, cb; (cb = arr && arr[i]); ++i) {
22
+ if (cb === fn) { arr.splice(i, 1); i--; }
23
+ }
24
+ } else {
25
+ events.replace(/\S+/g, function(name) {
26
+ callbacks[name] = [];
27
+ });
28
+ }
22
29
  return el;
23
30
  };
24
31
 
@@ -32,11 +39,11 @@ $.observable = function(el) {
32
39
  var args = slice.call(arguments, 1),
33
40
  fns = callbacks[name] || [];
34
41
 
35
- for (var i = 0, fn; fn = fns[i]; ++i) {
36
- if (!((fn.one && fn.done) || fn.busy)) {
42
+ for (var i = 0, fn; (fn = fns[i]); ++i) {
43
+ if (!fn.busy) {
37
44
  fn.busy = true;
38
45
  fn.apply(el, fn.typed ? [name].concat(args) : args);
39
- fn.done = true;
46
+ if (fn.one) { fns.splice(i, 1); i--; }
40
47
  fn.busy = false;
41
48
  }
42
49
  }
@@ -47,59 +54,76 @@ $.observable = function(el) {
47
54
  return el;
48
55
 
49
56
  };
57
+ var FN = {}, // Precompiled templates (JavaScript functions)
58
+ template_escape = {"\\": "\\\\", "\n": "\\n", "\r": "\\r", "'": "\\'"},
59
+ render_escape = {'&': '&amp;', '"': '&quot;', '<': '&lt;', '>': '&gt;'};
50
60
 
51
- // Precompiled templates (JavaScript functions)
52
- var FN = {};
53
-
54
- // Render a template with data
55
- $.render = function(template, data) {
56
- if(!template) return '';
61
+ function default_escape_fn(str, key) {
62
+ return str == null ? '' : (str+'').replace(/[&\"<>]/g, function(char) {
63
+ return render_escape[char];
64
+ });
65
+ }
57
66
 
58
- FN[template] = FN[template] || new Function("_",
59
- "return '" + template
60
- .replace(/\n/g, "\\n")
61
- .replace(/\r/g, "\\r")
62
- .replace(/'/g, "\\'")
63
- .replace(/\{\s*(\w+)\s*\}/g, "'+(_.$1?(_.$1+'').replace(/&/g,'&amp;').replace(/\"/g,'&quot;').replace(/</g,'&lt;').replace(/>/g,'&gt;'):(_.$1===0?0:''))+'") + "'"
64
- );
67
+ riot.render = function(tmpl, data, escape_fn) {
68
+ if (escape_fn === true) escape_fn = default_escape_fn;
69
+ tmpl = tmpl || '';
65
70
 
66
- return FN[template](data);
71
+ return (FN[tmpl] = FN[tmpl] || new Function("_", "e", "return '" +
72
+ tmpl.replace(/[\\\n\r']/g, function(char) {
73
+ return template_escape[char];
74
+ }).replace(/{\s*([\w\.]+)\s*}/g, "' + (e?e(_.$1,'$1'):_.$1||(_.$1==null?'':_.$1)) + '") + "'")
75
+ )(data, escape_fn);
67
76
  };
68
-
69
-
70
77
  /* Cross browser popstate */
78
+ (function () {
79
+ // for browsers only
80
+ if (typeof window === "undefined") return;
81
+
82
+ var currentHash,
83
+ pops = riot.observable({}),
84
+ listen = window.addEventListener,
85
+ doc = document;
86
+
87
+ function pop(hash) {
88
+ hash = hash.type ? location.hash : hash;
89
+ if (hash !== currentHash) pops.trigger("pop", hash);
90
+ currentHash = hash;
91
+ }
92
+
93
+ /* Always fire pop event upon page load (normalize behaviour across browsers) */
94
+
95
+ // standard browsers
96
+ if (listen) {
97
+ listen("popstate", pop, false);
98
+ doc.addEventListener("DOMContentLoaded", pop, false);
99
+
100
+ // IE
101
+ } else {
102
+ doc.attachEvent("onreadystatechange", function() {
103
+ if (doc.readyState === "complete") pop("");
104
+ });
105
+ }
71
106
 
72
- // for browsers only
73
- if (typeof top != "object") return;
74
-
75
- var currentHash,
76
- pops = $.observable({}),
77
- listen = window.addEventListener,
78
- doc = document;
79
-
80
- function pop(hash) {
81
- hash = hash.type ? location.hash : hash;
82
- if (hash != currentHash) pops.trigger("pop", hash);
83
- currentHash = hash;
84
- }
107
+ /* Change the browser URL or listen to changes on the URL */
108
+ riot.route = function(to) {
109
+ // listen
110
+ if (typeof to === "function") return pops.on("pop", to);
85
111
 
86
- if (listen) {
87
- listen("popstate", pop, false);
88
- doc.addEventListener("DOMContentLoaded", pop, false);
112
+ // fire
113
+ if (history.pushState) history.pushState(0, 0, to);
114
+ pop(to);
89
115
 
116
+ };
117
+ })();
118
+ if (typeof exports === 'object') {
119
+ // CommonJS support
120
+ module.exports = riot;
121
+ } else if (typeof define === 'function' && define.amd) {
122
+ // support AMD
123
+ define(function() { return riot; });
90
124
  } else {
91
- doc.attachEvent("onreadystatechange", function() {
92
- if (doc.readyState === "complete") pop("");
93
- });
125
+ // support browser
126
+ window.riot = riot;
94
127
  }
95
128
 
96
- // Change the browser URL or listen to changes on the URL
97
- $.route = function(to) {
98
- // listen
99
- if (typeof to === "function") return pops.on("pop", to);
100
-
101
- // fire
102
- if (history.pushState) history.pushState(0, 0, to);
103
- pop(to);
104
-
105
- };})(typeof top == "object" ? window.$ || (window.$ = {}) : exports);
129
+ })({});
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riotjs-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Butler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-22 00:00:00.000000000 Z
11
+ date: 2014-11-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple asset-pipeline wrapper for riot.js by moot
14
14
  email:
@@ -17,7 +17,7 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - .gitignore
20
+ - ".gitignore"
21
21
  - Gemfile
22
22
  - LICENSE.md
23
23
  - Rakefile
@@ -36,17 +36,17 @@ require_paths:
36
36
  - lib
37
37
  required_ruby_version: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - '>='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  requirements: []
48
48
  rubyforge_project: riotjs-rails
49
- rubygems_version: 2.0.3
49
+ rubygems_version: 2.2.2
50
50
  signing_key:
51
51
  specification_version: 4
52
52
  summary: riot.js asset pipeline provider/wrapper