Example #1
0
        private static ScriptingValue PrimitiveConcat(ScriptingValue[] arguments)
        {
            object a = arguments[0].Value;
            object b = arguments[1].Value;

            if (a is string && b is string)
            {
                return(ScriptingValue.CreateValue(((IConvertible)a).ToString(CultureInfo.InvariantCulture) + ((IConvertible)b).ToString(CultureInfo.InvariantCulture)));
            }
            else
            {
                return(ScriptingValue.CreateArray(arguments[0].Concat(arguments[1]).ToArray()));
            }
        }
Example #2
0
        // reg_find pattern string
        private static ScriptingValue RegFind(ScriptingValue[] arguments)
        {
            string p     = (string)arguments[0].Value;
            string s     = (string)arguments[1].Value;
            Match  match = new Regex(p).Match(s);

            if (match.Success)
            {
                return(ScriptingValue.CreateArray(match.Index, match.Value));
            }
            else
            {
                return(ScriptingValue.CreateArray(-1, ""));
            }
        }
Example #3
0
        // read_file file_name
        private static ScriptingValue ReadFile(ScriptingValue[] arguments)
        {
            string filename = (string)arguments[0].Value;

            try
            {
                using (StreamReader reader = new StreamReader(filename, true))
                {
                    return(ScriptingValue.CreateValue(reader.ReadToEnd()));
                }
            }
            catch (Exception)
            {
                return(ScriptingValue.CreateArray(new object[] { }));
            }
        }
Example #4
0
        // reg_find_all pattern string
        private static ScriptingValue RegFindAll(ScriptingValue[] arguments)
        {
            Regex           p      = new Regex((string)arguments[0].Value);
            string          s      = (string)arguments[1].Value;
            int             index  = 0;
            List <object[]> result = new List <object[]>();

            while (index < s.Length)
            {
                Match match = p.Match(s, index);
                if (match.Success)
                {
                    result.Add(new object[] { match.Index, match.Value });
                    index = match.Index + match.Length;
                }
                else
                {
                    break;
                }
            }
            return(ScriptingValue.CreateArray(result.Cast <object>().ToArray()));
        }
Example #5
0
        // find_all pattern string
        private static ScriptingValue FindAll(ScriptingValue[] arguments)
        {
            string     p      = (string)arguments[0].Value;
            string     s      = (string)arguments[1].Value;
            int        index  = 0;
            List <int> result = new List <int>();

            while (index < s.Length)
            {
                int pos = s.IndexOf(p, index, StringComparison.CurrentCulture);
                if (pos == -1)
                {
                    break;
                }
                else
                {
                    result.Add(pos);
                    index = pos + p.Length;
                }
            }
            return(ScriptingValue.CreateArray(result.Cast <object>().ToArray()));
        }
Example #6
0
 // zip list2 list1
 private static ScriptingValue Zip(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[1].Zip(arguments[0], (a, b) => ScriptingValue.CreateArray(a, b)).ToArray()));
 }
Example #7
0
 // where predicate list
 private static ScriptingValue Where(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[1].Where(v => (bool)arguments[0].Invoke(v).Value).ToArray()));
 }
Example #8
0
 // union list2 list1
 private static ScriptingValue Union(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[1].Union(arguments[0], new ScriptingValueComparer()).ToArray()));
 }
Example #9
0
 // take number list
 private static ScriptingValue Take(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[1].Take((int)arguments[0].Value).ToArray()));
 }
Example #10
0
 // select_many converter list
 private static ScriptingValue SelectMany(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[1].SelectMany(v => arguments[0].Invoke(v)).ToArray()));
 }
Example #11
0
 // reverse list
 private static ScriptingValue Reverse(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[0].Reverse().ToArray()));
 }
Example #12
0
 // order_by converter list
 private static ScriptingValue OrderBy(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[1].OrderBy(s => arguments[0].Invoke(s), new ScriptingValueComparer()).ToArray()));
 }
Example #13
0
 // distinct list
 private static ScriptingValue Distinct(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateArray(arguments[0].Distinct(new ScriptingValueComparer()).ToArray()));
 }