#include <config.h>
#include "Layout.h"
+#include "Encoding.h"
#include "FontInfo.h"
#include "Language.h"
#include "Lexer.h"
#include "support/lassert.h"
#include "support/lstrings.h"
#include "support/Messages.h"
-#include "support/regex.h"
#include "support/textutils.h"
LT_COPYSTYLE,
LT_DEPENDSON,
LT_OBSOLETEDBY,
- //LT_EMPTY,
LT_END,
- //LT_ENVIRONMENT_DEFAULT,
- //LT_FANCYHDR,
- //LT_FIRST_COUNTER,
LT_FONT,
LT_FREE_SPACING,
LT_PASS_THRU,
LT_PARBREAK_IS_NEWLINE,
- //LT_HEADINGS,
LT_ITEMSEP,
LT_KEEPEMPTY,
LT_LABEL_BOTTOMSEP,
LT_PARINDENT,
LT_PARSEP,
LT_PARSKIP,
- //LT_PLAIN,
LT_PREAMBLE,
LT_LANGPREAMBLE,
LT_BABELPREAMBLE,
bool error = false;
bool finished = false;
lex.pushTable(layoutTags);
+
// parse style section
while (!finished && lex.isOK() && !error) {
int le = lex.lex();
case Lexer::LEX_FEOF:
continue;
- case Lexer::LEX_UNDEF: // parse error
+ case Lexer::LEX_UNDEF:
+ // parse error
lex.printError("Unknown layout tag `$$Token'");
error = true;
continue;
break;
}
switch (static_cast<LayoutTags>(le)) {
- case LT_END: // end of structure
+ case LT_END:
finished = true;
break;
lex >> category_;
break;
- case LT_COPYSTYLE: { // initialize with a known style
+ case LT_COPYSTYLE: {
docstring style;
lex >> style;
style = subst(style, '_', ' ');
break;
}
- case LT_OBSOLETEDBY: { // replace with a known style
+ case LT_OBSOLETEDBY: {
docstring style;
lex >> style;
style = subst(style, '_', ' ');
depends_on_ = subst(depends_on_, '_', ' ');
break;
- case LT_MARGIN: // margin style definition.
+ case LT_MARGIN:
readMargin(lex);
break;
- case LT_LATEXTYPE: // LaTeX style definition.
+ case LT_LATEXTYPE:
readLatexType(lex);
break;
labelfont = lyxRead(lex, labelfont);
break;
- case LT_NEXTNOINDENT: // Indent next paragraph?
+ case LT_NEXTNOINDENT:
lex >> nextnoindent;
break;
readEndLabelType(lex);
break;
- case LT_LEFTMARGIN: // left margin type
+ case LT_LEFTMARGIN:
lex >> leftmargin;
break;
- case LT_RIGHTMARGIN: // right margin type
+ case LT_RIGHTMARGIN:
lex >> rightmargin;
break;
- case LT_LABELINDENT: // label indenting flag
+ case LT_LABELINDENT:
lex >> labelindent;
break;
- case LT_PARINDENT: // paragraph indent. flag
+ case LT_PARINDENT:
lex >> parindent;
break;
- case LT_PARSKIP: // paragraph skip size
+ case LT_PARSKIP:
lex >> parskip;
break;
- case LT_ITEMSEP: // item separation size
+ case LT_ITEMSEP:
lex >> itemsep;
break;
- case LT_TOPSEP: // top separation size
+ case LT_TOPSEP:
lex >> topsep;
break;
- case LT_BOTTOMSEP: // bottom separation size
+ case LT_BOTTOMSEP:
lex >> bottomsep;
break;
- case LT_LABEL_BOTTOMSEP: // label bottom separation size
+ case LT_LABEL_BOTTOMSEP:
lex >> labelbottomsep;
break;
- case LT_LABELSEP: // label separator
+ case LT_LABELSEP:
lex >> labelsep;
labelsep = subst(labelsep, 'x', ' ');
break;
- case LT_PARSEP: // par. separation size
+ case LT_PARSEP:
lex >> parsep;
break;
- case LT_NEWLINE: // newlines allowed?
+ case LT_NEWLINE:
lex >> newline_allowed;
break;
- case LT_ALIGN: // paragraph align
+ case LT_ALIGN:
readAlign(lex);
break;
- case LT_ALIGNPOSSIBLE: // paragraph allowed align
+
+ case LT_ALIGNPOSSIBLE:
readAlignPossible(lex);
break;
- case LT_LABELSTRING: // label string definition
+ case LT_LABELSTRING:
// FIXME: this means LT_ENDLABELSTRING may only
// occur after LT_LABELSTRING
lex >> labelstring_;
labelstring_appendix_ = labelstring_;
break;
- case LT_ENDLABELSTRING: // endlabel string definition
+ case LT_ENDLABELSTRING:
lex >> endlabelstring_;
endlabelstring_ = trim(endlabelstring_);
break;
- case LT_LABELSTRING_APPENDIX: // label string appendix definition
+ case LT_LABELSTRING_APPENDIX:
lex >> labelstring_appendix_;
labelstring_appendix_ = trim(labelstring_appendix_);
break;
- case LT_LABELCOUNTER: // name of counter to use
+ case LT_LABELCOUNTER:
lex >> counter;
counter = trim(counter);
break;
- case LT_FREE_SPACING: // Allow for free spacing.
+ case LT_FREE_SPACING:
lex >> free_spacing;
break;
- case LT_PASS_THRU: // Allow for pass thru.
+ case LT_PASS_THRU:
lex >> pass_thru;
break;
lex >> parbreak_is_newline;
break;
- case LT_SPACING: // setspace.sty
+ case LT_SPACING:
readSpacing(lex);
break;
}
-namespace {
-
-docstring const i18npreamble(Language const * lang, 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, /**/);
-#else
- // 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);
- string translated = to_utf8(lang->translateLayout(key));
- preamble = subst(preamble, sub.str(), translated);
- }
-#endif
- return from_utf8(preamble);
-}
-
-}
-
-
-docstring const Layout::langpreamble(Language const * lang, bool const polyglossia) const
-{
- return i18npreamble(lang, langpreamble_, polyglossia);
-}
-
-
-docstring const Layout::babelpreamble(Language const * lang, bool const polyglossia) const
-{
- return i18npreamble(lang, 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())