vue-compiler 0.1.2 → 0.1.3

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: a187ad13b1ab03ab950e77ddb57cf08e74935fd7
4
- data.tar.gz: 501fedf0882dc612f6dc0d96e540ba453b8d8c67
3
+ metadata.gz: 70c572dc52fb6abc136900505b5e0bfe0372e531
4
+ data.tar.gz: 190edf373a5722f083252f5ced0a6dec5230fa8d
5
5
  SHA512:
6
- metadata.gz: 9951ce0b197090719f2e62ce4afbee9528288393c94f65c7a82be71a123a7da06dcf488a3163047ace688b7e1525c71b61fb955a5014e4bb248abf863710891a
7
- data.tar.gz: 7a3200cb6de81f490e57dec6e6704151c6a757112beb64d31303629ae35184804270f6953c004648747d31365654e6cbab25c5c42268abea6202332cff87d2b9
6
+ metadata.gz: 717f8071e778fc97d4adc1332269bf75cdf33cc15e5cc42254f21ca94e85741571ab5cc59083e0a3f126ac8b695d9bfc9064550cda7e1f7a6c4a2739f76a9a5c
7
+ data.tar.gz: 1d4b00dc793d3bf428079af4c6dc57ea2205236bfde08bae435d5e536f4a2d6e3000810fdb998d7628cfdc3ca7fc247b1d923ca31d500af43ca4bf7a400d3cf4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Vue Version
2
2
 
3
- 2.4.0
3
+ 2.4.0
4
4
 
5
5
  ## INSTALLATION
6
6
 
@@ -9,30 +9,82 @@
9
9
 
10
10
  ## COMPILE A TEMPLATE
11
11
 
12
- require 'vue/compiler'
12
+ require 'vue/compiler'
13
13
 
14
14
 
15
- Vue::Compiler.compile "<div><span>{{ msg }}</span></div>"
15
+ Vue::Compiler.compile "<div><span>{{ msg }}</span></div>"
16
16
 
17
- => "with(this){return _c('div',[_c('span',[_v(_s(msg))])])}"
17
+ => "with(this){return _c('div',[_c('span',[_v(_s(msg))])])}"
18
18
 
19
19
 
20
20
  ## PARSE A SFC
21
21
 
22
- Vue::Compiler.parseComponent "<template><div><span>{{ msg }}</span></div></template>"
22
+ Vue::Compiler.parseComponent "<template><div><span>{{ msg }}</span></div></template>"
23
23
 
24
24
  ## CREATE RENDER FUNCTION
25
25
 
26
26
  replace the template string with the render function in your Vue Object.
27
27
 
28
- render:function(){
29
- with(this){return _c('div',[_c('span',[_v(_s(msg))])])}
30
- }
28
+ render:function(){
29
+ with(this){return _c('div',[_c('span',[_v(_s(msg))])])}
30
+ }
31
31
 
32
32
  ## SPROCKETS
33
33
 
34
- require 'vue/sprockets'
35
-
36
- VueSprocketsCompiler.set_root '/app' # the relative path under which any js files will be processed
34
+ this will replace any template strings within an object in your regular javascript assets with a render function.
35
+
36
+ NOTE The template must be contained with double quotes !!
37
+
38
+ this will NOT compile .vue extension single file components !!
39
+
40
+ ### example
41
+
42
+ in assets/js/app/index.coffee
43
+
44
+ this.app = new Vue({
45
+ el: '#app'
46
+
47
+ template: """
48
+ <div>
49
+ <div class="header">
50
+ <h1 >{{msg}}</h1>
51
+ </div>
52
+ </div>
53
+ """
54
+
55
+ data:
56
+ msg:"hello from vue"
57
+ })
58
+
59
+
60
+ or of you prefer in javascript assets/js/app/index.js
61
+
62
+ var app = new Vue({
63
+ el: '#app',
64
+ template: "<div>\n <div class=\"header\">\n <h1 >{{msg}}</h1>\n </div>\n</div>",
65
+ data: { msg: "hello from vue" }
66
+ });
67
+
68
+
69
+ in your config.ru ..
70
+
71
+ require 'sprockets'
72
+ require 'vue/sprockets'
73
+
74
+ VueSprocketsCompiler.set_root '/app' # the relative path under which any js files will be processed
75
+
76
+ .....
77
+ .....
78
+ .....
79
+ map '/assets' do
80
+ environment = Sprockets::Environment.new
81
+ environment.append_path 'assets/js'
82
+ environment.append_path 'assets/css'
83
+ ....
84
+
85
+ run environment
86
+ end
87
+ ....
88
+ ....
37
89
 
