sprockets-vue 0.0.4 → 0.0.5

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: 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: