The Labs \ Source Viewer \ SSCLI \ Microsoft.JScript \ StringConstructor

  1. // ==++==
  2. //
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. //
  14. // ==--==
  15. namespace Microsoft.JScript
  16. {
  17.    
  18.     using System;
  19.     using System.Diagnostics;
  20.     using System.Text;
  21.    
  22.     public class StringConstructor : ScriptFunction
  23.     {
  24.         static internal readonly StringConstructor ob = new StringConstructor();
  25.        
  26.         private StringPrototype originalPrototype;
  27.        
  28.         internal StringConstructor() : base(FunctionPrototype.ob, "String", 1)
  29.         {
  30.             this.originalPrototype = StringPrototype.ob;
  31.             StringPrototype._constructor = this;
  32.             this.proto = StringPrototype.ob;
  33.         }
  34.        
  35.         internal StringConstructor(FunctionPrototype parent, LenientStringPrototype prototypeProp) : base(parent, "String", 1)
  36.         {
  37.             this.originalPrototype = prototypeProp;
  38.             prototypeProp.constructor = this;
  39.             this.proto = prototypeProp;
  40.             this.noExpando = false;
  41.         }
  42.        
  43.         internal override object Call(object[] args, object thisob)
  44.         {
  45.             if (args.Length == 0)
  46.                 return "";
  47.             else
  48.                 return Convert.ToString(args[0]);
  49.         }
  50.        
  51.         internal StringObject Construct()
  52.         {
  53.             return new StringObject(this.originalPrototype, "", false);
  54.         }
  55.        
  56.         internal override object Construct(object[] args)
  57.         {
  58.             return this.CreateInstance(args);
  59.         }
  60.        
  61.         internal StringObject ConstructImplicitWrapper(string arg)
  62.         {
  63.             return new StringObject(this.originalPrototype, arg, true);
  64.         }
  65.        
  66.         internal StringObject ConstructWrapper(string arg)
  67.         {
  68.             return new StringObject(this.originalPrototype, arg, false);
  69.         }
  70.        
  71.         [JSFunctionAttribute(JSFunctionAttributeEnum.HasVarArgs)]
  72.         public new StringObject CreateInstance(params object[] args)
  73.         {
  74.             return new StringObject(this.originalPrototype, args.Length == 0 ? "" : Convert.ToString(args[0]), false);
  75.         }
  76.        
  77.         public string Invoke(object arg)
  78.         {
  79.             return Convert.ToString(arg);
  80.         }
  81.        
  82.         [JSFunctionAttribute(JSFunctionAttributeEnum.HasVarArgs, JSBuiltin.String_fromCharCode)]
  83.         public static string fromCharCode(params object[] args)
  84.         {
  85.             StringBuilder str = new StringBuilder(args.Length);
  86.             for (int i = 0; i < args.Length; i++)
  87.                 str.Append(Convert.ToChar(args[i]));
  88.             return str.ToString();
  89.         }
  90.     }
  91. }

Developer Fusion