sprockets-vue 0.0.4 → 0.0.5

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: d38a9eeb83c5f834ff700e4968f64396516eb96f
4
- data.tar.gz: 3e63bffae0b3aeab5838cb91c1fd87258bc484f4
3
+ metadata.gz: 2583dcbc2d0241080f48cbfbcb39a218f8c0984f
4
+ data.tar.gz: 13d556aa5b2c2b26d7fc83fe89fc18ebcfa955a2
5
5
  SHA512:
6
- metadata.gz: b35f836aaa41861b43c03e4bd8106a665de95e642e46d821b89c6db6c8ee2c4140c46cb8237d7a72d4795825a04f4f67fc242a7801a6c2b68c1088843b88a75a
7
- data.tar.gz: 453d6d3f08a7415d42864bea57b918e7b437ee98d730cb44cfb83deb6a2f3637c19fe941f7add8aa1717c016be6bc4617e4788585fac8e7ffac2388aecea706c
6
+ metadata.gz: 430c4272966e32732e81b32aa5cf1ea810afa28d3eb6a89eed911158bcb3f5738ed990b0150747da8c1b2fc3a4c414596204b2e8c7846b8974f7fa5ee23e1a27
7
+ data.tar.gz: abbc0aa85216c11b87b95c6d6ca6b61e5b587afa46d053372eacd456759f9536cb97796e80704b38434e5438975ef2d7d8f6cd99a3f006f97fd1d052e342aeae
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # sprockets-vue
2
- A Sprockets transformer that converts .vue file into js object.
2
+ A [Sprockets](https://github.com/rails/sprockets) transformer that converts .vue file into js object.
3
3
 
4
4
  # install
5
5
  add `gem 'sprockets-vue'` to Gemfile, and run bundle, currently works with sprockets 3.
@@ -30,6 +30,14 @@ add `gem 'sprockets-vue'` to Gemfile, and run bundle, currently works with sproc
30
30
  <card v-for="m in members" :m='m'></card>
31
31
  </div>
32
32
  </template>
33
+
34
+ <style lang="scss">
35
+ .search{
36
+ .icon-input{
37
+ width: 100%;
38
+ }
39
+ }
40
+ </style>
33
41
  ```
34
42
 
35
43
  * application.coffee
@@ -45,6 +53,19 @@ new Vue(
45
53
  )
46
54
  ```
47
55
 
56
+ * application.scss
57
+ ```scss
58
+ //=require index
59
+ ```
60
+
61
+ > you can include .vue file in css file, it's style block will be automatic processed.
62
+ you can also use `require_tree` to include all .vue file.😘
63
+ `scoped` will not be supported.
64
+
65
+ # advanced
66
+ * [multi file component](https://github.com/kikyous/sprockets-vue/wiki/multi-file-component)
67
+
68
+
48
69
  # compiled javascript
49
70
 
50
71
  ```javascript
data/lib/sprockets/vue.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  require 'sprockets'
2
2
  require 'sprockets/vue/version'
3
+ require 'sprockets/vue/utils'
3
4
  require 'sprockets/vue/script'
4
5
  require 'sprockets/vue/style'
5
-
6
6
  module Sprockets
7
7
  if respond_to?(:register_transformer)
8
8
  register_mime_type 'text/vue', extensions: ['.vue'], charset: :unicode
9
9
  register_transformer 'text/vue', 'application/javascript', Vue::Script
10
- register_processor 'text/vue', Sprockets::DirectiveProcessor
11
-
12
10
  register_transformer 'text/vue', 'text/css', Vue::Style
11
+
12
+ register_processor 'text/vue', Sprockets::DirectiveProcessor
13
13
  end
14
14
  end
@@ -1,39 +1,54 @@
1
- class Sprockets::Vue::Script
2
- class << self
3
- include ActionView::Helpers::JavaScriptHelper
4
- SCRIPT_COMPILES = {
5
- 'coffee' => ->(s, input){
6
- CoffeeScript.compile(s, sourceMap: true, sourceFiles: [input[:source_path]], no_wrap: true)
7
- },
8
- 'es6' => ->(s, input){
9
- Babel::Transpiler.transform(data, {}) #TODO
1
+ require 'active_support/concern'
2
+ require "action_view"
3
+ module Sprockets::Vue
4
+ class Script
5
+ class << self
6
+ include ActionView::Helpers::JavaScriptHelper
7
+
8
+ SCRIPT_REGEX = Utils.node_regex('script')
9
+ TEMPLATE_REGEX = Utils.node_regex('template')
10
+ SCRIPT_COMPILES = {
11
+ 'coffee' => ->(s, input){
12
+ CoffeeScript.compile(s, sourceMap: true, sourceFiles: [input[:source_path]], no_wrap: true)
13
+ },
14
+ 'es6' => ->(s, input){
15
+ Babel::Transpiler.transform(data, {}) #TODO
16
+ }
10
17
  }
11
- }
12
- def call(input)
13
- data = input[:data]
14
- name = input[:name]
15
- input[:cache].fetch([cache_key, input[:source_path], data]) do
16
- script_r = /\<script *(lang="(\w+)")?\>([\s\S]+)\<\/script\>/
17
- template_r = /\<template\>([\s\S]+)\<\/template\>/
18
- script = script_r.match(data)
19
- lang = script[2]
20
- template = template_r.match(data)
18
+ def call(input)
19
+ data = input[:data]
20
+ name = input[:name]
21
+ input[:cache].fetch([cache_key, input[:source_path], data]) do
22
+ script = SCRIPT_REGEX.match(data)
23
+ template = TEMPLATE_REGEX.match(data)
24
+ output = []
25
+ map = nil
26
+ if script
27
+ result = SCRIPT_COMPILES[script[:lang]].call(script[:content], input)
28
+ map = result['sourceMap']
21
29
 
22
- result = SCRIPT_COMPILES[lang].call(script[3], input)
30
+ output << "'object' != typeof VCompents && (VCompents = {});
31
+ VCompents['#{name}'] = #{result['js']};"
32
+ end
23
33
 
24
- output = ";if (typeof(VCompents)==='undefined')VCompents = {};
25
- VCompents['#{name}'] = #{result['js']};"
26
- output << "VCompents['#{name}'].template = '#{escape_javascript template[1]}';" if template
34
+ if template
35
+ output << "VCompents['#{name.sub(/\.tpl$/, "")}'].template = '#{j template[:content]}';"
36
+ end
27
37
 
28
- { data: output }
38
+ { data: "#{warp(output.join)}", map: map }
39
+ end
29
40
  end
30
- end
31
41
 
32
- def cache_key
33
- [
34
- self.name,
35
- ::Sprockets::Vue::VERSION,
36
- ].freeze
42
+ def warp(s)
43
+ "(function(){#{s}}).call(this);"
44
+ end
45
+
46
+ def cache_key
47
+ [
48
+ self.name,
49
+ VERSION,
50
+ ].freeze
51
+ end
37
52
  end
38
53
  end
39
54
  end
@@ -1,30 +1,31 @@
1
- class Sprockets::Vue::Style
2
- class << self
3
- STYLE_COMPILES = {
4
- 'scss' => Sprockets::ScssProcessor,
5
- 'sass' => Sprockets::SassProcessor,
6
- nil => ->(i){i[:data]}
7
- }
8
- def call(input)
9
- data = input[:data]
10
- input[:cache].fetch([cache_key, input[:filename], data]) do
11
- style_r = /\<style *(lang="(\w+)")?\>([\s\S]+)\<\/style\>/
12
- style = style_r.match(data)
13
- if style
14
- lang = style[2]
15
- input[:data] = style[3]
16
- STYLE_COMPILES[lang].call(input)
17
- else
18
- ''
1
+ module Sprockets::Vue
2
+ class Style
3
+ class << self
4
+ STYLE_REGEX = Utils.node_regex('style')
5
+ STYLE_COMPILES = {
6
+ 'scss' => Sprockets::ScssProcessor,
7
+ 'sass' => Sprockets::SassProcessor,
8
+ nil => ->(i){i[:data]}
9
+ }
10
+ def call(input)
11
+ data = input[:data]
12
+ input[:cache].fetch([cache_key, input[:filename], data]) do
13
+ style = STYLE_REGEX.match(data)
14
+ if style
15
+ input[:data] = style[:content]
16
+ STYLE_COMPILES[style[:lang]].call(input)
17
+ else
18
+ ''
19
+ end
19
20
  end
20
21
  end
21
- end
22
22
 
23
- def cache_key
24
- [
25
- self.name,
26
- ::Sprockets::Vue::VERSION,
27
- ].freeze
23
+ def cache_key
24
+ [
25
+ self.name,
26
+ VERSION,
27
+ ].freeze
28
+ end
28
29
  end
29
30
  end
30
31
  end
@@ -0,0 +1,13 @@
1
+ module Sprockets::Vue::Utils
2
+ class << self
3
+ def node_regex(tag)
4
+ %r(
5
+ \<#{tag}
6
+ (\s+lang=["'](?<lang>\w+)["'])?
7
+ \>
8
+ (?<content>.+)
9
+ \<\/#{tag}\>
10
+ )mx
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Sprockets
2
- class Vue
3
- VERSION = '0.0.4'
2
+ module Vue
3
+ VERSION = '0.0.5'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprockets-vue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - kikyous
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-26 00:00:00.000000000 Z
11
+ date: 2016-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sprockets
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: actionview
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rake
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +80,62 @@ dependencies:
52
80
  - - ">="
53
81
  - !ruby/object:Gem::Version
54
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: execjs
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: sass
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: coffee-script
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
55
139
  description: " A Sprockets transformer that converts .vue file into
56
140
  js object.\n"
57
141
  email: kikyous@163.com
@@ -64,6 +148,7 @@ files:
64
148
  - lib/sprockets/vue.rb
65
149
  - lib/sprockets/vue/script.rb
66
150
  - lib/sprockets/vue/style.rb
151
+ - lib/sprockets/vue/utils.rb
67
152
  - lib/sprockets/vue/version.rb
68
153
  homepage: https://github.com/kikyous/sprockets-vue
69
154
  licenses: