riot_js-rails 0.4.1 → 0.5.0

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: df3508dc1799dfbf259c92264868490c0fcc613d
4
- data.tar.gz: 0de2937b97cad066642072c78e270f34359bde33
3
+ metadata.gz: d04e52981c0b23629682d271c8eeff74e501551d
4
+ data.tar.gz: d2190c61c536e85c32a24a5c80e378687eaa0eee
5
5
  SHA512:
6
- metadata.gz: 54910c7eb889db79234749034943f5acae183b7d3e2c9d6fd2f8dd0f4a5372193245cf2e02fa7cd2c6481c830e5364a557868f129b5c949889f5158187133f00
7
- data.tar.gz: 8da5cb92adeb951f47ece46d435a9831dd1661a85c6295645b54ca60c8480ef666f17fe4d03c0197a497b0bfc5b75428ffef2fcf353b81e670c6abe87e9aec19
6
+ metadata.gz: f1d9ab022d4dc8f462567f80d7b65b8ca1357bf3276cbb0705727ad124f05befd500739b17d4ca75740ce1c8991a619bd77ee53b260f4b0f0db20f27a628e908
7
+ data.tar.gz: e0af3d66269f60a0bf42b1e36ee6d90d1b177e02ab46418d3214f5f5f3fa4b745b5730f2809964fa60641c7d1d2ba8377ffa2d39d2896239adb022f22ffd963b
@@ -0,0 +1,38 @@
1
+ require 'action_view'
2
+ require 'execjs'
3
+
4
+ module RiotJs
5
+ module Rails
6
+ class Renderer
7
+ include ::ActionView::Helpers::JavaScriptHelper
8
+
9
+ JS_RUNTIME = ::ExecJS::ExternalRuntime.new(
10
+ name: 'Node.js (V8)',
11
+ command: ['nodejs', 'node'],
12
+ encoding: 'UTF-8',
13
+ runner_path: File.expand_path('../../../../../vendor/assets/javascripts/compiler/node_runner.js', __FILE__),
14
+ )
15
+ JS_RUNTIME.instance_variable_set :@binary, JS_RUNTIME.send(:locate_binary) if defined?(::Barista)
16
+
17
+ RIOT_COMPILER_PATH = File.expand_path('../../../../../vendor/assets/javascripts/compiler/compiler.js', __FILE__)
18
+
19
+ def self.instance
20
+ @@instance ||= new
21
+ end
22
+
23
+ def self.compile(tag_source)
24
+ instance.compile(tag_source)
25
+ end
26
+
27
+ def compile(tag_source)
28
+ compiler_source = <<-JS
29
+ var compiler = require("#{RIOT_COMPILER_PATH}");
30
+ return compiler.compile("#{escape_javascript(tag_source)}");
31
+ JS
32
+
33
+ JS_RUNTIME.exec(compiler_source)
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -1,5 +1,5 @@
1
1
  module RiotJs
2
2
  module Rails
3
- VERSION = '0.4.1'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
@@ -1,8 +1,8 @@
1
- /* Riot v2.4.1, @license MIT */
1
+ /* Riot v2.5.0, @license MIT */
2
2
 
3
3
  ;(function(window, undefined) {
4
4
  'use strict';
5
- var riot = { version: 'v2.4.1', settings: {} },
5
+ var riot = { version: 'v2.5.0', settings: {} },
6
6
  // be aware, internal usage
7
7
  // ATTENTION: prefix the global dynamic variables with `__`
8
8
 
@@ -1286,8 +1286,8 @@ function _each(dom, parent, expr) {
1286
1286
  unmountRedundant(items, tags)
1287
1287
 
1288
1288
  // insert the new nodes
1289
+ root.insertBefore(frag, ref)
1289
1290
  if (isOption) {
1290
- root.appendChild(frag)
1291
1291
 
1292
1292
  // #1374 FireFox bug in <option selected={expression}>
1293
1293
  if (FIREFOX && !root.multiple) {
@@ -1300,7 +1300,6 @@ function _each(dom, parent, expr) {
1300
1300
  }
1301
1301
  }
1302
1302
  }
1303
- else root.insertBefore(frag, ref)
1304
1303
 
1305
1304
  // set the 'tags' property of the parent tag
1306
1305
  // if child is 'undefined' it means that we don't need to set this property
@@ -1558,7 +1557,9 @@ function Tag(impl, conf, innerHTML) {
1558
1557
 
1559
1558
  defineProperty(this, 'mixin', function() {
1560
1559
  each(arguments, function(mix) {
1561
- var instance
1560
+ var instance,
1561
+ props = [],
1562
+ obj
1562
1563
 
1563
1564
  mix = typeof mix === T_STRING ? riot.mixin(mix) : mix
1564
1565
 
@@ -1566,17 +1567,20 @@ function Tag(impl, conf, innerHTML) {
1566
1567
  if (isFunction(mix)) {
1567
1568
  // create the new mixin instance
1568
1569
  instance = new mix()
1569
- // save the prototype to loop it afterwards
1570
- mix = mix.prototype
1571
1570
  } else instance = mix
1572
1571
 
1572
+ // build multilevel prototype inheritance chain property list
1573
+ do props = props.concat(Object.getOwnPropertyNames(obj || instance))
1574
+ while (obj = Object.getPrototypeOf(obj || instance))
1575
+
1573
1576
  // loop the keys in the function prototype or the all object keys
1574
- each(Object.getOwnPropertyNames(mix), function(key) {
1577
+ each(props, function(key) {
1575
1578
  // bind methods to self
1576
- if (key != 'init')
1579
+ if (key != 'init' && !self[key])
1580
+ // apply method only if it does not already exist on the instance
1577
1581
  self[key] = isFunction(instance[key]) ?
1578
- instance[key].bind(self) :
1579
- instance[key]
1582
+ instance[key].bind(self) :
1583
+ instance[key]
1580
1584
  })
1581
1585
 
1582
1586
  // init method will be called automatically
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riot_js-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bartosz Jaroszewski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-03 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -130,6 +130,7 @@ files:
130
130
  - lib/riot_js/rails/helper.rb
131
131
  - lib/riot_js/rails/processors/compiler.rb
132
132
  - lib/riot_js/rails/processors/processor.rb
133
+ - lib/riot_js/rails/processors/renderer.rb
133
134
  - lib/riot_js/rails/processors/sprockets_processor_v2.rb
134
135
  - lib/riot_js/rails/processors/sprockets_processor_v3.rb
135
136
  - lib/riot_js/rails/railtie.rb
@@ -166,3 +167,4 @@ signing_key:
166
167
  specification_version: 4
167
168
  summary: Muut Riot integration with Rails.
168
169
  test_files: []
170
+ has_rdoc: