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;
 }
 // Define Method
 public object _abort(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     foreach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName(s)){
         p.Kill();
     }
     return null;
 }
Exemple #3
0
 public object _decode(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     var json = fastJSON.JSON.Instance.Parse(s);
     NakoVarArray a = ArrayToNakoVarArray(json);
     return a;
     //            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
     //            object json = serializer.Deserialize<object>(s);
 }
Exemple #4
0
 // Define Method
 public Object _eval(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     NakoCompiler compiler = new NakoCompiler();
     compiler.DirectSource = s;
     NakoInterpreter runner = new NakoInterpreter(compiler.Codes);
     runner.Run();
     Console.WriteLine("EVALLOG=" + runner.PrintLog);
     return runner.globalVar.GetValue(0);
 }
 public object _ps(INakoFuncCallInfo info)
 {
     NakoVarArray result = new NakoVarArray();
     foreach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses()){
         try{
         result.SetValue(result.Count,p.ProcessName);
         }catch(Exception e){
         }
     }
     return result;
 }
Exemple #6
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;
        }
        public Object _directoryDialog(INakoFuncCallInfo info)
        {
            string s = info.StackPopAsString();

            FolderBrowserDialog fbd = new FolderBrowserDialog();

            //RootFolderには特殊フォルダしか指定できないのでとりあえずSelectedPathで代用
            fbd.SelectedPath = s;
            //ダイアログを表示する
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                //OKボタンがクリックされたとき
                return fbd.SelectedPath;
            }
            return null;
        }
 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;*/
 }
 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;
 }
 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);
 }
Exemple #11
0
 private object _os(INakoFuncCallInfo info)
 {
     return(NWEnviroment.osVersionStr());
 }
        public object _filenameOfUrl(INakoFuncCallInfo info)
        {
            string url = info.StackPopAsString();

            return(Path.GetFileName(url));
        }
 public object _create(INakoFuncCallInfo info)
 {
     return(new CountDown());
 }
Exemple #14
0
        // Define Method
        /// <summary>
        /// 文字列の長さを調べる
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        private object _length(INakoFuncCallInfo info)
        {
            string s = info.StackPopAsString();

            return(s.Length);
        }
        public object _baseOfUrl(INakoFuncCallInfo info)
        {
            string url = info.StackPopAsString();

            return(url.Replace(Path.GetFileName(url), ""));
        }
 /// <summary>
 /// ゼロ埋め
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _zeroFill(INakoFuncCallInfo info)
 {
     long s = info.StackPopAsInt();
     string l = info.StackPopAsInt().ToString();
     return String.Format(@"{0:D"+l+"}",s);
 }
 private object _strpos(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     string ss = info.StackPopAsString();
     int i = s.IndexOf(ss);
     return (i + 1); // 1からはじまるので
 }
Exemple #18
0
 public Object _getFromClipboard(INakoFuncCallInfo info)
 {
     return(Clipboard.GetText());
 }
Exemple #19
0
 private object _guid(INakoFuncCallInfo info)
 {
     return(System.Guid.NewGuid().ToString());
 }
Exemple #20
0
 private object _intVal(INakoFuncCallInfo info)
 {
     return(info.StackPopAsInt());
 }
Exemple #21
0
 private object _nakoVersion(INakoFuncCallInfo info)
 {
     return(NakoInfo.NakoVersion);
 }
Exemple #22
0
 private object _quit(INakoFuncCallInfo info)
 {
     Environment.Exit(0);
     return(null);
 }
Exemple #23
0
 private object _beep(INakoFuncCallInfo info)
 {
     // BEEP
     System.Media.SystemSounds.Beep.Play();
     return(null);
 }
 /// <summary>
 /// 置換
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _replace(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     string search = info.StackPopAsString();
     string replace = info.StackPopAsString();
     return s.Replace(search,replace);
 }
 /// <summary>
 /// 右から部分文字列を返す
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _right(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     int len = (int)info.StackPopAsInt();
     return s.Substring(s.Length-len);
 }
Exemple #26
0
        public Object _enumWindows(INakoFuncCallInfo info)
        {
            string s = EnumWindows.GetTitle();

            return(s);
        }
 /// <summary>
 /// トリム
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _trim(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     return s.Trim();
 }
Exemple #28
0
        private object _uppercase(INakoFuncCallInfo info)
        {
            string s = info.StackPopAsString();

            return(s.ToUpper());
        }
Exemple #29
0
        /// <summary>
        /// トリム
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        private object _trim(INakoFuncCallInfo info)
        {
            string s = info.StackPopAsString();

            return(s.Trim());
        }
 /// <summary>
 /// 文字抜き出す
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _extract(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     int a = NadesikoPositionToCSPosition((int)info.StackPopAsInt());
     int cnt = (int)info.StackPopAsInt();
     return s.Substring(a,cnt);
 }
Exemple #31
0
        public object _updateDate(INakoFuncCallInfo info)
        {
            string s = info.StackPopAsString();

            return(File.GetLastWriteTime(s).ToShortDateString());
        }
 /// <summary>
 /// 左からN文字の部分文字列
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _left(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     int len = (int)info.StackPopAsInt();
     return s.Substring(0,len);
 }
        public object _domainOfUrl(INakoFuncCallInfo info)
        {
            string url = info.StackPopAsString();

            return(new Uri(url).Host);
        }
 private object _num(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     char c1 = s[0];
     int num;
     if(int.TryParse(c1.ToString(), out num)){
         return 1;
     }else{
         return 0;
     }
 }
        public object _no(INakoFuncCallInfo info)
        {
            CountDown o = info.StackPop() as CountDown;

            return(o.no);
        }
 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;
 }
