Exemple #1
0
        public static SObject CharAt(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var str = ((SString)instance).Value;

            if (str == "")
            {
                return(processor.CreateString(""));
            }

            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var index = (int)((SNumber)parameters[0]).Value;

                if (index < 0 || index >= str.Length)
                {
                    return(processor.CreateString(""));
                }

                return(processor.CreateString(str[index].ToString()));
            }
            else
            {
                return(processor.CreateString(str[0].ToString()));
            }
        }
Exemple #2
0
        public static SObject PadEnd(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var str         = ((SString)instance).Value;
            int totalLength = 0;
            var padStr      = " ";

            if (TypeContract.Ensure(parameters, new[] { typeof(SNumber), typeof(SString) }))
            {
                totalLength = (int)((SNumber)parameters[0]).Value;
                padStr      = ((SString)parameters[1]).Value;
            }
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                totalLength = (int)((SNumber)parameters[0]).Value;
            }

            if (padStr == "" || totalLength <= str.Length)
            {
                return(processor.CreateString(str));
            }

            while (str.Length < totalLength)
            {
                str += padStr;
            }

            if (str.Length > totalLength)
            {
                str = str.Remove(totalLength);
            }

            return(processor.CreateString(str));
        }
Exemple #3
0
        public static SObject Slice(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, new[] { typeof(SNumber), typeof(SNumber) }))
            {
                var str        = ((SString)instance).Value;
                var sliceBegin = (int)((SNumber)parameters[0]).Value;
                var sliceEnd   = (int)((SNumber)parameters[1]).Value;

                if (sliceBegin < 0)
                {
                    sliceBegin += str.Length;
                }
                if (sliceBegin < 0)
                {
                    sliceBegin = 0;
                }
                if (sliceBegin > str.Length)
                {
                    return(processor.CreateString(""));
                }

                if (sliceEnd < 0)
                {
                    sliceEnd += str.Length;
                }
                if (sliceEnd < 0)
                {
                    sliceEnd = 0;
                }
                if (sliceEnd > str.Length)
                {
                    sliceEnd = str.Length;
                }

                return(processor.CreateString(str.Substring(sliceBegin, sliceEnd - sliceBegin)));
            }
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var str        = ((SString)instance).Value;
                var sliceBegin = (int)((SNumber)parameters[0]).Value;

                if (sliceBegin < 0)
                {
                    sliceBegin += str.Length;
                }
                if (sliceBegin < 0)
                {
                    sliceBegin = 0;
                }
                if (sliceBegin > str.Length)
                {
                    return(processor.CreateString(""));
                }

                return(processor.CreateString(str.Substring(sliceBegin)));
            }

            return(processor.Undefined);
        }
Exemple #4
0
        public static SObject TrimEnd(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            string str = ((SString)instance).Value;

            string[] trimChars = { " " };

            if (TypeContract.Ensure(parameters, typeof(SArray)))
            {
                trimChars = ((SArray)parameters[0]).ArrayMembers.Select(m => m.ToString(processor).Value).ToArray();
            }
            else if (TypeContract.Ensure(parameters, typeof(SString)))
            {
                trimChars = new[] { ((SString)parameters[0]).Value };
            }

            foreach (var trimChar in trimChars)
            {
                while (str.EndsWith(trimChar))
                {
                    str = str.Remove(str.Length - trimChar.Length);
                }
            }

            return(processor.CreateString(str));
        }
Exemple #5
0
        public static SObject Remove(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, new[] { typeof(SNumber), typeof(SNumber) }))
            {
                var str    = ((SString)instance).Value;
                var start  = (int)((SNumber)parameters[0]).Value;
                var length = (int)((SNumber)parameters[1]).Value;

                if (start < 0)
                {
                    start = 0;
                }
                if (start > str.Length)
                {
                    return(processor.CreateString(str));
                }

                if (length <= 0)
                {
                    return(processor.CreateString(str));
                }
                if (length + start > str.Length)
                {
                    length = str.Length - start;
                }

                return(processor.CreateString(str.Remove(start, length)));
            }
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var str   = ((SString)instance).Value;
                var start = (int)((SNumber)parameters[0]).Value;

                if (start < 0)
                {
                    start = 0;
                }
                if (start > str.Length)
                {
                    return(processor.CreateString(str));
                }

                return(processor.CreateString(str.Remove(start)));
            }

            return(processor.Undefined);
        }
Exemple #6
0
        public static SObject Repeat(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var repeatStr = ((SString)instance).Value;
                var times     = (int)((SNumber)parameters[0]).Value;
                var str       = "";

                for (int i = 0; i < times; i++)
                {
                    str += repeatStr;
                }

                return(processor.CreateString(str));
            }

            return(processor.CreateString(((SString)instance).Value));
        }
Exemple #7
0
        public static SObject Replace(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, new[] { typeof(SString), typeof(SString) }))
            {
                var str     = (instance as SString).Value;
                var replace = (parameters[0] as SString).Value;
                var with    = (parameters[1] as SString).Value;

                if (string.IsNullOrWhiteSpace(replace))
                {
                    return(processor.CreateString(str));
                }

                return(processor.CreateString(str.Replace(replace, with)));
            }

            return(processor.Undefined);
        }
Exemple #8
0
        public static SObject Concat(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (parameters.Length > 0)
            {
                var str = (SString)instance;

                string result = str.Value;
                foreach (var param in parameters)
                {
                    string concatStr = param.ToString(processor).Value;
                    result += concatStr;
                }

                return(processor.CreateString(result));
            }

            return(processor.CreateString(((SString)instance).Value));
        }
Exemple #9
0
        public static SObject Split(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            int limit = -1;

            string[] split;
            string[] delimiters;
            string   str = (instance as SString).Value;

            if (TypeContract.Ensure(parameters, new[] { typeof(SArray), typeof(SNumber) }))
            {
                delimiters = (parameters[0] as SArray).ArrayMembers.Select(m => m.ToString(processor).Value).ToArray();
                limit      = (int)(parameters[1] as SNumber).Value;
            }
            else if (TypeContract.Ensure(parameters, typeof(SArray)))
            {
                delimiters = (parameters[0] as SArray).ArrayMembers.Select(m => m.ToString(processor).Value).ToArray();
            }
            else if (TypeContract.Ensure(parameters, new[] { typeof(SString), typeof(SNumber) }))
            {
                delimiters = new[] { (parameters[0] as SString).Value };
                limit      = (int)(parameters[1] as SNumber).Value;
            }
            else if (TypeContract.Ensure(parameters, typeof(SString)))
            {
                delimiters = new[] { (parameters[0] as SString).Value };
            }
            else
            {
                return(processor.CreateArray(new[] { processor.CreateString(str) }));
            }

            split = str.Split(delimiters, StringSplitOptions.None);
            if (limit >= 0 && split.Length > limit)
            {
                var result = new string[limit];
                Array.Copy(split, result, limit);
                split = result;
            }

            return(processor.CreateArray(split.Select(m => processor.CreateString(m)).ToArray()));
        }
Exemple #10
0
        public static SObject CharAt(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var str = (instance as SString).Value;

            if (str == "")
                return processor.CreateString("");

            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var index = (int)(parameters[0] as SNumber).Value;

                if (index < 0 || index >= str.Length)
                    return processor.CreateString("");

                return processor.CreateString(str[index].ToString());
            }
            else
            {
                return processor.CreateString(str[0].ToString());
            }
        }
Exemple #11
0
        private static SObject constructor(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var obj = (SError)instance;

            if (parameters.Length > 0)
            {
                SString message;

                if (parameters[0] is SString)
                    message = (SString)parameters[0];
                else
                    message = parameters[0].ToString(processor);

                obj.Members[MEMBER_NAME_MESSAGE].Data = message;
            }

            if (parameters.Length > 1)
            {
                SString errorType;

                if (parameters[1] is SString)
                    errorType = (SString)parameters[1];
                else
                    errorType = parameters[1].ToString(processor);

                obj.Members[MEMBER_NAME_TYPE].Data = errorType;
            }
            else
            {
                obj.Members[MEMBER_NAME_TYPE].Data = processor.CreateString("UserError");
            }

            if (parameters.Length > 2)
            {
                SNumber errorLine;

                if (parameters[2] is SNumber)
                    errorLine = (SNumber)parameters[2];
                else
                    errorLine = parameters[2].ToNumber(processor);

                obj.Members[MEMBER_NAME_LINE].Data = errorLine;
            }
            else
            {
                obj.Members[MEMBER_NAME_LINE].Data = processor.CreateNumber(-1);
            }

            return obj;
        }
