--- FeepingCreaturism/Jargon.cpp 2004/10/27 11:14:56 266 +++ FeepingCreaturism/Jargon.cpp 2004/10/27 18:18:25 267 @@ -8,26 +8,45 @@ #include "Matcher.hpp" Jargon::Jargon(const ext::String& path, const ext::String& jargon, bool include, - const ext::String& relative) : include(include), args(1, "jargon.xsl") + const ext::String& relative) : include(include) { - args.InsertLast(ios::String() << path << "/" << jargon); - args.InsertLast(ios::String() << "$jargon=" << jargon); - - if (include) args.InsertLast("$include=true()"); + args.InsertLast("--stringparam"); + args.InsertLast("jargon"); + args.InsertLast(jargon); + args.InsertLast("--param"); + args.InsertLast("include"); + args.InsertLast(ios::String() << include << "()"); if (!relative.IsEmpty()) { - args.InsertLast(ios::String() << "$relative=" << relative); + args.InsertLast("--stringparam"); + args.InsertLast("relative"); + args.InsertLast(relative); } + + args.InsertLast("jargon.xsl"); + args.InsertLast(ios::String() << path << "/" << jargon); } ios::PrintWriter& operator<<(ios::PrintWriter& pout, const Jargon& jargon) { - _S xslt("/usr/local/bin/sabcmd", jargon.args); + _S xslt("/usr/local/bin/xsltproc", jargon.args); if (jargon.include) ios::ReadLine(*xslt.GetReader()); - ios::ReadToWrite(*xslt.GetReader(), pout); + if (jargon.include) + { + ext::String line; + Matcher matcher("^(.*) xmlns=\"http://www.w3.org/1999/xhtml\"(.*)$"); + + while (ios::ReadLine(*xslt.GetReader(), line)) + { + while (line == matcher) line = matcher[1] + matcher[2]; + + pout << line << ios::NewLine; + } + } + else ios::ReadToWrite(*xslt.GetReader(), pout); return pout; }