|
Packit |
8a864e |
// Copyright (c) 1996 James Clark
|
|
Packit |
8a864e |
// See the file COPYING for copying permission.
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
#include "config.h"
|
|
Packit |
8a864e |
#include "sptchar.h"
|
|
Packit |
8a864e |
#include "ParserApp.h"
|
|
Packit |
8a864e |
#include "GenericEventHandler.h"
|
|
Packit |
8a864e |
#include "SGMLGenerator.h"
|
|
Packit |
8a864e |
#include "SgmlnormMessages.h"
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
#ifdef SP_NAMESPACE
|
|
Packit |
8a864e |
using namespace SP_NAMESPACE;
|
|
Packit |
8a864e |
#endif
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
class SGMLGeneratorEH : public SGMLGenerator, public GenericEventHandler {
|
|
Packit |
8a864e |
public:
|
|
Packit |
8a864e |
SGMLGeneratorEH(OutputCharStream *, unsigned genFlags, Messenger *);
|
|
Packit |
8a864e |
void reportMessage(const Message &msg, StringC &);
|
|
Packit |
8a864e |
private:
|
|
Packit |
8a864e |
Messenger *mgr_;
|
|
Packit |
8a864e |
};
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
class SgmlnormApp : public ParserApp {
|
|
Packit |
8a864e |
public:
|
|
Packit |
8a864e |
SgmlnormApp();
|
|
Packit |
8a864e |
void processOption(AppChar opt, const AppChar *arg);
|
|
Packit |
8a864e |
ErrorCountEventHandler *makeEventHandler();
|
|
Packit |
8a864e |
private:
|
|
Packit |
8a864e |
unsigned genFlags_;
|
|
Packit |
8a864e |
Boolean rawOutput_;
|
|
Packit |
8a864e |
};
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
SP_DEFINE_APP(SgmlnormApp)
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
SgmlnormApp::SgmlnormApp()
|
|
Packit |
8a864e |
: rawOutput_(0), genFlags_(0)
|
|
Packit |
8a864e |
{
|
|
Packit |
8a864e |
changeOptionRegistration('n', AppChar(255));
|
|
Packit |
8a864e |
registerOption('d', SP_T("dtd"), SgmlnormMessages::dHelp);
|
|
Packit |
8a864e |
registerOption('m', SP_T("marked-sections"), SgmlnormMessages::mHelp);
|
|
Packit |
8a864e |
registerOption('n', SP_T("comments"), SgmlnormMessages::nHelp);
|
|
Packit |
8a864e |
registerOption('r', SP_T("raw"), SgmlnormMessages::rHelp);
|
|
Packit |
8a864e |
registerInfo(SgmlnormMessages::info1);
|
|
Packit |
8a864e |
registerInfo(SgmlnormMessages::info2);
|
|
Packit |
8a864e |
registerInfo(SgmlnormMessages::info3);
|
|
Packit |
8a864e |
}
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
void SgmlnormApp::processOption(AppChar opt, const AppChar *arg)
|
|
Packit |
8a864e |
{
|
|
Packit |
8a864e |
switch (opt) {
|
|
Packit |
8a864e |
case AppChar(255):
|
|
Packit |
8a864e |
ParserApp::processOption('n', arg);
|
|
Packit |
8a864e |
break;
|
|
Packit |
8a864e |
case 'd':
|
|
Packit |
8a864e |
genFlags_ |= SGMLGenerator::generateDtd;
|
|
Packit |
8a864e |
break;
|
|
Packit |
8a864e |
case 'm':
|
|
Packit |
8a864e |
options_.eventsWanted.addMarkedSections();
|
|
Packit |
8a864e |
break;
|
|
Packit |
8a864e |
case 'n':
|
|
Packit |
8a864e |
options_.eventsWanted.addCommentDecls();
|
|
Packit |
8a864e |
break;
|
|
Packit |
8a864e |
case 'r':
|
|
Packit |
8a864e |
rawOutput_ = 1;
|
|
Packit |
8a864e |
break;
|
|
Packit |
8a864e |
default:
|
|
Packit |
8a864e |
ParserApp::processOption(opt, arg);
|
|
Packit |
8a864e |
break;
|
|
Packit |
8a864e |
}
|
|
Packit |
8a864e |
}
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
ErrorCountEventHandler *SgmlnormApp::makeEventHandler()
|
|
Packit |
8a864e |
{
|
|
Packit |
8a864e |
OutputCharStream *os = makeStdOut();
|
|
Packit |
8a864e |
if (!rawOutput_)
|
|
Packit |
8a864e |
os = new RecordOutputCharStream(os);
|
|
Packit |
8a864e |
return new SGMLGeneratorEH(os, genFlags_, this);
|
|
Packit |
8a864e |
}
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
SGMLGeneratorEH::SGMLGeneratorEH(OutputCharStream *os, unsigned genFlags,
|
|
Packit |
8a864e |
Messenger *mgr)
|
|
Packit |
8a864e |
: SGMLGenerator(os, genFlags), GenericEventHandler(*this, 1), mgr_(mgr)
|
|
Packit |
8a864e |
{
|
|
Packit |
8a864e |
}
|
|
Packit |
8a864e |
|
|
Packit |
8a864e |
void SGMLGeneratorEH::reportMessage(const Message &msg, StringC &)
|
|
Packit |
8a864e |
{
|
|
Packit |
8a864e |
mgr_->dispatchMessage(msg);
|
|
Packit |
8a864e |
}
|