mirror of
https://github.com/typst/typst
synced 2025-05-14 17:15:28 +08:00
Change indent requirements to allow alignment
Previously the following wouldn't work correctly because "Fourth" would have been a child of "Third". ``` 3. Third ⎵. Fourth ```
This commit is contained in:
parent
4b2c6334d0
commit
00be5d36c4
@ -34,7 +34,7 @@ fn markup(p: &mut Parser) -> Markup {
|
|||||||
markup_while(p, true, &mut |_| true)
|
markup_while(p, true, &mut |_| true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse markup that stays right of the given column.
|
/// Parse markup that stays equal or right of the given column.
|
||||||
fn markup_indented(p: &mut Parser, column: usize) -> Markup {
|
fn markup_indented(p: &mut Parser, column: usize) -> Markup {
|
||||||
p.eat_while(|t| match t {
|
p.eat_while(|t| match t {
|
||||||
Token::Space(n) => n == 0,
|
Token::Space(n) => n == 0,
|
||||||
@ -43,7 +43,7 @@ fn markup_indented(p: &mut Parser, column: usize) -> Markup {
|
|||||||
});
|
});
|
||||||
|
|
||||||
markup_while(p, false, &mut |p| match p.peek() {
|
markup_while(p, false, &mut |p| match p.peek() {
|
||||||
Some(Token::Space(n)) if n >= 1 => p.column(p.next_end()) > column,
|
Some(Token::Space(n)) if n >= 1 => p.column(p.next_end()) >= column,
|
||||||
_ => true,
|
_ => true,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -175,7 +175,6 @@ fn raw(p: &mut Parser, token: RawToken) -> MarkupNode {
|
|||||||
/// Parse a heading.
|
/// Parse a heading.
|
||||||
fn heading(p: &mut Parser) -> MarkupNode {
|
fn heading(p: &mut Parser) -> MarkupNode {
|
||||||
let start = p.next_start();
|
let start = p.next_start();
|
||||||
let column = p.column(start);
|
|
||||||
p.eat_assert(Token::Eq);
|
p.eat_assert(Token::Eq);
|
||||||
|
|
||||||
// Count depth.
|
// Count depth.
|
||||||
@ -188,6 +187,7 @@ fn heading(p: &mut Parser) -> MarkupNode {
|
|||||||
return MarkupNode::Text(p.get(start .. p.prev_end()).into());
|
return MarkupNode::Text(p.get(start .. p.prev_end()).into());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let column = p.column(p.prev_end());
|
||||||
let body = markup_indented(p, column);
|
let body = markup_indented(p, column);
|
||||||
MarkupNode::Heading(Box::new(HeadingNode {
|
MarkupNode::Heading(Box::new(HeadingNode {
|
||||||
span: p.span_from(start),
|
span: p.span_from(start),
|
||||||
@ -199,8 +199,8 @@ fn heading(p: &mut Parser) -> MarkupNode {
|
|||||||
/// Parse a single list item.
|
/// Parse a single list item.
|
||||||
fn list_node(p: &mut Parser) -> MarkupNode {
|
fn list_node(p: &mut Parser) -> MarkupNode {
|
||||||
let start = p.next_start();
|
let start = p.next_start();
|
||||||
let column = p.column(start);
|
|
||||||
p.eat_assert(Token::Hyph);
|
p.eat_assert(Token::Hyph);
|
||||||
|
let column = p.column(p.prev_end());
|
||||||
let body = markup_indented(p, column);
|
let body = markup_indented(p, column);
|
||||||
MarkupNode::List(Box::new(ListNode { span: p.span_from(start), body }))
|
MarkupNode::List(Box::new(ListNode { span: p.span_from(start), body }))
|
||||||
}
|
}
|
||||||
@ -208,8 +208,8 @@ fn list_node(p: &mut Parser) -> MarkupNode {
|
|||||||
/// Parse a single enum item.
|
/// Parse a single enum item.
|
||||||
fn enum_node(p: &mut Parser, number: Option<usize>) -> MarkupNode {
|
fn enum_node(p: &mut Parser, number: Option<usize>) -> MarkupNode {
|
||||||
let start = p.next_start();
|
let start = p.next_start();
|
||||||
let column = p.column(start);
|
|
||||||
p.eat_assert(Token::Numbering(number));
|
p.eat_assert(Token::Numbering(number));
|
||||||
|
let column = p.column(p.prev_end());
|
||||||
let body = markup_indented(p, column);
|
let body = markup_indented(p, column);
|
||||||
MarkupNode::Enum(Box::new(EnumNode {
|
MarkupNode::Enum(Box::new(EnumNode {
|
||||||
span: p.span_from(start),
|
span: p.span_from(start),
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 4.0 KiB |
@ -9,3 +9,8 @@
|
|||||||
1. First.
|
1. First.
|
||||||
2. Second.
|
2. Second.
|
||||||
1. Back to first.
|
1. Back to first.
|
||||||
|
|
||||||
|
---
|
||||||
|
2. Second
|
||||||
|
. First
|
||||||
|
. Indented
|
||||||
|
Loading…
x
Reference in New Issue
Block a user