summaryrefslogtreecommitdiff
path: root/src/parsers/mdown2/text_p.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parsers/mdown2/text_p.cpp')
-rw-r--r--src/parsers/mdown2/text_p.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/parsers/mdown2/text_p.cpp b/src/parsers/mdown2/text_p.cpp
new file mode 100644
index 0000000..d4d5e03
--- /dev/null
+++ b/src/parsers/mdown2/text_p.cpp
@@ -0,0 +1,45 @@
+/*
+Copyright (c) 2010, 2011, 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 "text_p.h"
+
+mdown2::text_p::text_p() : text_p::base_type(text_) {
+ using namespace qi;
+ using namespace ph;
+ using qi::standard_wide::char_;
+
+ text_ = stext_(_r1) | pstext_(_r1) | atom_ | ptext_(_r1);
+
+ stext_ = lit("***") >> attr(VSEMPH) >> +text_(ph::val(L"*'`$@_[")) >> "***"
+ | lit("**") >> attr(SEMPH) >> +text_(ph::val(L"*'`$@_[")) >> "**"
+ | lit('*') >> attr(EMPH) >> +text_(ph::val(L"*'`$@_[")) >> '*'
+ | lit("''") >> attr(SALT) >> +text_(ph::val(L"*'`$@_["))>> "''"
+ | lit('\'') >> attr(ALT) >> +text_(ph::val(L"*'`$@_[")) >> '\''
+ | lit('`') >> attr(CODE) >> +ptext_(val(L"`")) >> '`'
+ | lit('$') >> attr(MATH) >> +ptext_(val(L"$")) >> '$'
+ | lit("^{") >> attr(SUPER) >> +text_(val(L"*'`$^}[")) >> '}'
+ | lit('^') >> attr(SUPER) >> +text_(val(L"*'`$ "))
+ | lit(L"@\"") >> attr(QUOTE) >> +text_(val(L"*'`$@\"[")) >> '"'
+ | lit(L"@_") >> attr(SUB) >> +text_(val(L"*'`$@_[")) >> '_';
+
+ pstext_ = lit('[') >> attr(LINK) >> +text_(val(L"]")) >> ']' >>
+ lit('(') >> ptext_(val(L")")) >> ')';
+
+ atom_ = lit(L"\\ ") >> attr(NBSP) | lit('\\') >> eol >> attr(NEWLINE);
+
+ ptext_ = +(echar_ | rchar_(_r1));
+ echar_ = lit('\\') >> ~char_(L" \n");
+ rchar_ = ~char_('\\') - char_(_r1);
+}