From: visor Date: Tue, 15 Jul 2014 13:41:09 +0000 (+0900) Subject: bug fix of wiki. sup and wub wiki inline function. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d1fac67fbdcab29136bbb8bdb60f884bf3dc8704;p=hmh%2Fhhml.git bug fix of wiki. sup and wub wiki inline function. --- diff --git a/wiki/wikicmd.cc b/wiki/wikicmd.cc index 7cac87c..0ebfd19 100644 --- a/wiki/wikicmd.cc +++ b/wiki/wikicmd.cc @@ -145,7 +145,7 @@ void wc_doarray (WikiLine* wl, WikiFormat* wiki) { iv = clipWhite (args[1]->textOut (wiki)); } } else { - wiki->errorMsg.append (CharConst ("$repeat: wrong number of parameters.\n")); + wiki->errorMsg.append (CharConst ("$doarray: wrong number of parameters.\n")); } iu = lv.size (); if (iu > 0) { @@ -355,7 +355,6 @@ void wc_eval (WikiLine* wl, WikiFormat* wiki) { //#WIKICMD $evalblock $endevalblock wc_evalblock void wc_evalblock (WikiLine* wl, WikiFormat* wiki) { MotorSexp ml (wiki->mlenv); -// ustring sexp (wl->begin, wl->end); #ifdef WIKIEVALPROTECT if (wiki->protectMode && ! wl->fsuper) { @@ -399,7 +398,7 @@ void wc_evalblock (WikiLine* wl, WikiFormat* wiki) { 変数''VARIABLE''に格納されたWikiテキストを挿入する。 オプションの「=」を追加すると,「=」の数だけ挿入されるWikiテキストのタイトルの深さが下げられる。 -superuserオプションをつけると, +superuserオプションをつけると,管理者機能が有効になる。 */ //#WIKICMD $insert wc_insert @@ -582,7 +581,6 @@ void wc_macro (WikiLine* wl, WikiFormat* wiki) { WikiMotorObjVec objv; WikiMotorObjVecVec args; ustring name; -// std::vector vars; MNodeList vars; int i, n; @@ -611,7 +609,6 @@ void wc_macro (WikiLine* wl, WikiFormat* wiki) { WikiMotorObjVecVec v; args[1]->splitCharA (',', v); for (i = 0; i < v.size (); i ++) { -// vars.push_back (clipWhite (v[i]->textOut (wiki))); vars.append (newMNode_str (new ustring (clipWhite (v[i]->textOut (wiki))))); } } else if (args.size () > 2) { @@ -795,11 +792,8 @@ static void call_defun_wikicmd (ustring& name, MNode* wf, WikiMotorObjVec& objv static void call_defun_macro (ustring& name, WikiMacro* mf, WikiMotorObjVec& objv2, WikiLine* wl, WikiFormat* wiki) { WikiMotorObjVecVec argsv; -// MNodePtr vargs; objv2.splitCharA (':', argsv); -// vargs = wiki->buildArgs (argsv.begin (), argsv.end ()); -// mf->mars; { AutoLocalVariable autoLocal (wiki->mlenv); MNode* p = mf->vars (); diff --git a/wiki/wikiformat.cc b/wiki/wikiformat.cc index 0ad7dd6..ac6f7ab 100644 --- a/wiki/wikiformat.cc +++ b/wiki/wikiformat.cc @@ -1841,7 +1841,7 @@ void WikiFormat::compileLine (WikiLineScanner& scanner) { cur = new WikiBlockParagraph (this); blockp->push_back (cur); } - push_block (NULL); + push_block (blockp); cur = new WikiBlockSelect (this); cur->addLine (b, e); } else if (b[0] == kWikiTABLE) { // | diff --git a/wiki/wikiline.cc b/wiki/wikiline.cc index f195f77..311ff61 100644 --- a/wiki/wikiline.cc +++ b/wiki/wikiline.cc @@ -142,37 +142,44 @@ bool wl_getarray (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* w [[b:wiki function形式のボールド]] [[bi:ボールド+イタリック]] [[ib:ボールド+イタリック]] + [[sup:上付き]] + [[sub:下付き]] */ -//#WIKILINE i wl_italic -bool wl_italic (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) { +static bool wl_em_sub (const char* op, size_t oplen, const char* cl, size_t cllen, + WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) { MotorOutputString html; - html.out_raw (CharConst ("")) + html.out_raw (op, oplen) ->out_toText (arg2->htmlOut (wiki)) - ->out_raw (CharConst ("")); + ->out_raw (cl, cllen); out.push_back (WikiMotorObjPtr (new WikiMotorObjHtml (html.ans))); return true; } +//#WIKILINE i wl_italic +bool wl_italic (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) { + return wl_em_sub (CharConst (""), CharConst (""), arg2, out, wiki); +} + //#WIKILINE b wl_bold bool wl_bold (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) { - MotorOutputString html; - html.out_raw (CharConst ("")) - ->out_toText (arg2->htmlOut (wiki)) - ->out_raw (CharConst ("")); - out.push_back (WikiMotorObjPtr (new WikiMotorObjHtml (html.ans))); - return true; + return wl_em_sub (CharConst (""), CharConst (""), arg2, out, wiki); } //#WIKILINE bi wl_bolditalic //#WIKILINE ib wl_bolditalic bool wl_bolditalic (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) { - MotorOutputString html; - html.out_raw (CharConst ("")) - ->out_toText (arg2->htmlOut (wiki)) - ->out_raw (CharConst ("")); - out.push_back (WikiMotorObjPtr (new WikiMotorObjHtml (html.ans))); - return true; + return wl_em_sub (CharConst (""), CharConst (""), arg2, out, wiki); +} + +//#WIKILINE sup wl_sup +bool wl_sup (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) { + return wl_em_sub (CharConst (""), CharConst (""), arg2, out, wiki); +} + +//#WIKILINE sub wl_sub +bool wl_sub (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) { + return wl_em_sub (CharConst (""), CharConst (""), arg2, out, wiki); } /* ============================================================ */ diff --git a/wiki/wikiline.h b/wiki/wikiline.h index 47ab6a5..4c20929 100644 --- a/wiki/wikiline.h +++ b/wiki/wikiline.h @@ -11,6 +11,8 @@ bool wl_getarray (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* w bool wl_italic (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki); bool wl_bold (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki); bool wl_bolditalic (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki); +bool wl_sup (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki); +bool wl_sub (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki); bool wl_http (WikiMotorObjVecVec* args, WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki); bool wl_http_new (WikiMotorObjVecVec* args, WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki); bool wl_https (WikiMotorObjVecVec* args, WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki);