ruby2js 2.1.1 → 2.1.2
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 +4 -4
- data/lib/ruby2js/filter/vue.rb +69 -6
- data/lib/ruby2js/version.rb +1 -1
- data/ruby2js.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14b0c4f156b0f543afde3c3a0a8e339b5ece18bc
|
4
|
+
data.tar.gz: 363dafc8a9f6814ea754af8025f60c1668ec2e70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d58ad86fa85e3ecbe88be541faa486013407a993cf3b0a14e0b05771863219f0f69eeb67e8b5597eeeedb8d54d515d48058aa2b4792099aba4421286833972d
|
7
|
+
data.tar.gz: b03e0fa66154948bd4abdff01b766b916b6758efffe70de8b6e3515d76f171e353e5c3ba06a5f3694f761970cc58d07d7fc8dab9b237e9c82298604238d96758
|
data/lib/ruby2js/filter/vue.rb
CHANGED
@@ -10,11 +10,17 @@ module Ruby2JS
|
|
10
10
|
:once, :set, :watch
|
11
11
|
]
|
12
12
|
|
13
|
+
VUE_LIFECYCLE = [
|
14
|
+
:data, :render, :beforeCreate, :created, :beforeMount, :mounted,
|
15
|
+
:beforeUpdate, :updated, :beforeDestroy, :destroyed
|
16
|
+
]
|
17
|
+
|
13
18
|
def initialize(*args)
|
14
19
|
@vue_h = nil
|
15
20
|
@vue_self = nil
|
16
21
|
@vue_apply = nil
|
17
22
|
@vue_inventory = Hash.new {|h, k| h[k] = []}
|
23
|
+
@vue_instance = []
|
18
24
|
super
|
19
25
|
end
|
20
26
|
|
@@ -45,6 +51,8 @@ module Ruby2JS
|
|
45
51
|
|
46
52
|
hash = []
|
47
53
|
methods = []
|
54
|
+
computed = []
|
55
|
+
setters = []
|
48
56
|
|
49
57
|
# insert constructor if none present
|
50
58
|
unless body.any? {|statement|
|
@@ -55,6 +63,18 @@ module Ruby2JS
|
|
55
63
|
end
|
56
64
|
|
57
65
|
@vue_inventory = vue_walk(node)
|
66
|
+
@vue_instance = []
|
67
|
+
|
68
|
+
# collect instance methods (including getters and setters)
|
69
|
+
body.each do |statement|
|
70
|
+
if statement.type == :def
|
71
|
+
method = statement.children.first
|
72
|
+
unless VUE_LIFECYCLE.include? method or method == :initialize
|
73
|
+
method = method.to_s[0..-2].to_sym if method.to_s.end_with? '='
|
74
|
+
@vue_instance << method unless @vue_instance.include? method
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
58
78
|
|
59
79
|
# convert body into hash
|
60
80
|
body.each do |statement|
|
@@ -137,14 +157,21 @@ module Ruby2JS
|
|
137
157
|
end
|
138
158
|
end
|
139
159
|
|
160
|
+
if statement.is_method?
|
161
|
+
method_type = :proc
|
162
|
+
else
|
163
|
+
method_type = :lambda
|
164
|
+
end
|
165
|
+
|
140
166
|
# add to hash in the appropriate location
|
141
|
-
pair = s(:pair, s(:sym, method),
|
142
|
-
s(:block, s(:send, nil,
|
143
|
-
if
|
144
|
-
beforeUpdate updated beforeDestroy destroyed
|
145
|
-
).include? method.to_s
|
146
|
-
then
|
167
|
+
pair = s(:pair, s(:sym, method.to_s.chomp('=')),
|
168
|
+
s(:block, s(:send, nil, method_type), args, process(block)))
|
169
|
+
if VUE_LIFECYCLE.include? method
|
147
170
|
hash << pair
|
171
|
+
elsif not statement.is_method?
|
172
|
+
computed << pair
|
173
|
+
elsif method.to_s.end_with? '='
|
174
|
+
setters << pair
|
148
175
|
else
|
149
176
|
methods << pair
|
150
177
|
end
|
@@ -167,6 +194,30 @@ module Ruby2JS
|
|
167
194
|
hash << s(:pair, s(:sym, :methods), s(:hash, *methods))
|
168
195
|
end
|
169
196
|
|
197
|
+
@vue_instance = []
|
198
|
+
|
199
|
+
# add setters to computed list
|
200
|
+
setters.each do |setter|
|
201
|
+
index = computed.find_index do |pair|
|
202
|
+
pair.children[0].children[0].to_s ==
|
203
|
+
setter.children[0].children[0]
|
204
|
+
end
|
205
|
+
|
206
|
+
if index
|
207
|
+
computed[index] = s(:pair, setter.children[0],
|
208
|
+
s(:hash, s(:pair, s(:sym, :get), computed[index].children[1]),
|
209
|
+
s(:pair, s(:sym, :set), setter.children[1])))
|
210
|
+
else
|
211
|
+
computed << s(:pair, setter.children[0],
|
212
|
+
s(:hash, s(:pair, s(:sym, :set), setter.children[1])))
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
# add computed to hash
|
217
|
+
unless computed.empty?
|
218
|
+
hash << s(:pair, s(:sym, :computed), s(:hash, *computed))
|
219
|
+
end
|
220
|
+
|
170
221
|
# convert class name to camel case
|
171
222
|
camel = cname.children.last.to_s.gsub(/[^\w]/, '-').
|
172
223
|
sub(/^[A-Z]/) {|c| c.downcase}.
|
@@ -210,6 +261,12 @@ module Ruby2JS
|
|
210
261
|
end
|
211
262
|
end
|
212
263
|
|
264
|
+
# calls to methods (including getters) defined in this class
|
265
|
+
if node.children[0]==nil and @vue_instance.include? node.children[1]
|
266
|
+
return node.updated nil, [s(:self), node.children[1],
|
267
|
+
*process_all(node.children[2..-1])]
|
268
|
+
end
|
269
|
+
|
213
270
|
return super unless @vue_h
|
214
271
|
|
215
272
|
if node.children[0] == nil and node.children[1] =~ /^_\w/
|
@@ -703,6 +760,12 @@ module Ruby2JS
|
|
703
760
|
node.children[1], process(node.children[2])]
|
704
761
|
end
|
705
762
|
|
763
|
+
def on_lvasgn(node)
|
764
|
+
return super unless @vue_instance.include? node.children.first
|
765
|
+
s(:send, s(:self), "#{node.children.first}=",
|
766
|
+
process(node.children[1]))
|
767
|
+
end
|
768
|
+
|
706
769
|
# gather ivar and cvar usage
|
707
770
|
def vue_walk(node, inventory = Hash.new {|h, k| h[k] = []})
|
708
771
|
# extract ivars and cvars
|
data/lib/ruby2js/version.rb
CHANGED
data/ruby2js.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: ruby2js 2.1.
|
2
|
+
# stub: ruby2js 2.1.2 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "ruby2js".freeze
|
6
|
-
s.version = "2.1.
|
6
|
+
s.version = "2.1.2"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Sam Ruby".freeze]
|
11
|
-
s.date = "2017-09-
|
11
|
+
s.date = "2017-09-07"
|
12
12
|
s.description = " The base package maps Ruby syntax to JavaScript semantics.\n Filters may be provided to add Ruby-specific or framework specific\n behavior.\n".freeze
|
13
13
|
s.email = "rubys@intertwingly.net".freeze
|
14
14
|
s.files = ["README.md".freeze, "lib/ruby2js".freeze, "lib/ruby2js.rb".freeze, "lib/ruby2js/cgi.rb".freeze, "lib/ruby2js/converter".freeze, "lib/ruby2js/converter.rb".freeze, "lib/ruby2js/converter/arg.rb".freeze, "lib/ruby2js/converter/args.rb".freeze, "lib/ruby2js/converter/array.rb".freeze, "lib/ruby2js/converter/begin.rb".freeze, "lib/ruby2js/converter/block.rb".freeze, "lib/ruby2js/converter/blockpass.rb".freeze, "lib/ruby2js/converter/boolean.rb".freeze, "lib/ruby2js/converter/break.rb".freeze, "lib/ruby2js/converter/case.rb".freeze, "lib/ruby2js/converter/casgn.rb".freeze, "lib/ruby2js/converter/class.rb".freeze, "lib/ruby2js/converter/const.rb".freeze, "lib/ruby2js/converter/cvar.rb".freeze, "lib/ruby2js/converter/cvasgn.rb".freeze, "lib/ruby2js/converter/def.rb".freeze, "lib/ruby2js/converter/defined.rb".freeze, "lib/ruby2js/converter/defs.rb".freeze, "lib/ruby2js/converter/dstr.rb".freeze, "lib/ruby2js/converter/for.rb".freeze, "lib/ruby2js/converter/hash.rb".freeze, "lib/ruby2js/converter/if.rb".freeze, "lib/ruby2js/converter/in.rb".freeze, "lib/ruby2js/converter/ivar.rb".freeze, "lib/ruby2js/converter/ivasgn.rb".freeze, "lib/ruby2js/converter/kwbegin.rb".freeze, "lib/ruby2js/converter/literal.rb".freeze, "lib/ruby2js/converter/logical.rb".freeze, "lib/ruby2js/converter/masgn.rb".freeze, "lib/ruby2js/converter/module.rb".freeze, "lib/ruby2js/converter/next.rb".freeze, "lib/ruby2js/converter/nil.rb".freeze, "lib/ruby2js/converter/nthref.rb".freeze, "lib/ruby2js/converter/opasgn.rb".freeze, "lib/ruby2js/converter/prototype.rb".freeze, "lib/ruby2js/converter/regexp.rb".freeze, "lib/ruby2js/converter/return.rb".freeze, "lib/ruby2js/converter/self.rb".freeze, "lib/ruby2js/converter/send.rb".freeze, "lib/ruby2js/converter/super.rb".freeze, "lib/ruby2js/converter/sym.rb".freeze, "lib/ruby2js/converter/undef.rb".freeze, "lib/ruby2js/converter/until.rb".freeze, "lib/ruby2js/converter/untilpost.rb".freeze, "lib/ruby2js/converter/var.rb".freeze, "lib/ruby2js/converter/vasgn.rb".freeze, "lib/ruby2js/converter/while.rb".freeze, "lib/ruby2js/converter/whilepost.rb".freeze, "lib/ruby2js/converter/xstr.rb".freeze, "lib/ruby2js/execjs.rb".freeze, "lib/ruby2js/filter".freeze, "lib/ruby2js/filter/angular-resource.rb".freeze, "lib/ruby2js/filter/angular-route.rb".freeze, "lib/ruby2js/filter/angularrb.rb".freeze, "lib/ruby2js/filter/camelCase.rb".freeze, "lib/ruby2js/filter/functions.rb".freeze, "lib/ruby2js/filter/jquery.rb".freeze, "lib/ruby2js/filter/minitest-jasmine.rb".freeze, "lib/ruby2js/filter/react.rb".freeze, "lib/ruby2js/filter/require.rb".freeze, "lib/ruby2js/filter/return.rb".freeze, "lib/ruby2js/filter/rubyjs.rb".freeze, "lib/ruby2js/filter/strict.rb".freeze, "lib/ruby2js/filter/underscore.rb".freeze, "lib/ruby2js/filter/vue.rb".freeze, "lib/ruby2js/rails.rb".freeze, "lib/ruby2js/serializer.rb".freeze, "lib/ruby2js/sinatra.rb".freeze, "lib/ruby2js/version.rb".freeze, "ruby2js.gemspec".freeze]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby2js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Ruby
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|