van-parser 0.1.18

Recursive descent parser for .van (Vue SFC syntax) template files
Documentation

van-parser

crates.io

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 van_parser::{parse_blocks, parse_imports, VanBlock, VanImport, PropDef};

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(source);
assert!(block.template.is_some());
assert!(block.script_setup.is_some());
assert!(block.style_scoped);

Key Types

  • VanBlock — parsed .van file: template, script_setup, script_server, style, style_scoped, props
  • PropDef — component prop definition: name, prop_type, required
  • VanImport.van component import: name (PascalCase), tag_name (kebab-case), path
  • ScriptImport — 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