doc: escape braces in AsciiDoc

This commit fixes a bug where AsciiDoc would drop any line containing a
'{foo}' because it interpreted it as an undefined attribute reference:

> Simple attribute references take the form {<name>}. If the attribute name
> is defined its text value is substituted otherwise the line containing the
> reference is dropped from the output.

See: https://www.methods.co.nz/asciidoc/chunked/ch30.html

We fix this by simply replacing all occurrences of '{' and '}' with
their escaped forms: '&#123;' and '&#125;'.

Fixes #1101
This commit is contained in:
Andrew Gallant 2018-11-06 06:57:16 -05:00
parent fb62266620
commit b41e596327
No known key found for this signature in database
GPG Key ID: B2E3A4923F8B0D44
2 changed files with 11 additions and 6 deletions

View File

@ -168,7 +168,12 @@ fn formatted_arg(arg: &RGArg) -> io::Result<String> {
} }
fn formatted_doc_txt(arg: &RGArg) -> io::Result<String> { fn formatted_doc_txt(arg: &RGArg) -> io::Result<String> {
let paragraphs: Vec<&str> = arg.doc_long.split("\n\n").collect(); let paragraphs: Vec<String> = arg.doc_long
.replace("{", "&#123;")
.replace("}", r"&#125;")
.split("\n\n")
.map(|s| s.to_string())
.collect();
if paragraphs.is_empty() { if paragraphs.is_empty() {
return Err(ioerr(format!("missing docs for --{}", arg.name))); return Err(ioerr(format!("missing docs for --{}", arg.name)));
} }

View File

@ -788,17 +788,17 @@ to one of eight choices: red, blue, green, cyan, magenta, yellow, white and
black. Styles are limited to nobold, bold, nointense, intense, nounderline black. Styles are limited to nobold, bold, nointense, intense, nounderline
or underline. or underline.
The format of the flag is `{type}:{attribute}:{value}`. `{type}` should be The format of the flag is '{type}:{attribute}:{value}'. '{type}' should be
one of path, line, column or match. `{attribute}` can be fg, bg or style. one of path, line, column or match. '{attribute}' can be fg, bg or style.
`{value}` is either a color (for fg and bg) or a text style. A special format, '{value}' is either a color (for fg and bg) or a text style. A special format,
`{type}:none`, will clear all color settings for `{type}`. '{type}:none', will clear all color settings for '{type}'.
For example, the following command will change the match color to magenta and For example, the following command will change the match color to magenta and
the background color for line numbers to yellow: the background color for line numbers to yellow:
rg --colors 'match:fg:magenta' --colors 'line:bg:yellow' foo. rg --colors 'match:fg:magenta' --colors 'line:bg:yellow' foo.
Extended colors can be used for `{value}` when the terminal supports ANSI color Extended colors can be used for '{value}' when the terminal supports ANSI color
sequences. These are specified as either 'x' (256-color) or 'x,x,x' (24-bit sequences. These are specified as either 'x' (256-color) or 'x,x,x' (24-bit
truecolor) where x is a number between 0 and 255 inclusive. x may be given as truecolor) where x is a number between 0 and 255 inclusive. x may be given as
a normal decimal number or a hexadecimal number, which is prefixed by `0x`. a normal decimal number or a hexadecimal number, which is prefixed by `0x`.