Exemple #37
0
        public object _unixtime_to_datetime(INakoFuncCallInfo info)
        {
            long unixtime = info.StackPopAsInt();

            return(UnixEpoch.AddSeconds(unixtime).ToLocalTime());
        }
Exemple #38
0
 private object _osVersion(INakoFuncCallInfo info)
 {
     return(System.Environment.OSVersion.Version);
 }
 private object _explode(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     string a = info.StackPopAsString();
     string[] splitted = s.Split(new string[]{a},StringSplitOptions.None);
     NakoVarArray arr = info.CreateArray();
     for(int i=0;i<splitted.Length;i++){
         arr.SetValue(i,splitted[i]);
     }
     return arr;
 }
Exemple #40
0
 public Object _getBokanDir(INakoFuncCallInfo info)
 {
     //TODO:母艦パスが未実装
     return(_path(NWEnviroment.AppPath));
 }
 private object _insert(INakoFuncCallInfo info)
 {
     StringBuilder s = new StringBuilder(info.StackPopAsString());
     int cnt = NadesikoPositionToCSPosition((int)info.StackPopAsInt());
     string a = info.StackPopAsString();
     return s.Insert(cnt,a).ToString();
 }
Exemple #42
0
 public Object _getRuntimeDir(INakoFuncCallInfo info)
 {
     return(_path(NWEnviroment.AppPath));
 }
 // Define Method
 /// <summary>
 /// 文字列の長さを調べる
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _length(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     return s.Length;
 }
Exemple #44
0
 public object _getCurrentDir(INakoFuncCallInfo info)
 {
     return(_path(Directory.GetCurrentDirectory()));
 }
 private object _occurrence(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     string search = info.StackPopAsString();
     return (int)((s.Length - s.Replace(search,"").Length)/search.Length);
 }
Exemple #46
0
 public Object _getDesktopDir(INakoFuncCallInfo info)
 {
     return(GetSpecialDir(Environment.SpecialFolder.DesktopDirectory));
 }
 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;
 }
Exemple #48
0
 public Object _getStartupDir(INakoFuncCallInfo info)
 {
     return(GetSpecialDir(Environment.SpecialFolder.Startup));
 }
 /// <summary>
 /// 単置換
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _replace_a(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     string search = info.StackPopAsString();
     string replace = info.StackPopAsString();
     int index = s.IndexOf(search);
     string pre = s.Substring(0,index);
     string post = s.Substring(index+search.Length);
     return pre + replace + post;
 }
Exemple #50
0
 public Object _getMyMusic(INakoFuncCallInfo info)
 {
     return(GetSpecialDir(Environment.SpecialFolder.MyMusic));
 }
 /// <summary>
 /// 文字列検索
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 private object _search(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     string needle = info.StackPopAsString();
     return s.IndexOf(needle) + 1;
 }
Exemple #52
0
 public Object _getSystemDir(INakoFuncCallInfo info)
 {
     return(GetSpecialDir(Environment.SpecialFolder.System));
 }
 private object _toKana(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
      if(NWEnviroment.isWindows()){
         return Strings.StrConv(s, VbStrConv.Hiragana, 0);
      }else{
      return LinuxCommand.execute("echo '"+s+"' | nkf --hiragana").Replace("\n","");
      }
 }
Exemple #54
0
 public Object _getTempDir(INakoFuncCallInfo info)
 {
     return(_path(System.IO.Path.GetTempPath()));
 }
 private object _uppercase(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     return s.ToUpper();
 }
Exemple #56
0
 public Object _getAppDataDir(INakoFuncCallInfo info)
 {
     return(GetSpecialDir(Environment.SpecialFolder.LocalApplicationData));
 }
 private object _alnumToEn(INakoFuncCallInfo info)
 {
     string s = info.StackPopAsString();
     return Regex.Replace(s,@"[0-9A-Za-z:- ]+",delegate(Match m){
     if(NWEnviroment.isWindows()){
             return Strings.StrConv(m.Value, VbStrConv.Narrow, 0);
     }else{
         return LinuxCommand.execute("echo '"+m.Value+"' | nkf -Z3").Replace("\n","");
     }
     });
 }
Exemple #58
0
        public object _relativePath(INakoFuncCallInfo info)
        {
            string s = info.StackPopAsString();

            return(System.IO.Path.GetFullPath(s));
        }
 public Object _sample_changeHoge(INakoFuncCallInfo info)
 {
     Object tmp = info.StackPop();
     info.SetVariableValue("HOGE", tmp);
     return null;
 }
        public object _post(INakoFuncCallInfo info)
        {
            string url   = info.StackPopAsString();
            object val   = info.StackPop();//TODO:Array
            string head  = info.StackPopAsString();
            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 (StringReader rs = new StringReader(head))
            {
                string line;
                while ((line = rs.ReadLine()) != null)
                {
                    string[] heads = line.Split(new string[] { ":" }, 2, StringSplitOptions.None);
                    req.Headers.Add(heads[0], heads[1]);
                }
            }
            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);
        }