#include "support/lassert.h"
#include "support/lstrings.h"
#include "support/Messages.h"
-#include "support/regex.h"
#include "support/textutils.h"
}
-namespace {
-
-docstring const i18npreamble(Language const * lang, Encoding const & enc,
- docstring const & templ, bool const polyglossia)
-{
- if (templ.empty())
- return templ;
-
- string preamble = polyglossia ?
- subst(to_utf8(templ), "$$lang", lang->polyglossia()) :
- subst(to_utf8(templ), "$$lang", lang->babel());
-
-#ifdef TEX2LYX
- // tex2lyx does not have getMessages()
- LASSERT(false, /**/);
- (void)enc;
-#else
- string const langenc = lang->encoding()->iconvName();
- string const texenc = lang->encoding()->latexName();
- string const bufenc = enc.iconvName();
- // First and second character of plane 15 (Private Use Area)
- string const s1 = "\xf3\xb0\x80\x80"; // U+F0000
- string const s2 = "\xf3\xb0\x80\x81"; // U+F0001
- // FIXME UNICODE
- // lyx::regex is not unicode-safe.
- // Should use QRegExp or (boost::u32regex, but that requires ICU)
- static regex const reg("_\\(([^\\)]+)\\)");
- smatch sub;
- while (regex_search(preamble, sub, reg)) {
- string const key = sub.str(1);
- docstring const name = lang->translateLayout(key);
- // Check whether name can be encoded in the buffer encoding
- bool encodable = true;
- for (size_t i = 0; i < name.size(); ++i) {
- if (enc.latexChar(name[i], true)[0] != name[i]) {
- encodable = false;
- break;
- }
- }
- string const translated = encodable ? to_utf8(name)
- : "\\inputencoding{" + texenc + "}"
- + s1 + langenc + s2 + to_utf8(name)
- + s1 + bufenc + s2;
- preamble = subst(preamble, sub.str(), translated);
- }
-#endif
- return from_utf8(preamble);
-}
-
-}
-
-
-docstring const Layout::langpreamble(Language const * lang,
- Encoding const & enc, bool const polyglossia) const
-{
- return i18npreamble(lang, enc, langpreamble_, polyglossia);
-}
-
-
-docstring const Layout::babelpreamble(Language const * lang,
- Encoding const & enc, bool const polyglossia) const
-{
- return i18npreamble(lang, enc, babelpreamble_, polyglossia);
-}
-
-
string const & Layout::htmltag() const
{
if (htmltag_.empty())
}
-docstring Layout::htmlstyle() const {
+docstring Layout::htmlstyle() const
+{
if (!htmlstyle_.empty() && !htmlforcecss_)
return htmlstyle_;
if (htmldefaultstyle_.empty())
d = from_ascii("lyx_");
else
d += '_';
- } else if (islower(c))
+ } else if (isLower(c))
d += c;
else
// this is slow, so do it only if necessary
namespace {
- string makeMarginValue(char const * side, double d) {
- ostringstream os;
- os << "margin-" << side << ": " << d << "ex;\n";
- return os.str();
- }
+
+string makeMarginValue(char const * side, double d)
+{
+ ostringstream os;
+ os << "margin-" << side << ": " << d << "ex;\n";
+ return os.str();
+}
+
}
-void Layout::makeDefaultCSS() const {
+void Layout::makeDefaultCSS() const
+{
// this never needs to be redone, since reloading layouts will
// wipe out what we did before.
if (!htmldefaultstyle_.empty())