vue-compiler 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -18
- data/js/{vue-compile-template.js → vue-compile-template-2.4.js} +0 -0
- data/js/vue-compile-template-2.5.js +5247 -0
- data/lib/vue/compiler.rb +35 -26
- data/lib/vue/sprockets.rb +10 -10
- metadata +4 -3
data/lib/vue/compiler.rb
CHANGED
@@ -3,30 +3,42 @@ require 'v8'
|
|
3
3
|
|
4
4
|
|
5
5
|
module Vue
|
6
|
-
|
6
|
+
|
7
7
|
class Compiler
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
|
9
|
+
JS_ROOT = File.join(File.dirname(__FILE__),'../..','js')
|
10
|
+
|
11
|
+
COMPILER = File.join(JS_ROOT,'vue-compile-template-2.4.js')
|
12
|
+
|
11
13
|
class << self
|
12
|
-
|
14
|
+
|
13
15
|
def _reset
|
14
16
|
@__ctx = nil
|
15
17
|
end
|
16
|
-
|
18
|
+
|
19
|
+
def set_options(opts={})
|
20
|
+
@options = opts
|
21
|
+
end
|
22
|
+
|
23
|
+
def _options
|
24
|
+
@options || {}
|
25
|
+
end
|
26
|
+
|
27
|
+
def _compiler
|
28
|
+
version = _options[:version] || _options['version'] || '2.5'
|
29
|
+
script = File.join(JS_ROOT,"vue-compile-template-#{version}.js")
|
30
|
+
raise "invalid compile script #{script}" unless File.exist?(script)
|
31
|
+
script
|
32
|
+
end
|
33
|
+
|
17
34
|
def _ctx
|
18
35
|
@__ctx ||= begin
|
19
|
-
|
20
|
-
|
21
|
-
|
36
|
+
ctx = V8::Context.new
|
37
|
+
ctx.load _compiler
|
38
|
+
ctx
|
22
39
|
end
|
23
40
|
end
|
24
|
-
|
25
|
-
#def compile(template,options={})
|
26
|
-
# obj = _ctx[:VueTemplateCompiler][:compile].call(template.to_s)
|
27
|
-
# obj[:render]
|
28
|
-
#end
|
29
|
-
|
41
|
+
|
30
42
|
def compile(template,options={})
|
31
43
|
obj = _ctx[:VueTemplateCompiler][:compile].call(template.to_s)
|
32
44
|
{
|
@@ -37,20 +49,17 @@ module Vue
|
|
37
49
|
}
|
38
50
|
end
|
39
51
|
|
40
|
-
# returns keys ["template", "script", "styles", "customBlocks"]
|
41
|
-
# :template=> {"type", "content", "start", "attrs", "end"}
|
42
|
-
# :script =>
|
43
|
-
|
44
52
|
def parseComponent(file, options={})
|
45
53
|
obj = _ctx[:VueTemplateCompiler][:parseComponent].call(file.to_s)
|
46
|
-
{:script=>obj[:script]
|
47
|
-
:template=>obj[:template]
|
48
|
-
:styles=>obj[:styles].
|
54
|
+
{:script=>obj[:script] && obj[:script][:content],
|
55
|
+
:template=>obj[:template] && obj[:template][:content],
|
56
|
+
:styles=>obj[:styles] && obj[:styles].map{ |s| s[:content] }
|
57
|
+
}
|
49
58
|
end
|
50
|
-
|
51
|
-
|
59
|
+
|
60
|
+
|
52
61
|
end
|
53
|
-
|
62
|
+
|
54
63
|
end
|
55
|
-
|
64
|
+
|
56
65
|
end
|
data/lib/vue/sprockets.rb
CHANGED
@@ -3,13 +3,13 @@
|
|
3
3
|
require 'vue/compiler'
|
4
4
|
|
5
5
|
class VueSprocketsCompiler
|
6
|
-
|
6
|
+
|
7
7
|
# compile templates under this path.
|
8
8
|
def self.set_root(path=nil)
|
9
9
|
path = '/' + path unless path[0,1] == '/'
|
10
10
|
@root = path
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def self.toFunction(code)
|
14
14
|
return 'function () {' + code + '}'
|
15
15
|
end
|
@@ -22,20 +22,20 @@ class VueSprocketsCompiler
|
|
22
22
|
path = filename[load_path.length..-1]
|
23
23
|
|
24
24
|
if !@root || (path[0..@root.length-1] == @root)
|
25
|
-
js = source.gsub( /(
|
25
|
+
js = source.gsub( /(?<spaces>\s+)template\s*:\s*(?<quote>["`'])(?<code>.*?[^\\])\k<quote>/m ) do |match|
|
26
26
|
spaces = "#{$1}"
|
27
|
-
src = $
|
27
|
+
src = $3.gsub("\\n","\n")
|
28
28
|
src = src.gsub("\\\"","\"")
|
29
29
|
src = src.gsub("\\\'","\'")
|
30
30
|
src = src.gsub("\\t","\t")
|
31
|
-
|
31
|
+
|
32
32
|
result = Vue::Compiler.compile(src)
|
33
|
-
|
34
|
-
out
|
33
|
+
|
34
|
+
out = spaces + "render :" + toFunction(result[:render]) + ",\n"
|
35
35
|
out += spaces + "staticRenderFns :[" + (result[:staticRenderFns] || []).map{|f| toFunction(f)}.join(',') + "]"
|
36
|
-
puts "ERROR: vue/sprockets #{filename} ==>\n#{result[:errors]}" if
|
37
|
-
puts
|
38
|
-
out
|
36
|
+
puts "ERROR: vue/sprockets #{filename} ==>\n#{result[:errors]}" if result[:errors].to_s != ""
|
37
|
+
puts "TIP: vue/sprockets #{filename} ==>\n#{result[:tips]}" if result[:tips].to_s != ""
|
38
|
+
out
|
39
39
|
end
|
40
40
|
{:data=>js}
|
41
41
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vue-compiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clive Andrews
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: therubyracer
|
@@ -36,7 +36,8 @@ extra_rdoc_files:
|
|
36
36
|
files:
|
37
37
|
- LICENSE
|
38
38
|
- README.md
|
39
|
-
- js/vue-compile-template.js
|
39
|
+
- js/vue-compile-template-2.4.js
|
40
|
+
- js/vue-compile-template-2.5.js
|
40
41
|
- lib/vue/compiler.rb
|
41
42
|
- lib/vue/sprockets.rb
|
42
43
|
homepage: https://github.com/realbite/vue-compiler
|