Skip to content

Commit d0ab010

Browse files
committed
refactor transformToRequire url handling
1 parent 069a09c commit d0ab010

File tree

3 files changed

+22
-27
lines changed

3 files changed

+22
-27
lines changed

lib/template-compiler/modules/transform-require.js

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// vue compiler module for transforming `<tag>:<attribute>` to `require`
22

3+
const urlToRequire = require('../url-to-require')
4+
35
const defaultOptions = {
46
video: ['src', 'poster'],
57
source: 'src',
@@ -34,19 +36,11 @@ function transform (node, options) {
3436

3537
function rewrite (attr, name) {
3638
if (attr.name === name) {
37-
let value = attr.value
38-
const isStatic = value.charAt(0) === '"' && value.charAt(value.length - 1) === '"'
39-
if (!isStatic) {
40-
return
41-
}
42-
const firstChar = value.charAt(1)
43-
if (firstChar === '.' || firstChar === '~') {
44-
if (firstChar === '~') {
45-
const secondChar = value.charAt(2)
46-
value = '"' + value.slice(secondChar === '/' ? 3 : 2)
47-
}
48-
attr.value = `require(${value})`
39+
const value = attr.value
40+
// only transform static URLs
41+
if (value.charAt(0) === '"' && value.charAt(value.length - 1) === '"') {
42+
attr.value = urlToRequire(value.slice(1, -1))
43+
return true
4944
}
50-
return true
5145
}
5246
}

lib/template-compiler/modules/transform-srcset.js

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// vue compiler module for transforming `img:srcset` to a number of `require`s
22

3+
const urlToRequire = require('../url-to-require')
4+
35
module.exports = () => ({
46
postTransformNode: node => {
57
transform(node)
@@ -43,17 +45,3 @@ function transform (node) {
4345
})
4446
}
4547
}
46-
47-
function urlToRequire (url) {
48-
// same logic as in transform-require.js
49-
const firstChar = url.charAt(0)
50-
if (firstChar === '.' || firstChar === '~') {
51-
if (firstChar === '~') {
52-
const secondChar = url.charAt(1)
53-
url = url.slice(secondChar === '/' ? 2 : 1)
54-
}
55-
return `require("${url}")`
56-
} else {
57-
return `"${url}"`
58-
}
59-
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module.exports = function urlToRequire (url) {
2+
// same logic as in transform-require.js
3+
const firstChar = url.charAt(0)
4+
if (firstChar === '.' || firstChar === '~' || firstChar === '@') {
5+
if (firstChar === '~') {
6+
const secondChar = url.charAt(1)
7+
url = url.slice(secondChar === '/' ? 2 : 1)
8+
}
9+
return `require("${url}")`
10+
} else {
11+
return `"${url}"`
12+
}
13+
}

0 commit comments

Comments
 (0)