OSDN Git Service

bug fix of wiki. sup and wub wiki inline function.
authorvisor <visor@users.sourceforge.jp>
Tue, 15 Jul 2014 13:41:09 +0000 (22:41 +0900)
committervisor <visor@users.sourceforge.jp>
Tue, 15 Jul 2014 13:41:09 +0000 (22:41 +0900)
wiki/wikicmd.cc
wiki/wikiformat.cc
wiki/wikiline.cc
wiki/wikiline.h

index 7cac87c..0ebfd19 100644 (file)
@@ -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<ustring>  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 ();
index 0ad7dd6..ac6f7ab 100644 (file)
@@ -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) {        // |
index f195f77..311ff61 100644 (file)
@@ -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 ("<i>"))
+    html.out_raw (op, oplen)
        ->out_toText (arg2->htmlOut (wiki))
-       ->out_raw (CharConst ("</i>"));
+       ->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 ("<i>"), CharConst ("</i>"), arg2, out, wiki);
+}
+
 //#WIKILINE    b       wl_bold
 bool  wl_bold (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) {
-    MotorOutputString  html;
-    html.out_raw (CharConst ("<b>"))
-       ->out_toText (arg2->htmlOut (wiki))
-       ->out_raw (CharConst ("</b>"));
-    out.push_back (WikiMotorObjPtr (new WikiMotorObjHtml (html.ans)));
-    return true;
+    return wl_em_sub (CharConst ("<b>"), CharConst ("</b>"), 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 ("<b><i>"))
-       ->out_toText (arg2->htmlOut (wiki))
-       ->out_raw (CharConst ("</i></b>"));
-    out.push_back (WikiMotorObjPtr (new WikiMotorObjHtml (html.ans)));
-    return true;
+    return wl_em_sub (CharConst ("<b><i>"), CharConst ("</i></b>"), arg2, out, wiki);
+}
+
+//#WIKILINE    sup     wl_sup
+bool  wl_sup (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) {
+    return wl_em_sub (CharConst ("<sup>"), CharConst ("</sup>"), arg2, out, wiki);
+}
+
+//#WIKILINE    sub     wl_sub
+bool  wl_sub (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki) {
+    return wl_em_sub (CharConst ("<sub>"), CharConst ("</sub>"), arg2, out, wiki);
 }
 
 /* ============================================================ */
index 47ab6a5..4c20929 100644 (file)
@@ -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);