diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-04 08:17:40 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-04 09:26:02 +0200 |
commit | d4be6965ed8d5cacb79776fa892b763548e3d070 (patch) | |
tree | 92ced4c32404740692501f40c5f9ec36d598c6c0 /build2/test/script/token.cxx | |
parent | 8caa111ec27dc21973b764d9892e7100f4bd2628 (diff) |
Handle printing of extended tokens (testscript)
Diffstat (limited to 'build2/test/script/token.cxx')
-rw-r--r-- | build2/test/script/token.cxx | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/build2/test/script/token.cxx b/build2/test/script/token.cxx new file mode 100644 index 0000000..bfff25a --- /dev/null +++ b/build2/test/script/token.cxx @@ -0,0 +1,42 @@ +// file : build2/test/script/token.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include <build2/test/script/token> + +using namespace std; + +namespace build2 +{ + namespace test + { + namespace script + { + void + token_printer (ostream& os, const token& t, bool d) + { + // Only quote non-name tokens for diagnostics. + // + const char* q (d ? "'" : ""); + + switch (t.type) + { + case token_type::pipe: os << q << '|' << q; break; + case token_type::clean: os << q << '&' << q; break; + case token_type::log_and: os << q << "&&" << q; break; + case token_type::log_or: os << q << "||" << q; break; + + case token_type::in_null: os << q << "<!" << q; break; + case token_type::in_string: os << q << '<' << q; break; + case token_type::in_document: os << q << "<<" << q; break; + + case token_type::out_null: os << q << "<!" << q; break; + case token_type::out_string: os << q << '<' << q; break; + case token_type::out_document: os << q << "<<" << q; break; + + default: build2::token_printer (os, t, d); + } + } + } + } +} |