38
90
 
@@ -22,9 +22,19 @@ module Vue
22
22
  end
23
23
  end
24
24
 
25
+ #def compile(template,options={})
26
+ # obj = _ctx[:VueTemplateCompiler][:compile].call(template.to_s)
27
+ # obj[:render]
28
+ #end
29
+
25
30
  def compile(template,options={})
26
31
  obj = _ctx[:VueTemplateCompiler][:compile].call(template.to_s)
27
- obj[:render]
32
+ {
33
+ :render=>obj[:render].to_s,
34
+ :staticRenderFns=>obj[:staticRenderFns].to_a,
35
+ :errors=>obj[:errors].to_s,
36
+ :tips=>obj[:tips].to_s
37
+ }
28
38
  end
29
39
 
30
40
  # returns keys ["template", "script", "styles", "customBlocks"]
@@ -33,7 +43,9 @@ module Vue
33
43
 
34
44
  def parseComponent(file, options={})
35
45
  obj = _ctx[:VueTemplateCompiler][:parseComponent].call(file.to_s)
36
- {:script=>obj[:script]}
46
+ {:script=>obj[:script].to_s,
47
+ :template=>obj[:template].to_s,
48
+ :styles=>obj[:styles].to_s}
37
49
  end
38
50
 
39
51
 
@@ -9,6 +9,10 @@ class VueSprocketsCompiler
9
9
  path = '/' + path unless path[0,1] == '/'
10
10
  @root = path
11
11
  end
12
+
13
+ def self.toFunction(code)
14
+ return 'function () {' + code + '}'
15
+ end
12
16
 
13
17
  def self.call(input)
14
18
  source = input[:data]
@@ -18,12 +22,20 @@ class VueSprocketsCompiler
18
22
  path = filename[load_path.length..-1]
19
23
 
20
24
  if !@root || (path[0..@root.length-1] == @root)
21
- js = source.gsub( /template\s*:\s*"(.*?[^\\])"/m ) do |match|
22
- src = $1.gsub("\\n","\n")
25
+ js = source.gsub( /( *)template\s*:\s*"(.*?[^\\])"/m ) do |match|
26
+ spaces = "#{$1}"
27
+ src = $2.gsub("\\n","\n")
23
28
  src = src.gsub("\\\"","\"")
24
29
  src = src.gsub("\\\'","\'")
25
30
  src = src.gsub("\\t","\t")
26
- "render : function(){" + Vue::Compiler.compile(src) + "}"
31
+
32
+ result = Vue::Compiler.compile(src)
33
+ out = ""
34
+ out += spaces + "render :" + toFunction(result[:render]) + ",\n"
35
+ out += spaces + "staticRenderFns :[" + (result[:staticRenderFns] || []).map{|f| toFunction(f)}.join(',') + "]"
36
+ puts "ERROR: vue/sprockets #{filename} ==>\n#{result[:errors]}" if result[:errors].to_s != ""
37
+ puts puts "TIP: vue/sprockets #{filename} ==>\n#{result[:tips]}" if result[:tips].to_s != ""
38
+ out
27
39
  end
28
40
  {:data=>js}
29
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.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clive Andrews
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-30 00:00:00.000000000 Z
11
+ date: 2017-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: therubyracer
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description: vue-template-compiler functionality in a gem - compile and parse your
28
- vue.js templates and components
28
+ vue.js templates
29
29
  email:
30
30
  - gems@realitybites.eu
31
31
  executables: []
@@ -39,7 +39,7 @@ files:
39
39
  - js/vue-compile-template.js
40
40
  - lib/vue/compiler.rb
41
41
  - lib/vue/sprockets.rb
42
- homepage: ''
42
+ homepage: https://github.com/realbite/vue-compiler
43
43
  licenses:
44
44
  - MIT
45
45
  metadata: {}