Esempio n. 1
0
 private object _append(INakoFuncCallInfo info)
 {
     object ary = info.StackPop(); // 参照渡しなので変数への参照が得られる
     object s   = info.StackPop();
     if (!(ary is NakoVariable))
     {
         throw new NakoPluginRuntimeException("『追加』の引数がvariableではありません");
     }
     NakoVariable ary_link = (NakoVariable)ary;
     if (ary_link.Body is NakoVarArray)
     {
         NakoVarArray arr = (NakoVarArray)ary_link.Body;
         NakoVariable new_item = new NakoVariable();
         new_item.SetBodyAutoType(s);
         arr.Add(new_item);
     }else if(ary_link.Body is string && (string)ary_link.Body==""){
         NakoVarArray arr = new NakoVarArray();
         NakoVariable new_item = new NakoVariable();
         new_item.SetBodyAutoType(s);
         arr.Add(new_item);
         ary_link.SetBody(arr,NakoVarType.Array);
     }
     // 結果をセット
     return null;
 }
Esempio n. 2
0
        //Dictionary<string,object> objects = new Dictionary<string, object>();
        public object _encode(INakoFuncCallInfo info)
        {
            object v = info.StackPop();
            if(v is NakoVarArray){
                NakoVarArray arr = (NakoVarArray)v;
                object objects = NakoVarArrayToArray(arr);
                return fastJSON.JSON.Instance.ToJSON(objects);
            //                JavaScriptSerializer serializer = new JavaScriptSerializer();
            //                string s = serializer.Serialize(objects);

            }
            return null;
        }
Esempio n. 3
0
 public Object _sample_addEx(INakoFuncCallInfo info)
 {
     Object ar = info.StackPop();
     Object b = info.StackPop();
     if (!(ar is NakoVariable))
     {
         throw new ApplicationException("『接続!』の引数が変数ではありません");
     }
     Object a = ((NakoVariable)ar).Body;
     Object c;
     if (a is string && b is string)
     {
         c = (string)a + (string)b;
     }
     else
     {
         c = null;
     }
     // 結果をセット
     ((NakoVariable)ar).SetBodyAutoType(c);
     return (c);
 }
Esempio n. 4
0
 public object _close(INakoFuncCallInfo info)
 {
     object c = info.StackPop();
     if(!(c is NpgsqlConnection)){
         throw new NakoPluginArgmentException("connection not found");
     }
     NpgsqlConnection con = (NpgsqlConnection)c;
     con.Close();
     return null;
     /*            if(!(c is ADODB.Connection)){
         throw new NakoPluginArgmentException("connection not found");
     }
     ADODB.Connection con = (ADODB.Connection)c;
     con.Close();
     return null;*/
 }
Esempio n. 5
0
 public object _close(INakoFuncCallInfo info)
 {
     object stream = info.StackPop();
     if(stream is FileStream){
         FileStream filestream = (FileStream)stream;
         filestream.Close();
         filestream.Dispose();
     }
     else if(stream is StreamReader){
         StreamReader filestream = (StreamReader)stream;
         filestream.Close();
         filestream.Dispose();
     }
     else if(stream is StreamWriter){
         StreamWriter filestream = (StreamWriter)stream;
         filestream.Close();
         filestream.Dispose();
     }
     return null;
 }
Esempio n. 6
0
        private object _remove(INakoFuncCallInfo info)
        {
            object sr = info.StackPop();
            int    a  = NadesikoPositionToCSPosition((int)info.StackPopAsInt());
            int    b  = (int)info.StackPopAsInt();
            object s  = ((NakoVariable)sr).Body;
            object ret;

            if (s is string)
            {
                string str = (string)s;
                if (a < str.Length)
                {
                    if (a + b > str.Length)
                    {
                        b = str.Length - a;
                    }
                    ret = str.Remove(a, b);
                    ((NakoVariable)sr).SetBodyAutoType(ret);
                }
            }
            return("");
        }
Esempio n. 7
0
        public object _close(INakoFuncCallInfo info)
        {
            object stream = info.StackPop();

            if (stream is FileStream)
            {
                FileStream filestream = (FileStream)stream;
                filestream.Close();
                filestream.Dispose();
            }
            else if (stream is StreamReader)
            {
                StreamReader filestream = (StreamReader)stream;
                filestream.Close();
                filestream.Dispose();
            }
            else if (stream is StreamWriter)
            {
                StreamWriter filestream = (StreamWriter)stream;
                filestream.Close();
                filestream.Dispose();
            }
            return(null);
        }
