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; }
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); }
// 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; }
//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); }
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()); }
// 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からはじまるので }
public Object _getFromClipboard(INakoFuncCallInfo info) { return(Clipboard.GetText()); }
private object _guid(INakoFuncCallInfo info) { return(System.Guid.NewGuid().ToString()); }
private object _intVal(INakoFuncCallInfo info) { return(info.StackPopAsInt()); }
private object _nakoVersion(INakoFuncCallInfo info) { return(NakoInfo.NakoVersion); }
private object _quit(INakoFuncCallInfo info) { Environment.Exit(0); return(null); }
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); }
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(); }
private object _uppercase(INakoFuncCallInfo info) { string s = info.StackPopAsString(); return(s.ToUpper()); }
/// <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); }
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; }
public object _unixtime_to_datetime(INakoFuncCallInfo info) { long unixtime = info.StackPopAsInt(); return(UnixEpoch.AddSeconds(unixtime).ToLocalTime()); }
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; }
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(); }
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; }
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); }
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; }
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; }
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; }
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",""); } }
public Object _getTempDir(INakoFuncCallInfo info) { return(_path(System.IO.Path.GetTempPath())); }
private object _uppercase(INakoFuncCallInfo info) { string s = info.StackPopAsString(); return s.ToUpper(); }
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",""); } }); }
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); }