Exemple #12
0
        public static SObject PadStart(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var    str         = (instance as SString).Value;
            int    totalLength = 0;
            var    padStr      = " ";
            string newPadded   = "";

            if (TypeContract.Ensure(parameters, new[] { typeof(SNumber), typeof(SString) }))
            {
                totalLength = (int)(parameters[0] as SNumber).Value;
                padStr      = (parameters[1] as SString).Value;
            }
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                totalLength = (int)(parameters[0] as SNumber).Value;
            }

            if (padStr == "" || totalLength <= str.Length)
            {
                return(processor.CreateString(str));
            }

            while (newPadded.Length + str.Length < totalLength)
            {
                newPadded += padStr;
            }

            if (newPadded.Length + str.Length > totalLength)
            {
                newPadded = newPadded.Remove(totalLength - str.Length);
            }

            str = newPadded + str;

            return(processor.CreateString(str));
        }
Exemple #13
0
        public static SObject Concat(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (parameters.Length > 0)
            {
                var str = instance as SString;

                string result = str.Value;
                foreach (var param in parameters)
                {
                    string concatStr = param.ToString(processor).Value;
                    result += concatStr;
                }

                return processor.CreateString(result);
            }

            return processor.CreateString((instance as SString).Value);
        }
Exemple #14
0
        private static SObject ConstructorImpl(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var obj = (SError)instance;

            if (parameters.Length > 0)
            {
                var stringParameter = parameters[0] as SString;
                var message         = stringParameter ?? parameters[0].ToString(processor);

                obj.Members[MemberNameMessage].Data = message;
            }

            if (parameters.Length > 1)
            {
                var stringParameter = parameters[1] as SString;
                var errorType       = stringParameter ?? parameters[1].ToString(processor);

                obj.Members[MemberNameType].Data = errorType;
            }
            else
            {
                obj.Members[MemberNameType].Data = processor.CreateString("UserError");
            }

            if (parameters.Length > 2)
            {
                var line      = parameters[2] as SNumber;
                var errorLine = line ?? parameters[2].ToNumber(processor);

                obj.Members[MemberNameLine].Data = errorLine;
            }
            else
            {
                obj.Members[MemberNameLine].Data = processor.CreateNumber(-1);
            }

            return(obj);
        }
Exemple #15
0
 private static SObject TranslateString(ScriptProcessor processor, string strIn)
 {
     return processor.CreateString(strIn);
 }
Exemple #16
0
 public static SObject ToUpper(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
 {
     string str = (instance as SString).Value;
     return processor.CreateString(str.ToUpper());
 }
Exemple #17
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return processor.CreateString(ToScriptSource());
 }
Exemple #18
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return(processor.CreateString(LITERAL_OBJECT_STR));
 }
Exemple #19
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return(processor.CreateString(LiteralNull));
 }
Exemple #20
0
 /// <summary>
 /// Returns the string representation of this object.
 /// </summary>
 internal virtual SString ToString(ScriptProcessor processor)
 {
     return(processor.CreateString(LiteralUndefined));
 }
Exemple #21
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return processor.CreateString(Value, Escaped, false);
 }
Exemple #22
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return(processor.CreateString(ConvertToScriptString(Value)));
 }
Exemple #23
0
 /// <summary>
 /// Returns the string representation of this object.
 /// </summary>
 internal virtual SString ToString(ScriptProcessor processor)
 {
     return processor.CreateString(LITERAL_UNDEFINED);
 }
Exemple #24
0
        public static SObject Slice(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, new[] { typeof(SNumber), typeof(SNumber) }))
            {
                var str = (instance as SString).Value;
                var sliceBegin = (int)(parameters[0] as SNumber).Value;
                var sliceEnd = (int)(parameters[1] as SNumber).Value;

                if (sliceBegin < 0)
                    sliceBegin += str.Length;
                if (sliceBegin < 0)
                    sliceBegin = 0;
                if (sliceBegin > str.Length)
                    return processor.CreateString("");

                if (sliceEnd < 0)
                    sliceEnd += str.Length;
                if (sliceEnd < 0)
                    sliceEnd = 0;
                if (sliceEnd > str.Length)
                    sliceEnd = str.Length;

                return processor.CreateString(str.Substring(sliceBegin, sliceEnd - sliceBegin));
            }
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var str = (instance as SString).Value;
                var sliceBegin = (int)(parameters[0] as SNumber).Value;

                if (sliceBegin < 0)
                    sliceBegin += str.Length;
                if (sliceBegin < 0)
                    sliceBegin = 0;
                if (sliceBegin > str.Length)
                    return processor.CreateString("");

                return processor.CreateString(str.Substring(sliceBegin));
            }

            return processor.Undefined;
        }
Exemple #25
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return(processor.CreateString(ToScriptSource()));
 }
Exemple #26
0
        public static SObject Remove(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, new[] { typeof(SNumber), typeof(SNumber) }))
            {
                var str = (instance as SString).Value;
                var start = (int)(parameters[0] as SNumber).Value;
                var length = (int)(parameters[1] as SNumber).Value;

                if (start < 0)
                    start = 0;
                if (start > str.Length)
                    return processor.CreateString(str);

                if (length <= 0)
                    return processor.CreateString(str);
                if (length + start > str.Length)
                    length = str.Length - start;

                return processor.CreateString(str.Remove(start, length));
            }
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var str = (instance as SString).Value;
                var start = (int)(parameters[0] as SNumber).Value;
                
                if (start < 0)
                    start = 0;
                if (start > str.Length)
                    return processor.CreateString(str);

                return processor.CreateString(str.Remove(start));
            }

            return processor.Undefined;
        }
Exemple #27
0
        public static SObject TrimEnd(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            string str = (instance as SString).Value;
            string[] trimChars = { " " };

            if (TypeContract.Ensure(parameters, typeof(SArray)))
            {
                trimChars = (parameters[0] as SArray).ArrayMembers.Select(m => m.ToString(processor).Value).ToArray();
            }
            else if (TypeContract.Ensure(parameters, typeof(SString)))
            {
                trimChars = new[] { (parameters[0] as SString).Value };
            }

            foreach (var trimChar in trimChars)
            {
                while (str.EndsWith(trimChar))
                    str = str.Remove(str.Length - trimChar.Length);
            }

            return processor.CreateString(str);
        }
Exemple #28
0
 public static SObject Empty(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
 {
     return processor.CreateString("");
 }
Exemple #29
0
        private static SObject constructor(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var obj = (SError)instance;

            if (parameters.Length > 0)
            {
                SString message;

                if (parameters[0] is SString)
                {
                    message = (SString)parameters[0];
                }
                else
                {
                    message = parameters[0].ToString(processor);
                }

                obj.Members[MEMBER_NAME_MESSAGE].Data = message;
            }

            if (parameters.Length > 1)
            {
                SString errorType;

                if (parameters[1] is SString)
                {
                    errorType = (SString)parameters[1];
                }
                else
                {
                    errorType = parameters[1].ToString(processor);
                }

                obj.Members[MEMBER_NAME_TYPE].Data = errorType;
            }
            else
            {
                obj.Members[MEMBER_NAME_TYPE].Data = processor.CreateString("UserError");
            }

            if (parameters.Length > 2)
            {
                SNumber errorLine;

                if (parameters[2] is SNumber)
                {
                    errorLine = (SNumber)parameters[2];
                }
                else
                {
                    errorLine = parameters[2].ToNumber(processor);
                }

                obj.Members[MEMBER_NAME_LINE].Data = errorLine;
            }
            else
            {
                obj.Members[MEMBER_NAME_LINE].Data = processor.CreateNumber(-1);
            }

            return(obj);
        }
Exemple #30
0
        public static SObject Replace(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, new[] { typeof(SString), typeof(SString) }))
            {
                var str = (instance as SString).Value;
                var replace = (parameters[0] as SString).Value;
                var with = (parameters[1] as SString).Value;

                if (string.IsNullOrWhiteSpace(replace))
                    return processor.CreateString(str);

                return processor.CreateString(str.Replace(replace, with));
            }

            return processor.Undefined;
        }
