@aligov/gov-venom-parser

venom dsl parser

Usage no npm install needed!

<script type="module">
  import aligovGovVenomParser from 'https://cdn.skypack.dev/@aligov/gov-venom-parser';
</script>

README

@aligov/gov-venom-parser

venom DSL底层parser,目前最快的AST parser解析实现。

DEMO

const code = `
    <div :class={{active : isActive, current: isCurrent}}>1</div>
    <div @click="onClick"></div>
    <div onClick="onClick"></div>
    <div onClick={this.store.onClick}></div> 
    <div @click="onClick(item)"></div>
    <div onClick="onClick(item)"></div>
    <div @click.enter="onClick"></div>
    <input :model={value}/>
    <input value={this.state.value} onChange={(val) => this.setState({value: val})}/>
`;

const {parse} = require('@ali/venom-parser');

const ast = parse(code);


console.log('ast[0]:', ast[0]); // AST

ast[0].children.forEach(item => {
    console.log(item);
});

printAttrs(ast[0]);

function printAttrs(ast) {
    if(ast.attrs && ast.attrs.length) {
        ast.attrs.forEach(attr => {
            console.log('attr:', attr);
        });
    }

    if(ast.children && ast.children.length) {
        ast.children.forEach(child => {
            printAttrs(child);
        });
    }
}