-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2001 The LyX Team.
+/**
+ * \file ExternalTemplate.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * ====================================================== */
+ * \author Asger Alstrup Nielsen
+ *
+ * Full author contact details are available in file CREDITS
+ */
#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
#include <algorithm>
class dumpTemplate {
public:
- dumpTemplate(std::ostream & o)
+ dumpTemplate(ostream & o)
: ost(o) {}
void operator()(ExternalTemplateManager::Templates::value_type const & vt) {
ExternalTemplate const & et = vt.second;
-
+
ost << "Template " << et.lyxName << "\n"
<< "\tGuiName " << et.guiName << "\n"
<< "\tHelpText\n"
<< "\tAutomaticProduction " << et.automaticProduction << "\n";
et.dumpFormats(ost);
ost << "TemplateEnd" << endl;
-
+
}
private:
class dumpFormat {
public:
- dumpFormat(ostream & o)
+ dumpFormat(ostream & o)
: ost(o) {}
void operator()(ExternalTemplate::Formats::value_type const & vt) const{
ExternalTemplate::FormatTemplate const & ft = vt.second;
};
-void ExternalTemplate::dumpFormats(ostream & os) const
+void ExternalTemplate::dumpFormats(ostream & os) const
{
for_each(formats.begin(), formats.end(), dumpFormat(os));
}
-void ExternalTemplateManager::dumpTemplates() const
+void ExternalTemplateManager::dumpTemplates() const
{
for_each(templates.begin(), templates.end(), dumpTemplate(lyxerr));
}
return templates[name];
}
-
-void ExternalTemplateManager::readTemplates(string const & path)
+
+void ExternalTemplateManager::readTemplates(string const & path)
{
Path p(path);
TM_TEMPLATE = 1,
TM_END
};
-
+
keyword_item templatetags[] = {
{ "template", TM_TEMPLATE },
{ "templateend", TM_END }
"No template file" << endl;
return;
}
-
+
while (lex.isOK()) {
switch (lex.lex()) {
case TM_TEMPLATE: {
tmp.readTemplate(lex);
}
break;
-
+
case TM_END:
lex.printError("Warning: End outside Template.");
break;
};
pushpophelper pph(lex, templateoptiontags, TO_END);
-
+
while (lex.isOK()) {
switch (lex.lex()) {
case TO_GUINAME:
lex.next(true);
guiName = lex.getString();
break;
-
+
case TO_HELPTEXT:
helpText = lex.getLongString("HelpTextEnd");
break;
-
+
case TO_FILTER:
lex.next(true);
fileRegExp = lex.getString();
break;
-
+
case TO_VIEWCMD:
lex.next(true);
viewCommand = lex.getString();
break;
-
+
case TO_EDITCMD:
lex.next(true);
editCommand = lex.getString();
break;
-
+
case TO_AUTOMATIC:
lex.next();
automaticProduction = lex.getBool();
break;
-
+
case TO_FORMAT:
lex.next(true);
formats[lex.getString()].readFormat(lex);
break;
-
+
case TO_END:
return;
-
+
default:
lex.printError("ExternalTemplate::readTemplate: "
"Wrong tag: $$Token");
}
-void ExternalTemplate::FormatTemplate::readFormat(LyXLex & lex)
+void ExternalTemplate::FormatTemplate::readFormat(LyXLex & lex)
{
enum FormatTags {
FO_PRODUCT = 1,
FO_PREAMBLE,
FO_END
};
-
+
keyword_item formattags[] = {
{ "formatend", FO_END },
{ "preamble", FO_PREAMBLE },
};
pushpophelper pph(lex, formattags, FO_END);
-
+
while (lex.isOK()) {
switch (lex.lex()) {
case FO_PRODUCT:
lex.next(true);
product = lex.getString();
break;
-
+
case FO_UPDATECMD:
lex.next(true);
updateCommand = lex.getString();
lex.next(true);
updateResult = lex.getString();
break;
-
+
case FO_REQUIREMENT:
lex.next(true);
requirement = lex.getString();
break;
-
+
case FO_PREAMBLE:
preamble = lex.getLongString("preambleend");
break;
-
+
case FO_END:
if (lyxerr.debugging())
lex.printError("FormatEnd");
}
}
}
-