Extend task list parsing (#99)
* Handle task lists that start with * or + symbol * Handle task lists that start with numbers * Limit numbers valid for task lists to 9 digits
This commit is contained in:
parent
66bfad16ca
commit
1d3255ed59
@ -23,7 +23,7 @@ import java.util.regex.Pattern;
|
|||||||
@SuppressWarnings("WeakerAccess")
|
@SuppressWarnings("WeakerAccess")
|
||||||
class TaskListBlockParser extends AbstractBlockParser {
|
class TaskListBlockParser extends AbstractBlockParser {
|
||||||
|
|
||||||
private static final Pattern PATTERN = Pattern.compile("\\s*-\\s+\\[(x|X|\\s)\\]\\s+(.*)");
|
private static final Pattern PATTERN = Pattern.compile("\\s*([-*+]|\\d{1,9}[.)])\\s+\\[(x|X|\\s)]\\s+(.*)");
|
||||||
|
|
||||||
private final TaskListBlock block = new TaskListBlock();
|
private final TaskListBlock block = new TaskListBlock();
|
||||||
|
|
||||||
@ -88,9 +88,9 @@ class TaskListBlockParser extends AbstractBlockParser {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
listItem = new TaskListItem()
|
listItem = new TaskListItem()
|
||||||
.done(isDone(matcher.group(1)))
|
.done(isDone(matcher.group(2)))
|
||||||
.indent(item.indent / 2);
|
.indent(item.indent / 2);
|
||||||
inlineParser.parse(matcher.group(2), listItem);
|
inlineParser.parse(matcher.group(3), listItem);
|
||||||
block.appendChild(listItem);
|
block.appendChild(listItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
57
markwon/src/test/resources/tests/task-list.yaml
Normal file
57
markwon/src/test/resources/tests/task-list.yaml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
input: |-
|
||||||
|
- [ ] First
|
||||||
|
- [x] Second
|
||||||
|
- [X] Third
|
||||||
|
* [ ] First star
|
||||||
|
* [x] Second star
|
||||||
|
* [X] Third star
|
||||||
|
+ [ ] First plus
|
||||||
|
+ [x] Second plus
|
||||||
|
+ [X] Third plus
|
||||||
|
1. [x] Number with dot
|
||||||
|
3) [ ] Number
|
||||||
|
|
||||||
|
output:
|
||||||
|
- task-list: "First"
|
||||||
|
blockIdent: 1
|
||||||
|
done: false
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Second"
|
||||||
|
blockIdent: 1
|
||||||
|
done: true
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Third"
|
||||||
|
blockIdent: 1
|
||||||
|
done: true
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "First star"
|
||||||
|
blockIdent: 1
|
||||||
|
done: false
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Second star"
|
||||||
|
blockIdent: 1
|
||||||
|
done: true
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Third star"
|
||||||
|
blockIdent: 1
|
||||||
|
done: true
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "First plus"
|
||||||
|
blockIdent: 1
|
||||||
|
done: false
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Second plus"
|
||||||
|
blockIdent: 1
|
||||||
|
done: true
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Third plus"
|
||||||
|
blockIdent: 1
|
||||||
|
done: true
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Number with dot"
|
||||||
|
blockIdent: 1
|
||||||
|
done: true
|
||||||
|
- text: "\n"
|
||||||
|
- task-list: "Number"
|
||||||
|
blockIdent: 1
|
||||||
|
done: false
|
Loading…
x
Reference in New Issue
Block a user