van-parser
Recursive descent parser for .van files (Vue SFC syntax) — parses <template>, <script setup>, <style scoped> blocks into a VanBlock struct.
Part of the Van template engine.
Usage
use ;
let source = r#"
<template>
<div>{{ message }}</div>
</template>
<script setup>
import Header from './header.van'
const message = ref('hello')
</script>
<style scoped>
div { color: red; }
</style>
"#;
let block: VanBlock = parse_blocks;
assert!;
assert!;
assert!;
Key Types
VanBlock— parsed.vanfile:template,script_setup,script_server,style,style_scoped,propsPropDef— component prop definition:name,prop_type,requiredVanImport—.vancomponent import:name(PascalCase),tag_name(kebab-case),pathScriptImport— non-component import:raw,is_type_only,path
Public API
| Function | Description |
|---|---|
parse_blocks(source) |
Parse .van source into VanBlock |
parse_imports(script) |
Extract .van component imports |
parse_script_imports(script) |
Extract .ts/.js imports |
parse_define_props(script) |
Extract defineProps() declarations |
scope_css(css, id) |
Add scoped class to CSS selectors |
add_scope_class(html, id) |
Add scoped class to HTML elements |
License
MIT