input: argument custom quotes: use ` instead of !

Custom quotes were added in 4f129a3e and began with !, however, this
required quoting "!reverse" (used for the cycle-values command), which
is inconvenient, and was not taken into account when ! was chosen for
custom quotes. Also, ` is more natural for quoting than !.

This does break backward compatibility with the earlier form of custom
quotes, but at least we didn't make a release yet since custom quotes
were added (the last release - 0.33[.1] doesn't support it).
This commit is contained in:
Avi Halachmi (:avih) 2021-07-28 11:09:30 +03:00 committed by avih
parent 3f0e8bd506
commit 73c9509720
2 changed files with 7 additions and 7 deletions

View File

@ -162,7 +162,7 @@ a number of other places.
|
| ``<command> ::= [<prefixes>] <command_name> (<argument>)*``
| ``<argument> ::= (<unquoted> | " <double_quoted> " | !X <custom_quoted> X!)``
| ``<argument> ::= (<unquoted> | " <double_quoted> " | `X <custom_quoted> X`)``
``command_name`` is an unquoted string with the command name itself. See
`List of Input Commands`_ for a list.
@ -171,10 +171,10 @@ Arguments are separated by whitespaces even if the command expects only one
argument. Arguments with whitespaces or other special characters must be quoted,
or the command cannot be parsed correctly.
Double quoted arguments start and end with ``"``. Custom quotes start with ``!``
(exclamation mark) followed by any ASCII character, and end in the same pair in
reverse order, e.g. ``!'foo'!`` or ``!-bar-!``. The final pair sequence is not
allowed inside the string - in these examples ``'!`` and ``-!`` respectively.
Double quoted arguments start and end with ``"``. Custom quotes start with `````
(back-quote) followed by any ASCII character, and end in the same pair in
reverse order, e.g. ```-foo-``` or ````bar````. The final pair sequence is not
allowed inside the string - in these examples ``-``` and `````` respectively.
Custom quotes take their content literally, while inside double quotes
JSON/C-style escaping can be used. JSON escapes according to RFC 8259, minus

View File

@ -341,8 +341,8 @@ static int pctx_read_token(struct parse_ctx *ctx, bstr *out)
}
return 1;
}
if (ctx->start.len > 1 && bstr_eatstart0(&ctx->str, "!")) {
char endquote[2] = {ctx->str.start[0], '!'};
if (ctx->start.len > 1 && bstr_eatstart0(&ctx->str, "`")) {
char endquote[2] = {ctx->str.start[0], '`'};
ctx->str = bstr_cut(ctx->str, 1);
int next = bstr_find(ctx->str, (bstr){endquote, 2});
if (next < 0) {