labels: tighten labels regexp
This commit is contained in:
@ -51,16 +51,16 @@ Mu::Labels::validate_label(const std::string &label)
|
|||||||
|
|
||||||
if (::iscntrl(uc))
|
if (::iscntrl(uc))
|
||||||
return Err(Error{Error::Code::InvalidArgument,
|
return Err(Error{Error::Code::InvalidArgument,
|
||||||
"control character {} is not allowed",
|
"control character {} not allowed in label",
|
||||||
static_cast<int>(uc)});
|
static_cast<int>(uc)});
|
||||||
if (::isblank(uc))
|
if (::isblank(uc))
|
||||||
return Err(Error{Error::Code::InvalidArgument,
|
return Err(Error{Error::Code::InvalidArgument,
|
||||||
"blank character {} is not allowed",
|
"blank character {} not allowed in label",
|
||||||
static_cast<int>(uc)});
|
static_cast<int>(uc)});
|
||||||
if (uc == '"' || uc == '\'' || uc == '`' ||
|
if (uc == '"' || uc == '\'' || uc == '`' || uc == ',' ||
|
||||||
uc == '\\' || uc == '/' || uc == '$')
|
uc == '\\' || uc == '/' || uc == '$')
|
||||||
return Err(Error{Error::Code::InvalidArgument,
|
return Err(Error{Error::Code::InvalidArgument,
|
||||||
"character '{}' is not allowed", uc});
|
"character '{}' not allowed in label", uc});
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok();
|
return Ok();
|
||||||
@ -217,11 +217,14 @@ test_validate_label()
|
|||||||
g_assert_true(!!validate_label("@raven+king"));
|
g_assert_true(!!validate_label("@raven+king"));
|
||||||
g_assert_true(!!validate_label("operation:mindcrime"));
|
g_assert_true(!!validate_label("operation:mindcrime"));
|
||||||
g_assert_true(!!validate_label("😨"));
|
g_assert_true(!!validate_label("😨"));
|
||||||
|
g_assert_true(!!validate_label("foo%bar+1"));
|
||||||
|
|
||||||
g_assert_false(!!validate_label("norrell strange"));
|
g_assert_false(!!validate_label("norrell strange"));
|
||||||
g_assert_false(!!validate_label(""));
|
g_assert_false(!!validate_label(""));
|
||||||
g_assert_false(!!validate_label("+"));
|
g_assert_false(!!validate_label("+"));
|
||||||
g_assert_false(!!validate_label("-"));
|
g_assert_false(!!validate_label("-"));
|
||||||
|
g_assert_false(!!validate_label("foo$bar"));
|
||||||
|
g_assert_false(!!validate_label("foo,bar"));
|
||||||
g_assert_false(!!validate_label("foo`bar"));
|
g_assert_false(!!validate_label("foo`bar"));
|
||||||
g_assert_false(!!validate_label("\"quoted\""));
|
g_assert_false(!!validate_label("\"quoted\""));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,8 +119,8 @@ See *EXPORT FORMAT* below for details on the format.
|
|||||||
*mu* does not wish to limit your creativity, but nevertheless puts a few
|
*mu* does not wish to limit your creativity, but nevertheless puts a few
|
||||||
restrictions on what is accepted as a label.
|
restrictions on what is accepted as a label.
|
||||||
|
|
||||||
- a *valid label character* is any character that is not a control-character, a
|
- a *valid label character* is any character that is not a control-character, not
|
||||||
blank, or any of *'*, *"*, *`*, */*, *\*, *$*
|
a blank, nor anything matching the regular expression ~[^\"$',/\\`]~
|
||||||
- a *valid label* consists of one or more valid label characters, the first of
|
- a *valid label* consists of one or more valid label characters, the first of
|
||||||
which must *not* be either *+* or *-*
|
which must *not* be either *+* or *-*
|
||||||
|
|
||||||
@ -165,14 +165,16 @@ it is recognized as a single parameter.
|
|||||||
|
|
||||||
Remove the label "planet" and add the label "dwarf-planet" to all messages that
|
Remove the label "planet" and add the label "dwarf-planet" to all messages that
|
||||||
have "pluto" in their subject:
|
have "pluto" in their subject:
|
||||||
#+begin_export
|
|
||||||
|
#+begin_example
|
||||||
$ mu labels update "subject:pluto" --labels -planet,+dwarf-planet
|
$ mu labels update "subject:pluto" --labels -planet,+dwarf-planet
|
||||||
#+end_export
|
#+end_example
|
||||||
|
|
||||||
Clear all labels from messages with the label "boring":
|
Clear all labels from messages with the label "boring":
|
||||||
#+begin_export
|
|
||||||
|
#+begin_example
|
||||||
$ mu labels clear "label:boring"
|
$ mu labels clear "label:boring"
|
||||||
#+end_export
|
#+end_example
|
||||||
|
|
||||||
#+include: "prefooter.inc" :minlevel 1
|
#+include: "prefooter.inc" :minlevel 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user