Esempio n. 8
0
        private object _reverse(INakoFuncCallInfo info)
        {
            object ar = info.StackPop();

            if (!(ar is NakoVariable))
            {
                throw new NakoPluginRuntimeException("『逆順』の引数が変数ではありません");
            }
            object a = ((NakoVariable)ar).Body;

            if (a is NakoVarArray)
            {
                ((NakoVarArray)a).Reverse();
            }
            else
            {
                NakoVarArray a2 = info.CreateArray();
                a2.SetValuesFromString(a.ToString());
                a2.Reverse();
                ((NakoVariable)ar).SetBody(a2, NakoVarType.Array);
            }
            // 結果をセット
            return(null);
        }
Esempio n. 9
0
 private object _search(INakoFuncCallInfo info)
 {
     object ar = info.StackPop();
     int i = (int)info.StackPopAsInt();
     object key = info.StackPop();
     if (!(ar is NakoVarArray))
     {
         throw new NakoPluginRuntimeException("『検索』の引数が配列ではありません");
     }
     NakoVarArray arr = (NakoVarArray)ar;
     while(arr.GetValue(i)!=null){
        object var = arr.GetValue(i);
        if(var.ToString()==key.ToString()){
            return i;
        }
        i++;
     }
     return -1;
 }
Esempio n. 10
0
        public object _post(INakoFuncCallInfo info)
        {
            string url   = info.StackPopAsString();
            object val   = info.StackPop();//TODO:Array
            string e     = info.StackPopAsString();
            string query = "";

            if (val is string)
            {
                query = (string)val;
            }
            else if (val is NakoVariable)
            {
                List <string> qp  = new List <string>();
                NakoVarArray  arr = (NakoVarArray)val;
                foreach (NakoVariable kv in arr)
                {
                    qp.Add(String.Format("{0}={1}", HttpUtility.UrlEncode(kv.key, Encoding.GetEncoding(e)), HttpUtility.UrlEncode((string)kv.Body, Encoding.GetEncoding(e))));
                }
                query = String.Join("&", qp.ToArray());
            }
            else
            {
                throw new Exception("variable is not NakoVariable or string");
            }

            byte[]         queryBytes = Encoding.ASCII.GetBytes(query);
            HttpWebRequest req        = (HttpWebRequest)WebRequest.Create(url);

            req.Method      = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            using (Stream str = req.GetRequestStream())
            {
                str.Write(queryBytes, 0, queryBytes.Length);
            }
            WebResponse response = req.GetResponse();
            string      ret      = "";

            if (e == "Auto")
            {
                using (Stream sr = response.GetResponseStream()) {
                    byte[] buf  = new byte[32768];
                    int    read = 0;
                    using (MemoryStream ms = new MemoryStream()){
                        do
                        {
                            read = sr.Read(buf, 0, buf.Length);
                            if (read > 0)
                            {
                                ms.Write(buf, 0, read);
                            }
                        } while(read > 0);
                        if (ms.Length > 0)
                        {
                            ret = StrUnit.ToStringAutoEnc(ms.ToArray());
                        }
                    }
                }
            }
            else
            {
                using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(e))) {
                    ret = sr.ReadToEnd();
                }
            }
            return(ret);
        }
Esempio n. 11
0
 //TODO:booleanにする?
 public object _next(INakoFuncCallInfo info)
 {
     object c = info.StackPop();
     if(!(c is NpgsqlConnection)){
         throw new NakoPluginArgmentException("connection not found");
     }
     NpgsqlConnection con = (NpgsqlConnection)c;
      int key = con.GetHashCode();
      bool e = _rs[key].Read();
      if(e==false){
      _rs[key].Close();
      _cmd[key].Dispose();
      return 0;
      }
     return 1;
 }
Esempio n. 12
0
 private object _removeright(INakoFuncCallInfo info)
 {
     object sr = info.StackPop();
     int a = (int)info.StackPopAsInt();
     object s = ((NakoVariable)sr).Body;
     object ret;
     if(s is string){
         string _tmp = (string)s;
         ret = _tmp.Remove(_tmp.Length - a);
     }else{
         ret = null;
     }
     ((NakoVariable)sr).SetBodyAutoType(ret);
     return null;
 }
Esempio n. 13
0
 public Object _sample_changeHoge(INakoFuncCallInfo info)
 {
     Object tmp = info.StackPop();
     info.SetVariableValue("HOGE", tmp);
     return null;
 }
Esempio n. 14
0
 /// <summary>
 /// 文字列に追加する
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _append(INakoFuncCallInfo info)
 {
     object sr = info.StackPop();
     object s = ((NakoVariable)sr).Body;
     string a = info.StackPopAsString();
     string ret = (string)s + a;
      ((NakoVariable)sr).SetBodyAutoType(ret);
     return null;
 }
Esempio n. 15
0
 private object _cutRange(INakoFuncCallInfo info)
 {
     object sr = info.StackPop();
     string a = info.StackPopAsString();
     string b = info.StackPopAsString();
     string[] predelim = {a};
     string[] postdelim = {b};
     if(!(sr is NakoVariable)){
         throw new ApplicationException("『範囲切り取る』に変数が設定されていません");
     }
     object s = ((NakoVariable)sr).Body;
     string ret;
     if(s is string){
         string[] split_s = ((string)s).Split(predelim,2,StringSplitOptions.None);
         if(split_s.Length==2){
            ret = split_s[1];
            string[] post_split_s = ret.Split(postdelim,2,StringSplitOptions.None);
            if(post_split_s.Length==2){
            ((NakoVariable)sr).SetBodyAutoType(split_s[0] + post_split_s[1]);
             return post_split_s[0];
             }
         }
     }
     return null;
 }
Esempio n. 16
0
 private object _count(INakoFuncCallInfo info)
 {
     object ar = info.StackPop();
     if (ar is NakoVarArray)
     {
         NakoVarArray arr = (NakoVarArray)ar;
         return arr.Count;
     }else if(ar is string){
         int count = 0;
         System.IO.StringReader sr = new System.IO.StringReader((string)ar);
         while(sr.Peek()>=0){
             sr.ReadLine();
             count++;
         }
         sr.Close();
         return count;
     }
     return 0;//TODO:Exception??
 }
Esempio n. 17
0
 private object _count_array(INakoFuncCallInfo info)
 {
     object ar = info.StackPop();
     if (!(ar is NakoVarArray))
     {
         throw new NakoPluginRuntimeException("『要素数』の引数がarrayではありません");
     }
     NakoVarArray arr = (NakoVarArray)ar;
     return arr.Count;
 }
Esempio n. 18
0
 public object _writeLine(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     object stream = info.StackPop();
     if(stream is StreamWriter){
         StreamWriter filestream = (StreamWriter)stream;
         filestream.WriteLine(s);
     }
     return null;
 }
Esempio n. 19
0
 private object __moveNext(INakoFuncCallInfo info)
 {
     object e = info.StackPop();
     if(e is NakoVariable){
         e = ((NakoVariable)e).Body;
     }
     Type t = e.GetType();
     MethodInfo mi = t.GetMethod("MoveNext",new Type[0]);
     return mi.Invoke(e,null);
 }
Esempio n. 20
0
 public object _readLine(INakoFuncCallInfo info)
 {
     object stream = info.StackPop();
     if(stream is StreamReader){
         StreamReader filestream = (StreamReader)stream;
         return filestream.ReadLine();
     }
     return null;
 }
Esempio n. 21
0
 /*ADODB.Recordset _rs = new ADODB.Recordset();*/
 public object _execute(INakoFuncCallInfo info)
 {
     object c = info.StackPop();
     if(!(c is NpgsqlConnection)){
         throw new NakoPluginArgmentException("connection not found");
     }
     string q = info.StackPopAsString();
     NpgsqlConnection con = (NpgsqlConnection)c;
      NpgsqlCommand cmd = new NpgsqlCommand(q,con);
      if(_rs.ContainsKey(con.GetHashCode())==true){
       _rs[con.GetHashCode()] = cmd.ExecuteReader();
     }else{
     _rs.Add(con.GetHashCode(),cmd.ExecuteReader());
      }
      if(_cmd.ContainsKey(con.GetHashCode())==true){
       _cmd[con.GetHashCode()] = cmd;
     }else{
     _cmd.Add(con.GetHashCode(),cmd);
      }
      //cmd.Dispose();
     return _rs[con.GetHashCode()].FieldCount;
     /*object c = info.StackPop();
     if(!(c is ADODB.Connection)){
         throw new NakoPluginArgmentException("connection not found");
     }
     string q = info.StackPopAsString();
     ADODB.Connection con = (ADODB.Connection)c;
     object affectedrows;
     _rs = con.Execute(q,out affectedrows,(int)ADODB.CommandTypeEnum.adCmdText);
     return affectedrows;*/
 }
        public object _no(INakoFuncCallInfo info)
        {
            CountDown o = info.StackPop() as CountDown;

            return(o.no);
        }
Esempio n. 23
0
        /*
        public object _say(NakoFuncCallInfo info)
        {
            object s = info.StackPop();
            if (s == null) s = "";
            string msg = s.ToString();

            MessageBox.Show(msg);
            return null;
        }
         */
        //private use
        private object __getEnumerator(INakoFuncCallInfo info)
        {
            var a = info.StackPop();
            if(a is NakoVariable){
                a = ((NakoVariable)a).Body;
            }
            Type t = a.GetType();
            MethodInfo mi = t.GetMethod("GetEnumerator",new Type[0]);
            return mi.Invoke(a,null);
        }
Esempio n. 24
0
 /// <summary>
 /// 配列のキー列挙
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _enumKeys(INakoFuncCallInfo info)
 {
     object ar = info.StackPop();
     NakoVarArray arv = (NakoVarArray)ar;
     if (arv.Type != NakoVarType.Array)
     {
         throw new NakoPluginArgmentException("『ハッシュキー列挙』の引数が配列ではありません。");
     }
     string[] keys = arv.GetKeys();
     NakoVarArray res = info.CreateArray();
     int i = 0;
     foreach (string key in keys)
     {
         res.SetValue(i++, key);
     }
     return res;
 }
Esempio n. 25
0
 private object _concat(INakoFuncCallInfo info)
 {
     object ar = info.StackPop();
     string s = info.StackPopAsString();
     if (!(ar is NakoVarArray))
     {
         throw new NakoPluginRuntimeException("『結合』の引数が配列ではありません");
     }
     StringBuilder sb = new StringBuilder();
     NakoVarArray arr = (NakoVarArray)ar;
     int index = 0;
     while(arr.GetValue(index)!=null){
         if(index > 0) sb.Append(s);
         object var = arr.GetValue(index);
         if (var != null)
         {
             sb.Append(var.ToString());
         }
         index++;
     }
     return sb.ToString();
 }
Esempio n. 26
0
 private object __current(INakoFuncCallInfo info)
 {
     object e = info.StackPop();
     if(e is NakoVariable){
         e = ((NakoVariable)e).Body;
     }
     Type t = e.GetType();
     if(e is IEnumerator){
         IEnumerator ie = (IEnumerator)e;
         return ie.Current;
     }
     PropertyInfo pi = t.GetProperty("Current");
     return pi.GetValue(e,null);
 }
Esempio n. 27
0
 /// <summary>
 /// 切り取る
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _cut(INakoFuncCallInfo info)
 {
     object sr = info.StackPop();
     string a = info.StackPopAsString();
     string[] delim = {a};
     if(!(sr is NakoVariable)){
         throw new ApplicationException("『切り取る』に変数が設定されていません");
     }
     object s = ((NakoVariable)sr).Body;
     object ret;
     if(s is string){
         string[] split_s = ((string)s).Split(delim,2,StringSplitOptions.None);
         if(split_s.Length==2){
            ret = split_s[1];
            ((NakoVariable)sr).SetBodyAutoType(ret);
             return split_s[0];
         }
     }
     return null;
 }
Esempio n. 28
0
 private object _insertArray(INakoFuncCallInfo info)
 {
     object obj_base = info.StackPop(); // 参照渡しなので変数への参照が得られる
     int i   = (int)info.StackPopAsInt();
     object obj_insert = info.StackPop();
     if (!(obj_base is NakoVariable))
     {
         throw new NakoPluginRuntimeException("『配列一括挿入』の元配列がvariableではありません");
     }
     NakoVarArray array_insert = new NakoVarArray();
     if (obj_insert is NakoVariable)
     {
         NakoVariable var_insert = (NakoVariable)obj_insert;
         if(var_insert.Body is NakoVarArray){
             array_insert = (NakoVarArray)var_insert.Body;
         }
     }else if(obj_insert is string){
         array_insert.SetValuesFromString((string)obj_insert);
     }else{
         throw new NakoPluginRuntimeException("『配列一括挿入』の挿入配列がvariableではありません");
     }
     NakoVariable var_base = (NakoVariable)obj_base;
     if(var_base.Body is NakoVarArray){
         NakoVarArray array_base = (NakoVarArray)var_base.Body;
         while(array_insert.Count>0){
             NakoVariable variable = array_insert.Pop();
             array_base.Insert(i,variable);
         }
     }
     return null;
 }
Esempio n. 29
0
 private object _remove(INakoFuncCallInfo info)
 {
     object sr = info.StackPop();
     int a = NadesikoPositionToCSPosition((int)info.StackPopAsInt());
     int b = (int)info.StackPopAsInt();
     object s = ((NakoVariable)sr).Body;
     object ret;
     if(s is string){
         ret = ((string)s).Remove(a,b);
     }else{
         ret = null;
     }
     ((NakoVariable)sr).SetBodyAutoType(ret);
     return null;
 }
Esempio n. 30
0
 private object _pop(INakoFuncCallInfo info)
 {
     object ary = info.StackPop(); // 参照渡しなので変数への参照が得られる
     if (!(ary is NakoVariable))
     {
         throw new NakoPluginRuntimeException("『ポップ』の引数がvariableではありません");
     }
     NakoVariable ary_link = (NakoVariable)ary;
     if (ary_link.Body is NakoVarArray)
     {
         NakoVarArray arr = (NakoVarArray)ary_link.Body;
         return arr.Pop();
     }
     // 結果をセット
     return null;
 }
Esempio n. 31
0
 private object __dispose(INakoFuncCallInfo info)
 {
     object e = info.StackPop();
     if(e is NakoVariable){
         e = ((NakoVariable)e).Body;
     }
     if(e is IDisposable){
         ((IDisposable)e).Dispose();
     }
     return null;
 }
Esempio n. 32
0
        private object _removeAt(INakoFuncCallInfo info)
        {
            object a = info.StackPop();
            long   i = info.StackPopAsInt();
            if (!(a is NakoVariable))
            {
                throw new NakoPluginRuntimeException("『削除』の引数が変数ではありません");
            }

            NakoVariable av = (NakoVariable)a;
            NakoVarArray a_body = null;
            // 配列でなければ配列に強制変換する
            if (!(av.Body is NakoVarArray))
            {
                a_body = info.CreateArray();
                a_body.SetValuesFromString(av.Body.ToString());
                av.SetBody(a_body, NakoVarType.Array);
            }
            else
            {
                a_body = (NakoVarArray)av.Body;
            }
            // 要素を削除する
            a_body.RemoveAt((int)i);

            // 結果をセット
            return null;
        }
Esempio n. 33
0
        /// <summary>
        /// Copy the specified info.
        /// </summary>
        /// <param name="info">Info.</param>
        private object _copy(INakoFuncCallInfo info)
        {
            NakoVarArray ar = info.StackPop() as NakoVarArray;

            return(ar.Clone());
        }
Esempio n. 34
0
 private object _reverse(INakoFuncCallInfo info)
 {
     object ar = info.StackPop();
     if (!(ar is NakoVariable))
     {
         throw new NakoPluginRuntimeException("『逆順』の引数が変数ではありません");
     }
     object a = ((NakoVariable)ar).Body;
     if (a is NakoVarArray)
     {
         ((NakoVarArray)a).Reverse();
     }
     else
     {
         NakoVarArray a2 = info.CreateArray();
         a2.SetValuesFromString(a.ToString());
         a2.Reverse();
         ((NakoVariable)ar).SetBody(a2, NakoVarType.Array);
     }
     // 結果をセット
     return null;
 }
Esempio n. 35
0
 /// <summary>
 /// 配列キー存在?
 /// </summary>
 /// <param name="array"></param>
 /// <param name="key"></param>
 /// <returns></returns>
 private object _hasKey(INakoFuncCallInfo info)
 {
     object ar = info.StackPop();
     NakoVarArray arv = (NakoVarArray)ar;
     string searchKey = info.StackPopAsString ();
     if (arv.Type != NakoVarType.Array)
     {
         throw new NakoPluginArgmentException("『存在』の引数が配列ではありません。");
     }
     string[] keys = arv.GetKeys();
     NakoVarArray res = info.CreateArray();
     foreach (string key in keys)
     {
         if (key == searchKey)
             return 1;
     }
     return 0;
 }
Esempio n. 36
0
        public object _getField(INakoFuncCallInfo info)
        {
            object c = info.StackPop();
            if(!(c is NpgsqlConnection)){
                throw new NakoPluginArgmentException("connection not found");
            }
            string s = info.StackPopAsString();
            NpgsqlConnection con = (NpgsqlConnection)c;
             NpgsqlDataReader rs = _rs[con.GetHashCode()];
            return rs[s].ToString();

            /*            object c = info.StackPop();
            string s = info.StackPopAsString();
            return _rs.Fields[s].Value;*/
        }