mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-26 19:47:20 +00:00
Block Quotes - fix parsing error with spaces before reEndString (#8186)
* fix parsing error with spaces before reEndString, update docs to clarify block mode inside block quotes. * additional advanced example * oops, convert spaces back to tabs. * reset indentation * final tabs * missed some * wikitext classes are appended to other leading wikitext, no need to skip whitespace here.
This commit is contained in:
parent
0b475628de
commit
f1299120a6
@ -3,30 +3,7 @@ title: $:/core/modules/parsers/wikiparser/rules/quoteblock.js
|
||||
type: application/javascript
|
||||
module-type: wikirule
|
||||
|
||||
Wiki text rule for quote blocks. For example:
|
||||
|
||||
```
|
||||
<<<.optionalClass(es) optional cited from
|
||||
a quote
|
||||
<<<
|
||||
|
||||
<<<.optionalClass(es)
|
||||
a quote
|
||||
<<< optional cited from
|
||||
```
|
||||
|
||||
Quotes can be quoted by putting more <s
|
||||
|
||||
```
|
||||
<<<
|
||||
Quote Level 1
|
||||
|
||||
<<<<
|
||||
QuoteLevel 2
|
||||
<<<<
|
||||
|
||||
<<<
|
||||
```
|
||||
Wiki text rule for quote blocks.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
@ -47,16 +24,15 @@ exports.init = function(parser) {
|
||||
exports.parse = function() {
|
||||
var classes = ["tc-quote"];
|
||||
// Get all the details of the match
|
||||
var reEndString = "^" + this.match[1] + "(?!<)";
|
||||
var reEndString = "^\\s*" + this.match[1] + "(?!<)";
|
||||
// Move past the <s
|
||||
this.parser.pos = this.matchRegExp.lastIndex;
|
||||
|
||||
// Parse any classes, whitespace and then the optional cite itself
|
||||
classes.push.apply(classes, this.parser.parseClasses());
|
||||
this.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});
|
||||
var cite = this.parser.parseInlineRun(/(\r?\n)/mg);
|
||||
// before handling the cite, parse the body of the quote
|
||||
var tree= this.parser.parseBlocks(reEndString);
|
||||
var tree = this.parser.parseBlocks(reEndString);
|
||||
// If we got a cite, put it before the text
|
||||
if(cite.length > 0) {
|
||||
tree.unshift({
|
||||
|
@ -1,6 +1,6 @@
|
||||
caption: Block Quotes
|
||||
created: 20131206154636572
|
||||
modified: 20170417165145317
|
||||
modified: 20240512000910702
|
||||
tags: WikiText
|
||||
title: Block Quotes in WikiText
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -72,3 +72,34 @@ You can also mix block quotes with other list items. For example:
|
||||
**> Another quote
|
||||
* List Three
|
||||
">>
|
||||
|
||||
! Advanced Wikitext and Block Quotes
|
||||
You can also mix block quotes with paragraphs and other block wikitext. Be mindful of block mode - if other quoted content follows a paragraph, end it with a blank line. The final paragraph in the quote does not need to end with a blank line. If using indentation, make sure __not to indent the blank lines__. The parser will interpret this as additional inline content and not return to block mode. For example:
|
||||
|
||||
<<wikitext-example src:'<<< Mixing Block Quotes with Inline Wikitext
|
||||
A paragraph appears before other //wikitext//, which needs to end with a blank line.
|
||||
|
||||
* List One
|
||||
** List Two
|
||||
**> A quote
|
||||
"""
|
||||
A poem
|
||||
with line beaks
|
||||
needs to have
|
||||
a blank line after
|
||||
the final quotes
|
||||
if followed
|
||||
by other content
|
||||
"""
|
||||
|
||||
<<<< Deep Block Quote
|
||||
A paragraph before other //wikitext//, which ends with a blank line.
|
||||
|
||||
! A Header
|
||||
Another paragraph, which needs to end with a blank line.
|
||||
|
||||
!! Sub Header
|
||||
A final paragraph, which __does not__ need to end with a blank line as the Block Quote ends.
|
||||
<<<<
|
||||
<<<
|
||||
'>>
|
@ -1,9 +1,9 @@
|
||||
caption: Hard Linebreaks
|
||||
created: 20131214165710101
|
||||
modified: 20131214170106553
|
||||
modified: 20240512001649319
|
||||
tags: WikiText
|
||||
title: Hard Linebreaks in WikiText
|
||||
type: text/vnd.tiddlywiki
|
||||
caption: Hard Linebreaks
|
||||
|
||||
The usual handling of [[paragraphs in wikitext|Paragraphs in WikiText]] causes single line breaks to be ignored, and double linebreaks to be interpreted as the end of a paragraph.
|
||||
|
||||
@ -15,4 +15,8 @@ and this is a new line
|
||||
while this is yet another line
|
||||
and this is the final one
|
||||
apart from this one
|
||||
"""'>>
|
||||
"""
|
||||
|
||||
'>>
|
||||
|
||||
<<.tip 'Note: <strong>Hard Linebreaks in ~WikiText</strong> require an extra blank line after the trailing `"""` before the parser will return to [[block mode|Block Mode WikiText]].'>>.
|
@ -1,6 +1,6 @@
|
||||
caption: block parser mode
|
||||
created: 20220110234234616
|
||||
modified: 20220122182842032
|
||||
modified: 20240512001555383
|
||||
tags: [[WikiText Parser Modes]]
|
||||
title: Block Mode WikiText
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -28,7 +28,7 @@ Common characteristics of such block mode WikiText:
|
||||
The above WikiText types are only recognised in ''block mode''. However, the text <<.em enclosed>> by most of them will be parsed in ''inline mode'' ([[Block Quotes in WikiText]] and [[Styles and Classes in WikiText]] are the two exceptions in which the parser will continue in ''block mode''). While in ''inline mode'' the parser may encounter something which moves it to ''block mode'' (see [[WikiText parser mode transitions]]).
|
||||
|
||||
At the end of the terminating line, the parser will return to ''block mode''.
|
||||
<<.tip 'Note: [[Hard Linebreaks in WikiText]] require an extra blank line after the trailing `"""` before the parser will return to <b>block mode</b>'>>.
|
||||
<<.tip 'Note: [[Hard Linebreaks in WikiText]] require an extra blank line after the trailing `"""` before the parser will return to <strong>block mode</strong>.'>>
|
||||
|
||||
If the punctuation for the above types of WikiText is encountered while the parser is in ''inline mode'', it will be //ignored// and output as-is.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user