From 7d8e1295ff6bd4a768a658690b850d58aba01b0b Mon Sep 17 00:00:00 2001 From: Grégoire Duchêne Date: Sat, 4 Dec 2010 21:34:06 +0100 Subject: 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. --- src/parser/document_p.cpp | 20 ++++++++++++++++++++ src/parser/document_p.h | 26 ++++++++++++++++++++++++++ src/parser/text_p.cpp | 31 +++++++++++++++++++++++++++++++ src/parser/text_p.h | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 src/parser/document_p.cpp create mode 100644 src/parser/document_p.h create mode 100644 src/parser/text_p.cpp create mode 100644 src/parser/text_p.h (limited to 'src/parser') diff --git a/src/parser/document_p.cpp b/src/parser/document_p.cpp new file mode 100644 index 0000000..875211c --- /dev/null +++ b/src/parser/document_p.cpp @@ -0,0 +1,20 @@ +/* +Copyright (c) 2010, Grégoire Duchêne + +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 "document_p.h" + +document_p::document_p() : document_p::base_type(document_) { + document_ = +text_; +} diff --git a/src/parser/document_p.h b/src/parser/document_p.h new file mode 100644 index 0000000..fc6530e --- /dev/null +++ b/src/parser/document_p.h @@ -0,0 +1,26 @@ +/* +Copyright (c) 2010, Grégoire Duchêne + +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. +*/ +#ifndef _MPPDOWN_DOCUMENT_P +#define _MPPDOWN_DOCUMENT_P +#include "text_p.h" + +struct document_p : qi::grammar { + qi::rule document_; + text_p text_; + + document_p(); +}; +#endif diff --git a/src/parser/text_p.cpp b/src/parser/text_p.cpp new file mode 100644 index 0000000..4d44e66 --- /dev/null +++ b/src/parser/text_p.cpp @@ -0,0 +1,31 @@ +/* +Copyright (c) 2010, Grégoire Duchêne + +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" + +text_p::text_p() : text_p::base_type(text_) { + using namespace qi; + using qi::standard_wide::char_; + + text_ = stext_ | ptext_; + + stext_ = lit("***") >> attr(VSEMPH) >> +text_ >> "***" + | lit("**") >> attr(SEMPH) >> +text_ >> "**" + | lit('*') >> attr(EMPH) >> +text_ >> '*'; + + ptext_ = +(echar_ | rchar_); + echar_ = lit('\\') >> char_; + rchar_ = char_ - char_(L"*"); +} diff --git a/src/parser/text_p.h b/src/parser/text_p.h new file mode 100644 index 0000000..83ef54f --- /dev/null +++ b/src/parser/text_p.h @@ -0,0 +1,34 @@ +/* +Copyright (c) 2010, Grégoire Duchêne + +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. +*/ +#ifndef _MPPDOWN_TEXT_P +#define _MPPDOWN_TEXT_P +#include +#include +#include +#include "../elements.h" + +namespace qi = boost::spirit::qi; + +struct text_p : qi::grammar { + qi::rule text_; + qi::rule stext_; + qi::rule ptext_; + qi::rule echar_; + qi::rule rchar_; + + text_p(); +}; +#endif -- cgit v1.2.3-70-g09d2