summaryrefslogtreecommitdiff
path: root/crates/typst-syntax
diff options
context:
space:
mode:
authorPgBiel <9021226+PgBiel@users.noreply.github.com>2024-06-10 19:03:38 -0300
committerPgBiel <9021226+PgBiel@users.noreply.github.com>2024-06-26 12:17:53 -0300
commit3e69560267f3dbe57e3bacd27e62caeee2bd68b6 (patch)
tree3ef8b453631d0839a13e60c85d2ed9a3eaaee0c9 /crates/typst-syntax
parent9f9ba7ba5a6442853a735e4d3454fc664bae2e66 (diff)
initial decorator parsing in markup
Diffstat (limited to 'crates/typst-syntax')
-rw-r--r--crates/typst-syntax/src/parser.rs14
-rw-r--r--crates/typst-syntax/src/set.rs1
2 files changed, 15 insertions, 0 deletions
diff --git a/crates/typst-syntax/src/parser.rs b/crates/typst-syntax/src/parser.rs
index 7e7eeea5..54417e01 100644
--- a/crates/typst-syntax/src/parser.rs
+++ b/crates/typst-syntax/src/parser.rs
@@ -121,6 +121,7 @@ fn markup_expr(p: &mut Parser, at_start: &mut bool) {
| SyntaxKind::Link
| SyntaxKind::Label => p.eat(),
+ SyntaxKind::DecoratorMarker => decorator(p),
SyntaxKind::Hash => embedded_code_expr(p),
SyntaxKind::Star => strong(p),
SyntaxKind::Underscore => emph(p),
@@ -146,6 +147,19 @@ fn markup_expr(p: &mut Parser, at_start: &mut bool) {
*at_start = false;
}
+fn decorator(p: &mut Parser) {
+ let m = p.marker();
+ p.enter(LexMode::Decorator);
+ p.assert(SyntaxKind::DecoratorMarker);
+
+ while !p.end() {
+ p.eat();
+ }
+
+ p.exit();
+ p.wrap(m, SyntaxKind::Decorator);
+}
+
/// Parses strong content: `*Strong*`.
fn strong(p: &mut Parser) {
const END: SyntaxSet = SyntaxSet::new()
diff --git a/crates/typst-syntax/src/set.rs b/crates/typst-syntax/src/set.rs
index 39e64651..b5b19b46 100644
--- a/crates/typst-syntax/src/set.rs
+++ b/crates/typst-syntax/src/set.rs
@@ -54,6 +54,7 @@ pub const MARKUP_EXPR: SyntaxSet = SyntaxSet::new()
.add(SyntaxKind::Parbreak)
.add(SyntaxKind::LineComment)
.add(SyntaxKind::BlockComment)
+ .add(SyntaxKind::DecoratorMarker)
.add(SyntaxKind::Text)
.add(SyntaxKind::Linebreak)
.add(SyntaxKind::Escape)