riotjs-rails 0.9.8 → 1.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.
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