TRUEFALSE, // accept 'true' or 'false'
INTEGER, // accept an integer
LENGTH, // accept a latex length
+ SKIP, // accept a skip or a length
ONEOF, // accept one of a few values
SUBSETOF // accept a string composed of given characters
};
};
+char const * allowed_skips = "\\smallskipamount,\\medskipamount,\\bigskipamount";
+
+
docstring ListingsParam::validate(string const & par) const
{
bool unclosed = false;
return _("Unbalanced braces!");
return docstring();
+ case SKIP:
+ if (par2.empty() && !onoff_) {
+ if (!hint_.empty())
+ return hint_;
+ else
+ return bformat(_("Please specify a LaTeX length expression or a skip amount (%1$s)"),
+ from_ascii(subst(allowed_skips, ",", ", ")));
+ }
+ if (!isValidLength(par2) && tokenPos(allowed_skips, ',', par2) == -1)
+ return _("Not a valid LaTeX length expression or skip amount.");
+ if (unclosed)
+ return _("Unbalanced braces!");
+ return docstring();
+
case ONEOF: {
if (par2.empty() && !onoff_) {
if (!hint_.empty())
all_params_["floatplacement"] =
ListingsParam("tbp", false, SUBSETOF, "tbp", empty_hint);
all_params_["aboveskip"] =
- ListingsParam("\\medskipamount", false, LENGTH, "", empty_hint);
+ ListingsParam("\\medskipamount", false, SKIP, "", empty_hint);
all_params_["belowskip"] =
- ListingsParam("\\medskipamount", false, LENGTH, "", empty_hint);
+ ListingsParam("\\medskipamount", false, SKIP, "", empty_hint);
all_params_["lineskip"] =
- ListingsParam("", false, LENGTH, "", empty_hint);
+ ListingsParam("", false, SKIP, "", empty_hint);
all_params_["boxpos"] =
ListingsParam("", false, SUBSETOF, "bct", empty_hint);
all_params_["print"] =
all_params_["captionpos"] =
ListingsParam("", false, SUBSETOF, "tb", empty_hint);
all_params_["abovecaptionskip"] =
- ListingsParam("", false, LENGTH, "", empty_hint);
+ ListingsParam("", false, SKIP, "", empty_hint);
all_params_["belowcaptionskip"] =
- ListingsParam("", false, LENGTH, "", empty_hint);
+ ListingsParam("", false, SKIP, "", empty_hint);
all_params_["linewidth"] =
ListingsParam("", false, LENGTH, "", empty_hint);
all_params_["xleftmargin"] =
string InsetListingsParams::getParamValue(string const & param) const
{
- // is this parameter defined?
- string par = (hasParam(param)) ? getValue(param) : string();
+ string par = getValue(param);
if (prefixIs(par, "{") && suffixIs(par, "}"))
return par.substr(1, par.size() - 2);
else