mirror of
https://github.com/slint-ui/slint.git
synced 2025-11-01 12:24:16 +00:00
parent
bef2e3617d
commit
3a4f3c61d5
17 changed files with 196 additions and 16 deletions
|
|
@ -4,6 +4,7 @@
|
|||
use super::element::{parse_element, parse_element_content};
|
||||
use super::prelude::*;
|
||||
use super::r#type::parse_struct_declaration;
|
||||
use crate::parser::r#type::parse_rustattr;
|
||||
|
||||
#[cfg_attr(test, parser_test)]
|
||||
/// ```test,Document
|
||||
|
|
@ -45,6 +46,35 @@ pub fn parse_document(p: &mut impl Parser) -> bool {
|
|||
break;
|
||||
}
|
||||
}
|
||||
"@" if p.nth(1).as_str() == "rust-attr" => {
|
||||
let mut is_export = false;
|
||||
let mut i = 0;
|
||||
loop {
|
||||
let value = p.nth(i);
|
||||
if value.as_str() == ")" && p.nth(i + 1).as_str() == "export" {
|
||||
is_export = true;
|
||||
break;
|
||||
} else if (value.as_str() == ")"
|
||||
&& p.nth(i + 1).as_str() != "struct"
|
||||
&& p.nth(i + 1).as_str() != "export"
|
||||
&& p.nth(i + 1).as_str() != ")")
|
||||
|| (value.as_str() == ")" && p.nth(i + 1).as_str() == "struct")
|
||||
{
|
||||
break;
|
||||
}
|
||||
i += 1;
|
||||
}
|
||||
if is_export {
|
||||
let mut p = p.start_node(SyntaxKind::ExportsList);
|
||||
if !parse_rustattr(&mut *p) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if !parse_rustattr(&mut *p) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
if !parse_component(&mut *p) {
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue