OSDN Git Service

nth wiki inline function.
authorvisor <visor@users.sourceforge.jp>
Sat, 12 Dec 2015 13:31:21 +0000 (22:31 +0900)
committervisor <visor@users.sourceforge.jp>
Sat, 12 Dec 2015 13:31:21 +0000 (22:31 +0900)
wiki/wikiline.cc
wiki/wikiline.h

index a6ff1aa..9209445 100644 (file)
@@ -172,6 +172,28 @@ bool  wl_cdr (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki)
     return true;
 }
 
+//#WIKILINE    nth     wl_nth
+bool  wl_nth (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki) {
+    MotorOutputWiki  o (out);
+    ustring  var;
+    int  idx;
+    ustring  val;
+    MNodePtr  e;
+    ustring  opt;
+
+    if (args->size () != 2)
+       return false;
+    var = (*args)[0]->textOut (wiki);
+    idx = strtol ((*args)[1]->textOut (wiki));
+    e = wiki->getVar (var);
+    if (e ()) {
+       e = e ()->vectorGet (idx);
+       val = fixUTF8 (to_string (e ()));
+       return outamp_opt (o, opt, val);
+    }
+    return true;
+}
+
 /*DOC:
 ===ベクタ展開===
  [[vector:NAME:i]]
index 3ea4af7..09b16f5 100644 (file)
@@ -11,6 +11,7 @@ bool  wl_getarray (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* w
 bool  wl_vector (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki);
 bool  wl_car (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki);
 bool  wl_cdr (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki);
+bool  wl_nth (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki);
 bool  wl_join (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki);
 bool  wl_table (WikiMotorObjVecVec* args, WikiMotorObjVec& out, WikiFormat* wiki);
 bool  wl_eval (WikiMotorObjVec* arg2, WikiMotorObjVec& out, WikiFormat* wiki);