Skip to content

Commit 3ddef0c

Browse files
committed
add preTransform option for compiler modules
1 parent 8924e91 commit 3ddef0c

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/compiler/parser/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const decodeHTMLCached = cached(decodeHTML)
3131
let warn
3232
let platformGetTagNamespace
3333
let platformMustUseProp
34+
let preTransforms
3435
let transforms
3536
let delimiters
3637

@@ -44,6 +45,7 @@ export function parse (
4445
warn = options.warn || baseWarn
4546
platformGetTagNamespace = options.getTagNamespace || no
4647
platformMustUseProp = options.mustUseProp || no
48+
preTransforms = pluckModuleFunction(options.modules, 'preTransformNode')
4749
transforms = pluckModuleFunction(options.modules, 'transformNode')
4850
delimiters = options.delimiters
4951
const stack = []
@@ -97,6 +99,11 @@ export function parse (
9799
)
98100
}
99101

102+
// apply pre-transforms
103+
for (let i = 0; i < preTransforms.length; i++) {
104+
preTransforms[i](element, options)
105+
}
106+
100107
if (!inPre) {
101108
processPre(element)
102109
if (element.pre) {

test/unit/modules/compiler/parser.spec.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,4 +315,16 @@ describe('parser', () => {
315315
const ast = parse('<input type="text" name="field1" :value="msg">', options)
316316
expect(ast.props).toBeUndefined()
317317
})
318+
319+
it('preTransforms', () => {
320+
const options = extend({}, baseOptions)
321+
const spy = jasmine.createSpy('preTransform')
322+
options.modules = options.modules.concat([{
323+
preTransformNode (el) {
324+
spy(el.tag)
325+
}
326+
}])
327+
parse('<img v-pre src="hi">', options)
328+
expect(spy).toHaveBeenCalledWith('img')
329+
})
318330
})

0 commit comments

Comments
 (0)