ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FeepingCreaturism/Jargon.cpp
Revision: 1084
Committed: 2008-08-21T19:45:28-07:00 (16 years, 10 months ago) by douglas
File size: 1326 byte(s)
Log Message:
Menes has strange errors; I'll probably completely replace this with Python at some point anyway, grr!

File Contents

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

Properties

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