bool unclosed = false;
string par2 = par;
// braces are allowed
- if (prefixIs(par, "{") && suffixIs(par, "}") && !suffixIs(par, "\\}"))
+ if (prefixIs(par, "{") && suffixIs(par, "}") && !suffixIs(par, "\\}"))
par2 = par.substr(1, par.size() - 2);
// check for unmatched braces
--braces;
}
unclosed = braces != 0;
-
+
switch (type_) {
case ALL:
"[97]VRML\nXML\nXSLT";
+/// Return language allowed in the GUI without dialect and proper casing
+string const languageonly(string const & lang)
+{
+ string const locase = ascii_lowercase(trim(lang, "{}"));
+ string const all_languages = ascii_lowercase(allowed_languages) + "\n";
+ string language = (lang.at(0) == '[') ? locase + "\n"
+ : string("]") + locase + "\n";
+ size_t i = all_languages.find(language);
+ if (i == string::npos && lang.at(0) != '[') {
+ language[0] = '\n';
+ i = all_languages.find(language);
+ }
+ if (i == string::npos)
+ return lang;
+ if (all_languages.at(i) == '[')
+ i = all_languages.find(']', i);
+ if (i == string::npos)
+ return lang;
+ size_t j = all_languages.find('\n', i + 1);
+ if (j == string::npos)
+ return lang;
+ return string(allowed_languages).substr(i + 1, j - i - 1);
+}
+
+
/// ListingsParam Validator.
/// This class is aimed to be a singleton which is instantiated in
/// \c InsetListingsParams::addParam().
_("Available listing parameters are %1$s"), from_ascii(param_names));
else
return bformat(
- _("Available listings parameters containing string \"%1$s\" are %2$s"),
+ _("Available listings parameters containing string \"%1$s\" are %2$s"),
from_utf8(suffix), from_utf8(param_names));
}
-
+
// locate name in parameter table
ListingsParams::const_iterator it = all_params_[p].find(name);
if (it != all_params_[p].end()) {
return false;
}
-} // namespace anon.
+} // namespace
// define a global ParValidator
ParValidator * par_validator = 0;
int InsetListingsParams::package_ = 0;
InsetListingsParams::InsetListingsParams()
- : inline_(false), params_(), status_(InsetCollapsable::Open)
+ : inline_(false), params_(), status_(InsetCollapsible::Open)
{
}
InsetListingsParams::InsetListingsParams(string const & par, bool in,
- InsetCollapsable::CollapseStatus s)
+ InsetCollapsible::CollapseStatus s)
: inline_(in), params_(), status_(s)
{
// this will activate parameter validation.
void InsetListingsParams::read(Lexer & lex)
{
lex >> inline_;
- int s = InsetCollapsable::Collapsed;
+ int s = InsetCollapsible::Collapsed;
lex >> s;
- status_ = static_cast<InsetCollapsable::CollapseStatus>(s);
+ status_ = static_cast<InsetCollapsible::CollapseStatus>(s);
string par;
lex >> par;
fromEncodedString(par);
}
-void InsetListingsParams::addParam(string const & key,
- string const & value, bool replace)
+void InsetListingsParams::addParam(string const & key,
+ string const & val, bool replace)
{
if (key.empty())
return;
+ bool const is_minted_language = minted() && key == "language";
+ string const value = (is_minted_language && !val.empty())
+ ? languageonly(val) : val;
// duplicate parameters!
string keyname = key;
if (!replace && hasParam(key))
has_special_char = true;
break;
}
- if (has_special_char)
+ if (has_special_char && !is_minted_language)
params_.push_back(make_pair(keyname, "{" + value + "}"));
else
params_.push_back(make_pair(keyname, value));
} else if (par[i] == '{' && i > 0 && par[i-1] != '\\')
// don't count a brace in first position
++braces;
- else if (par[i] == '}' && i != par.size() - 1
+ else if (par[i] == '}' && i != par.size() - 1
&& (i == 0 || (i > 0 && par[i-1] != '\\')))
--braces;