Exemple #31
0
 // ReSharper disable InconsistentNaming
 public static SObject toString(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
 // ReSharper restore InconsistentNaming
 {
     return(processor.CreateString(LiteralObjectStr));
 }
Exemple #32
0
        public static SObject Repeat(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                var repeatStr = (instance as SString).Value;
                var times = (int)(parameters[0] as SNumber).Value;
                var str = "";

                for (int i = 0; i < times; i++)
                    str += repeatStr;

                return processor.CreateString(str);
            }

            return processor.CreateString((instance as SString).Value);
        }
Exemple #33
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return processor.CreateString(LITERAL_OBJECT_STR);
 }
Exemple #34
0
        public static SObject PadStart(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            var str = (instance as SString).Value;
            int totalLength = 0;
            var padStr = " ";
            string newPadded = "";

            if (TypeContract.Ensure(parameters, new[] { typeof(SNumber), typeof(SString) }))
            {
                totalLength = (int)(parameters[0] as SNumber).Value;
                padStr = (parameters[1] as SString).Value;
            }
            if (TypeContract.Ensure(parameters, typeof(SNumber)))
            {
                totalLength = (int)(parameters[0] as SNumber).Value;
            }

            if (padStr == "" || totalLength <= str.Length)
                return processor.CreateString(str);

            while (newPadded.Length + str.Length < totalLength)
                newPadded += padStr;

            if (newPadded.Length + str.Length > totalLength)
                newPadded = newPadded.Remove(totalLength - str.Length);

            str = newPadded + str;

            return processor.CreateString(str);
        }
Exemple #35
0
 public static SObject toString(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
 {
     return processor.CreateString(LITERAL_OBJECT_STR);
 }
Exemple #36
0
        public static SObject ToUpper(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            string str = ((SString)instance).Value;

            return(processor.CreateString(str.ToUpper()));
        }
Exemple #37
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return processor.CreateString(ConvertToScriptString(Value));
 }
Exemple #38
0
 public static SObject Empty(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
 {
     return(processor.CreateString(""));
 }
Exemple #39
0
 /// <summary>
 /// Returns the string representation of this object.
 /// </summary>
 internal virtual SString ToString(ScriptProcessor processor)
 {
     return(processor.CreateString(LITERAL_UNDEFINED));
 }
Exemple #40
0
        public static SObject Split(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
        {
            int limit = -1;
            string[] split;
            string[] delimiters;
            string str = (instance as SString).Value;

            if (TypeContract.Ensure(parameters, new[] { typeof(SArray), typeof(SNumber) }))
            {
                delimiters = (parameters[0] as SArray).ArrayMembers.Select(m => m.ToString(processor).Value).ToArray();
                limit = (int)(parameters[1] as SNumber).Value;
            }
            else if (TypeContract.Ensure(parameters, typeof(SArray)))
            {
                delimiters = (parameters[0] as SArray).ArrayMembers.Select(m => m.ToString(processor).Value).ToArray();
            }
            else if (TypeContract.Ensure(parameters, new[] { typeof(SString), typeof(SNumber) }))
            {
                delimiters = new[] { (parameters[0] as SString).Value };
                limit = (int)(parameters[1] as SNumber).Value;
            }
            else if (TypeContract.Ensure(parameters, typeof(SString)))
            {
                delimiters = new[] { (parameters[0] as SString).Value };
            }
            else
            {
                return processor.CreateArray(new[] { processor.CreateString(str) });
            }

            split = str.Split(delimiters, StringSplitOptions.None);
            if (limit >= 0 && split.Length > limit)
            {
                var result = new string[limit];
                Array.Copy(split, result, limit);
                split = result;
            }

            return processor.CreateArray(split.Select(m => processor.CreateString(m)).ToArray());
        }
Exemple #41
0
 internal override SString ToString(ScriptProcessor processor)
 {
     return(processor.CreateString(Value, Escaped, false));
 }
Exemple #42
0
        /// <summary>
        /// Sets a member of the original script object.
        /// </summary>
        public void SetMember(string identifier, object value)
        {
            SObject data = ScriptInAdapter.Translate(_processor, value);

            _objReference.SetMember(_processor, _processor.CreateString(identifier), false, data);
        }
Exemple #43
0
 private static SObject TranslateString(ScriptProcessor processor, string strIn)
 {
     return(processor.CreateString(strIn));
 }
Exemple #44
0
 public static SObject toString(ScriptProcessor processor, SObject instance, SObject This, SObject[] parameters)
 {
     return(processor.CreateString(LITERAL_OBJECT_STR));
 }