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

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

Properties

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