diff options
| author | Grégoire Duchêne <gduchene@fastmail.net> | 2010-12-04 21:34:06 +0100 |
|---|---|---|
| committer | Grégoire Duchêne <gduchene@fastmail.net> | 2010-12-04 21:34:06 +0100 |
| commit | 7d8e1295ff6bd4a768a658690b850d58aba01b0b (patch) | |
| tree | 2fe35673f0b58b86934bed419b29202ce22fc5c4 /src/main.cpp | |
| parent | 2e7217432858185374fc958bcd4dc4d0cd7b22fe (diff) | |
Emphasized text support added.
I will try to add both parsing and generation at the same time for each
mdown feature I will implement. Do not expect this to last.
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..f4113fd --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,70 @@ +/* +Copyright (c) 2010, Grégoire Duchêne <gduchene@fastmail.net> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +#include <boost/spirit/include/karma.hpp> +#include <boost/spirit/include/qi.hpp> +#include <fstream> +#include <iostream> +#include <string> +#include "elements.h" +#include "generators/latex_g.h" +#include "parser/document_p.h" + +namespace ka = boost::spirit::karma; +namespace qi = boost::spirit::qi; + +int main(int argc, char **argv) { + using namespace std; + + if (argc != 2) + return 1; + + wifstream ifile(argv[1]); + + if (ifile.fail()) { + cerr << "Error while reading the file." << endl; + return 1; + } + + wchar_t buffer; + wstring input; + + while (ifile.get(buffer)) + input.push_back(buffer); + + ifile.close(); + + document_p parser; + iiterator begin = input.begin(); + iiterator end = input.end(); + document_t ast; + + if (!qi::parse(begin, end, parser, ast) || begin != end) { + cerr << "Error while parsing the file." << endl; + return 1; + } + + latex_g generator; + wstring output; + oiterator sink(output); + + if (!ka::generate(sink, generator, ast)) { + cerr << "Error while generating the output." << endl; + return 1; + } + + wcout << output << flush; + return 0; +} |
