Skip to content

Commit 052b3ac

Browse files
committed
Merge pull request #3 from koron/flexible-reader
make input flexible
2 parents 03cabc9 + 4141828 commit 052b3ac

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

autoload/vimlparser.vim

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@ function! vimlparser#import()
88
return s:
99
endfunction
1010

11-
function! vimlparser#test(filename)
11+
" @brief Read input as VimScript and return stringified AST.
12+
" @param input Input filename or string of VimScript.
13+
" @return Stringified AST.
14+
function! vimlparser#test(input)
1215
try
13-
let r = s:StringReader.new(readfile(a:filename))
16+
let i = type(a:input) == 1 && filereadable(a:input) ? readfile(a:input) : a:input
17+
let r = s:StringReader.new(i)
1418
let p = s:VimLParser.new()
1519
let c = s:Compiler.new()
1620
echo join(c.compile(p.parse(r)), "\n")
@@ -3375,21 +3379,21 @@ function! s:StringReader.new(...)
33753379
endfunction
33763380

33773381
function! s:StringReader.__init__(lines)
3378-
let self.lines = a:lines
3382+
let lines = type(a:lines) == 3 ? a:lines : [a:lines]
33793383
let self.buf = []
33803384
let self.pos = []
33813385
let lnum = 0
3382-
while lnum < len(a:lines)
3386+
while lnum < len(lines)
33833387
let col = 0
3384-
for c in split(a:lines[lnum], '\zs')
3388+
for c in split(lines[lnum], '\zs')
33853389
call add(self.buf, c)
33863390
call add(self.pos, [lnum + 1, col + 1])
33873391
let col += len(c)
33883392
endfor
3389-
while lnum + 1 < len(a:lines) && a:lines[lnum + 1] =~# '^\s*\\'
3393+
while lnum + 1 < len(lines) && lines[lnum + 1] =~# '^\s*\\'
33903394
let skip = 1
33913395
let col = 0
3392-
for c in split(a:lines[lnum + 1], '\zs')
3396+
for c in split(lines[lnum + 1], '\zs')
33933397
if skip
33943398
if c == '\'
33953399
let skip = 0

0 commit comments

Comments
 (0)