void WikiMotorObjVec::eval (WikiMotorObjVec& ans, WikiFormat* wiki) {
const_iterator b = begin ();
const_iterator e = end ();
-#ifdef DEBUG
-// std::cerr << "(WikiMotorObjVec::eval)\n";
-#endif /* DEBUG */
for (; b < e; b ++) {
-#ifdef DEBUG
-// std::cerr << "(WikiMotorObjVec::eval:" << (*b)->typeName () << ")\n";
-#endif /* DEBUG */
(*b)->eval (ans, &*b, wiki);
}
}
return o.ans;
}
+MNode* WikiMotorObjVec::toMNode (WikiFormat* wiki) {
+ MNodePtr e;
+ MNodePtr t;
+ int i = 0;
+
+ while (1) {
+ if (i >= size ())
+ return NULL;
+ e = operator [] (i)->toMNode (wiki);
+ i ++;
+ if (! isNil (e ()))
+ break;
+ }
+ while (1) {
+ if (i >= size ())
+ return e.release ();
+ t = operator [] (i)->toMNode (wiki);
+ if (! isNil (t ())) {
+ e = newMNode_str (new ustring (to_string (e ())));
+ e ()->str->append (to_string (t ()));
+ break;
+ }
+ i ++;
+ }
+ for (; i < size (); i ++) {
+ t = operator [] (i)->toMNode (wiki);
+ e ()->str->append (to_string (t ()));
+ }
+ return e.release ();
+}
+
void WikiMotorObjVec::out_HTML (MotorOutputString& o, WikiFormat* wiki) {
const_iterator b = begin ();
const_iterator e = end ();
for (; b < e; b ++) {
-#ifdef DEBUG
-// std::cerr << "(WikiMotorObjVec::out_HTML:" << (*b)->typeName () << ")\n";
-#endif /* DEBUG */
o.out_raw ((*b)->htmlOut (wiki));
}
}
return o.ans;
}
+#if 0
+MNode* WikiMotorObjVecVec::toMNode (WikiFormat* wiki) {
+}
+#endif
+
void WikiMotorObjVecVec::out_HTML (MotorOutputString& o, WikiFormat* wiki) {
for (int i = 0; i < size (); i ++) {
operator [] (i)->out_HTML (o, wiki);
case opt_c3:
o.outamp_c3 (val);
break;
-// case opt_wbr:
-// o.outamp_wbr (val);
-// break;
+#if 0
+ case opt_wbr:
+ o.outamp_wbr (val);
+ break;
+#endif
default:
assert (0);
}
case opt_c3:
o.outamp_c3 (val);
return o.ans;
-// case opt_wbr:
-// o.outamp_wbr (val);
-// return o.ans;
+#if 0
+ case opt_wbr:
+ o.outamp_wbr (val);
+ return o.ans;
+#endif
default:
assert (0);
}
}
+MNode* WikiMotorObjVar::toMNode (WikiFormat* wiki) {
+ return wiki->mlenv->getVar (name);
+}
+
ustring WikiMotorObjVar::dump () {
ustring ans;
case opt_c3:
ans.append (CharConst (",]]"));
break;
-// case opt_wbr:
-// ans.append (CharConst ("^]]"));
-// break;
+#if 0
+ case opt_wbr:
+ ans.append (CharConst ("^]]"));
+ break;
+#endif
default:
assert (0);
}
return o.htmlOut (wiki);
}
+MNode* WikiMotorObjFunc::toMNode (WikiFormat* wiki) {
+ WikiFormat::DepthCount dc (wiki);
+ WikiMotorObjVec o;
+
+ if (dc.test ()) {
+ wiki->errorMsg.append (uErrorInclNest);
+ return NULL;
+ }
+ eval (o, NULL, wiki);
+ return o.toMNode (wiki);
+}
+
/* ============================================================ */
ustring WikiMotorObjFunc1::execDefunArgs (WikiFormat* wiki) {
MNodePtr vargs;
if (func->fn1 (&arg, ans, wiki)) {
} else {
// *** error
-// return dump ();
ans.push_back (WikiMotorObjPtr (new WikiMotorObjText (dump ())));
}
} else {
}
}
-#if 0
-ustring WikiMotorObjFunc1::textOut (WikiFormat* wiki) {
- if (func) {
- MotorOutputString o;
- if (func->fn1 (&arg, &o, wiki)) {
- return o.ans;
- } else {
- // *** error
- return dump ();
- }
- } else {
- return execDefunArgs (wiki);
- }
-}
-#endif
-#if 0
-ustring WikiMotorObjFunc1::htmlOut (WikiFormat* wiki) {
- if (func) {
- MotorOutputString o;
- if (func->fn1 (&arg, &o, wiki)) {
- return o.ans;
- } else {
- // *** error
- return dump ();
- }
- } else {
- ustring text = execDefunArgs (wiki);
- return wiki->wikiMotor (text.begin (), text.end ());
- }
-}
-#endif
-
ustring WikiMotorObjFunc1::dump () {
ustring ans;
ans.append (CharConst ("[[")).append (name).append (uColon).append (arg.dump ()).append (CharConst ("]]"));
autoIncl.inc ();
vargs = wiki->buildArgs (arg.begin (), arg.end ());
-// vargs = wiki->buildArgs (arg.begin (), arg.end (), true);
return execDefun (vargs (), wiki);
}
if (func->fnM (&arg, ans, wiki)) {
} else {
// error
-// return dump ();
ans.push_back (WikiMotorObjPtr (new WikiMotorObjText (dump ())));
}
} else {
}
}
-#if 0
-ustring WikiMotorObjFuncM::textOut (WikiFormat* wiki) {
- if (func) {
- MotorOutputString o;
- if (func->fnM (&arg, &o, wiki)) {
- return o.ans;
- } else {
- // *** error
- return dump ();
- }
- } else {
- return execDefunArgs (wiki);
- }
-}
-#endif
-
-#if 0
-ustring WikiMotorObjFuncM::htmlOut (WikiFormat* wiki) {
- if (func) {
- MotorOutputString o;
- if (func->fnM (&arg, &o, wiki)) {
- return o.ans;
- } else {
- // *** error
- return dump ();
- }
- } else {
- ustring text = execDefunArgs (wiki);
- return wiki->wikiMotor (text.begin (), text.end ());
- }
-}
-#endif
-
ustring WikiMotorObjFuncM::dump () {
ustring ans;
ans.append (CharConst ("[[")).append (name);
autoIncl.inc ();
vargs = new MNode;
-// vargs ()->set_car (newMNode_str (new ustring (arg2.textOut (wiki))));
vargs ()->set_car (newMNode_str (new ustring (arg2.dump ())));
vargs ()->set_cdr (wiki->buildArgs (arg.begin (), arg.end ()));
-// vargs ()->set_cdr (wiki->buildArgs (arg.begin (), arg.end (), true));
return execDefun (vargs (), wiki);
}
if (func->fnM2 (&arg, &arg2, ans, wiki)) {
} else {
// error
-// return dump ();
ans.push_back (WikiMotorObjPtr (new WikiMotorObjText (dump ())));
}
} else {
}
}
-#if 0
-ustring WikiMotorObjFuncM2::textOut (WikiFormat* wiki) {
- if (func) {
- MotorOutputString o;
- if (func->fnM2 (&arg, &arg2, &o, wiki)) {
- return o.ans;
- } else {
- // *** error
- return dump ();
- }
- } else {
- return execDefunArgs (wiki);
- }
-}
-#endif
-#if 0
-ustring WikiMotorObjFuncM2::htmlOut (WikiFormat* wiki) {
- if (func) {
- MotorOutputString o;
- if (func->fnM2 (&arg, &arg2, &o, wiki)) {
- return o.ans;
- } else {
- // *** error
- return dump ();
- }
- } else {
- ustring text = execDefunArgs (wiki);
- return wiki->wikiMotor (text.begin (), text.end ());
- }
-}
-#endif
-
ustring WikiMotorObjFuncM2::dump () {
ustring ans;
ans.append (CharConst ("[[")).append (name);
ans.push_back (WikiMotorObjPtr (new WikiMotorObjText (dump ())));
}
-#if 0
-ustring WikiMotorObjFuncLink::textOut (WikiFormat* wiki) {
- ustring ans;
- ans.append (CharConst ("[[")).append (name);
- for (int i = 0; i < arg.size (); i ++) {
- ans.append (uColon).append (arg[i]->dump ());
- }
- ans.append (CharConst ("]]"));
- return ans;
-}
-#endif
-
ustring WikiMotorObjFuncLink::dump () {
ustring ans;
ans.append (CharConst ("[[")).append (name);
WikiMotorObjVec* o;
if (c ^ fneg) {
-// return trueobjs.textOut (wiki);
o = &trueobjs;
} else {
-// return falseobjs.textOut (wiki);
o = &falseobjs;
}
WikiMotorObjVec::iterator b = o->begin ();
case ',':
out.push_back (WikiMotorObjPtr (new WikiMotorObjVar (sp.matchBegin (re_wiki1_wikivar), sp.matchEnd (re_wiki1_wikivar), WikiMotorObjVar::opt_c3)));
break;
-// case '^':
-// out.push_back (WikiMotorObjPtr (new WikiMotorObjVar (sp.matchBegin (re_wiki1_wikivar), sp.matchEnd (re_wiki1_wikivar), WikiMotorObjVar::opt_wbr)));
-// break;
+#if 0
+ case '^':
+ out.push_back (WikiMotorObjPtr (new WikiMotorObjVar (sp.matchBegin (re_wiki1_wikivar), sp.matchEnd (re_wiki1_wikivar), WikiMotorObjVar::opt_wbr)));
+ break;
+#endif
default:
assert (0);
}
virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki);
virtual void out (MotorOutputString& o, WikiFormat* wiki);
virtual ustring textOut (WikiFormat* wiki);
+ virtual MNode* toMNode (WikiFormat* wiki);
virtual void out_HTML (MotorOutputString& o, WikiFormat* wiki);
virtual ustring htmlOut (WikiFormat* wiki);
virtual ustring dump ();
};
virtual ustring textOut (WikiFormat* wiki) = 0;
virtual ustring htmlOut (WikiFormat* wiki);
+ virtual MNode* toMNode (WikiFormat* wiki) {
+ return newMNode_str (new ustring (textOut (wiki)));
+ };
virtual ustring dump () = 0;
virtual bool operator == (const ustring& b) {
return false;
vopt = op;
};
virtual ~WikiMotorObjVar () {};
-// virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki);
virtual void eval (WikiMotorObjVec& ans, const WikiMotorObjPtr* self, WikiFormat* wiki);
virtual ustring textOut (WikiFormat* wiki);
virtual ustring htmlOut (WikiFormat* wiki);
+ virtual MNode* toMNode (WikiFormat* wiki);
virtual ustring dump ();
virtual ustring typeName () {
return ustring (CharConst ("var"));
};
virtual ~WikiMotorObjFunc () {};
virtual ustring execDefun (MNode* vargs, WikiFormat* wiki);
-// virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki) = 0;
virtual void eval (WikiMotorObjVec& ans, const WikiMotorObjPtr* self, WikiFormat* wiki) = 0;
virtual ustring textOut (WikiFormat* wiki);
virtual ustring htmlOut (WikiFormat* wiki);
+ virtual MNode* toMNode (WikiFormat* wiki);
};
class WikiMotorObjFunc1: public WikiMotorObjFunc {
WikiMotorObjFunc1 (const ustring& fn, MNode* fp): WikiMotorObjFunc (wiki_func1, fn, fp) {};
virtual ~WikiMotorObjFunc1 () {};
virtual ustring execDefunArgs (WikiFormat* wiki);
-// virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki);
virtual void eval (WikiMotorObjVec& ans, const WikiMotorObjPtr* self, WikiFormat* wiki);
-// virtual ustring textOut (WikiFormat* wiki);
-// virtual ustring htmlOut (WikiFormat* wiki);
virtual ustring dump ();
virtual ustring typeName () {
return ustring (CharConst ("func1"));
WikiMotorObjFuncM (const ustring& fn, MNode* fp): WikiMotorObjFunc (wiki_funcM, fn, fp) {};
virtual ~WikiMotorObjFuncM () {};
virtual ustring execDefunArgs (WikiFormat* wiki);
-// virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki);
virtual void eval (WikiMotorObjVec& ans, const WikiMotorObjPtr* self, WikiFormat* wiki);
-// virtual ustring textOut (WikiFormat* wiki);
-// virtual ustring htmlOut (WikiFormat* wiki);
virtual ustring dump ();
virtual ustring typeName () {
return ustring (CharConst ("funcM"));
WikiMotorObjFuncM2 (const ustring& fn, MNode* fp): WikiMotorObjFunc (wiki_funcM2, fn, fp) {};
virtual ~WikiMotorObjFuncM2 () {};
virtual ustring execDefunArgs (WikiFormat* wiki);
-// virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki);
virtual void eval (WikiMotorObjVec& ans, const WikiMotorObjPtr* self, WikiFormat* wiki);
-// virtual ustring textOut (WikiFormat* wiki);
-// virtual ustring htmlOut (WikiFormat* wiki);
virtual ustring dump ();
virtual ustring typeName () {
return ustring (CharConst ("funcM2"));
WikiMotorObjFuncLink (const ustring& fn, MNode* fp): WikiMotorObjFunc (wiki_funcLink, fn, fp) {};
virtual ~WikiMotorObjFuncLink () {};
virtual ustring execDefunArgs (WikiFormat* wiki);
-// virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki);
virtual void eval (WikiMotorObjVec& ans, const WikiMotorObjPtr* self, WikiFormat* wiki);
-// virtual ustring textOut (WikiFormat* wiki);
virtual ustring dump ();
virtual ustring typeName () {
return ustring (CharConst ("funcLink"));
fneg = _neg;
};
virtual ~WikiMotorObjCond () {};
-// virtual void eval (WikiMotorObjVec& ans, WikiFormat* wiki);
virtual void eval (WikiMotorObjVec& ans, const WikiMotorObjPtr* self, WikiFormat* wiki);
virtual ustring textOut (WikiFormat* wiki);
virtual ustring htmlOut (WikiFormat* wiki);