ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FeepingCreaturism/Jargon.cpp
Revision: 307
Committed: 2004-12-12T23:07:27-08:00 (20 years, 6 months ago) by douglas
File size: 1203 byte(s)
Log Message:
Meep!

File Contents

# Content
1 // Feeping Creaturism
2 //
3 // Douglas Thrift
4 //
5 // $Id$
6
7 #include "Jargon.hpp"
8 #include "Matcher.hpp"
9
10 Jargon::Jargon(const ext::String& path, const ext::String& jargon, bool include, const ext::String& relative) : include(include)
11 {
12 args.InsertLast("--stringparam");
13 args.InsertLast("jargon");
14 args.InsertLast(jargon);
15 args.InsertLast("--param");
16 args.InsertLast("include");
17 args.InsertLast(ios::String() << include << "()");
18
19 if (!relative.IsEmpty())
20 {
21 args.InsertLast("--stringparam");
22 args.InsertLast("relative");
23 args.InsertLast(relative);
24 }
25
26 args.InsertLast("jargon.xsl");
27 args.InsertLast(ios::String() << path << "/" << jargon);
28 }
29
30 ios::PrintWriter& operator<<(ios::PrintWriter& pout, const Jargon& jargon)
31 {
32 _S<api::Process> xslt("/usr/local/bin/xsltproc", jargon.args);
33
34 if (jargon.include) ios::ReadLine(*xslt.GetReader());
35
36 if (jargon.include)
37 {
38 ext::String line;
39 Matcher matcher("^(.*) xmlns=\"http://www.w3.org/1999/xhtml\"(.*)$");
40
41 while (ios::ReadLine(*xslt.GetReader(), line))
42 {
43 while (line == matcher) line = matcher[1] + matcher[2];
44
45 pout << line << ios::NewLine;
46 }
47 }
48 else ios::ReadToWrite(*xslt.GetReader(), pout);
49
50 xslt.Join();
51
52 return pout;
53 }

Properties

Name Value
svn:eol-style native
svn:keywords Id