AsciiDoc export: Escape '[' and ']' in URIs.
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
tastytea 2019-06-26 19:55:05 +02:00
parent 861232ab38
commit 622ccb9a03
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
3 changed files with 14 additions and 3 deletions

View File

@ -1,6 +1,6 @@
cmake_minimum_required (VERSION 3.2)
project(remwharead
VERSION 0.4.1
VERSION 0.4.2
LANGUAGES CXX
)

View File

@ -57,7 +57,7 @@ void Export::AsciiDoc::print() const
}
_out << "[[dt_" << timepoint_to_string(entry.datetime) << "]]\n";
_out << "* link:" << entry.uri;
_out << "* link:" << replace_in_uri(entry.uri);
if (!entry.title.empty())
{
_out << '[' << replace_in_title(entry.title) << ']';
@ -71,7 +71,8 @@ void Export::AsciiDoc::print() const
_out << '_' << get_time(entry).substr(0, 5) << '_';
if (!entry.archive_uri.empty())
{
_out << " (link:" << entry.archive_uri << "[archived version])";
_out << " (link:" << replace_in_uri(entry.archive_uri)
<< "[archived version])";
}
bool separator = false;
@ -167,6 +168,14 @@ const string Export::AsciiDoc::replace_in_title(const string &text) const
return replace(text, {{ "]", "\\]" }});
}
const string Export::AsciiDoc::replace_in_uri(const string &text) const
{
return replace(text,
{
{ "[", "%5B" }, { "]", "%5D" }
});
}
void Export::AsciiDoc::print_tags(const tagmap &tags) const
{
_out << "== Tags\n\n";

View File

@ -43,6 +43,8 @@ namespace Export
const string replace_in_tag(const string &text) const;
//! Replaces characters in title that asciidoctor doesn't like.
const string replace_in_title(const string &text) const;
//! Replaces characters in URI that asciidoctor doesn't like.
const string replace_in_uri(const string &text) const;
void print_tags(const tagmap &tags) const;
const string get_day(const Database::entry &entry) const;
const string get_time(const Database::entry &entry) const;