Skip to content

Commit b055fa7

Browse files
committed
Support transpilation of Printer
1 parent 29cf46a commit b055fa7

File tree

4 files changed

+1594
-14
lines changed

4 files changed

+1594
-14
lines changed

js/jscompiler.vim

+9-4
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ function s:JavascriptCompiler.compile_function(node)
290290
unlet rlist[-1]
291291
let va = 1
292292
endif
293-
if left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
293+
if left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\)\.'
294294
let [_0, klass, name; _] = matchlist(left, '^\(.*\)\.\(.*\)$')
295295
if name == 'new'
296296
return
@@ -344,10 +344,10 @@ function s:JavascriptCompiler.compile_let(node)
344344
call self.out('function LvalueParser() { ExprParser.apply(this, arguments); this.__init__.apply(this, arguments); }')
345345
call self.out('LvalueParser.prototype = Object.create(ExprParser.prototype);')
346346
return
347-
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)$'
347+
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\)$'
348348
call self.out('function %s() { this.__init__.apply(this, arguments); }', left)
349349
return
350-
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
350+
elseif left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\)\.'
351351
let [_0, klass, name; _] = matchlist(left, '^\(.*\)\.\(.*\)$')
352352
call self.out('%s.prototype.%s %s %s;', klass, name, op, right)
353353
return
@@ -798,6 +798,10 @@ function s:JavascriptCompiler.compile_identifier(node)
798798
let name = 'a000'
799799
elseif name == 'v:val'
800800
let name = 'vval'
801+
elseif name == 'a:0'
802+
let name = 'a000.length'
803+
elseif name =~ '^a:[1-9]$'
804+
let name = 'a000[' . (str2nr(name[2:]) - 1) . ']'
801805
elseif name =~ '^[sa]:'
802806
let name = name[2:]
803807
elseif name == 'self'
@@ -859,7 +863,8 @@ function! s:convert(in, out) abort
859863
\ ' module.exports = {',
860864
\ ' VimLParser: VimLParser,',
861865
\ ' StringReader: StringReader,',
862-
\ ' Compiler: Compiler',
866+
\ ' Compiler: Compiler,',
867+
\ ' Printer: Printer',
863868
\ ' };',
864869
\ '}',
865870
\ ]

0 commit comments

Comments
 (0)