public static string ObjectCreatePhpScriptCode(object v) { if (v == null || v == System.DBNull.Value) { return("NULL"); } Type t = v.GetType(); //if (typeof(Color).Equals(t)) //{ // Color c = (Color)v; // return WebPage.GetColorString(c); //} //if (typeof(Font).Equals(t)) //{ // Font ft = (Font)v; // return WebPage.GetFontStyleString(ft); //} if (VPLUtil.IsNumber(t)) { return(v.ToString()); } TypeConverter tc = TypeDescriptor.GetConverter(t); if (tc != null && tc.CanConvertTo(typeof(string))) { string vs = tc.ConvertToInvariantString(v); return(string.Format(CultureInfo.InvariantCulture, "'{0}'", vs)); } return(string.Format(CultureInfo.InvariantCulture, "'{0}'", v)); }
public bool IsNullOrDefaultValue() { if (_value == null) { return(true); } IJavascriptType js = _value as IJavascriptType; if (js != null) { return(js.IsDefaultValue()); } if (VPLUtil.IsNumber(_type)) { try { double d = Convert.ToDouble(_value); return(d != 0); } catch { return(true); } } if (typeof(bool).Equals(_type)) { try { bool b = Convert.ToBoolean(_value); if (b) { return(false); } else { return(true); } } catch { return(true); } } if (typeof(DateTime).Equals(_type)) { try { DateTime dt = Convert.ToDateTime(_value); return(dt > DateTime.MinValue); } catch { return(true); } } return(false); }
public static string ObjectCreateJavaScriptCode(object v) { if (v == null || v == System.DBNull.Value) { return("null"); } Type t = v.GetType(); if (typeof(bool).Equals(t)) { bool c = Convert.ToBoolean(v); if (c) { return("true"); } else { return("false"); } } if (typeof(Color).Equals(t)) { Color c = (Color)v; return(string.Format(CultureInfo.InvariantCulture, "'{0}'", WebPageCompilerUtility.GetColorString(c))); } if (typeof(Font).Equals(t)) { Font ft = (Font)v; return(string.Format(CultureInfo.InvariantCulture, "'{0}'", WebPageCompilerUtility.GetFontStyleString(ft))); } if (typeof(Cursor).Equals(t)) { return(string.Format(CultureInfo.InvariantCulture, "'{0}'", WebPageCompilerUtility.GetJavascriptCursorValue((Cursor)v, true))); } if (VPLUtil.IsNumber(t)) { return(v.ToString()); } if (t.IsArray) { Array a = v as Array; StringBuilder sb = new StringBuilder("["); if (a.Length > 0) { sb.Append(ObjectCreateJavaScriptCode(a.GetValue(0))); for (int i = 1; i < a.Length; i++) { sb.Append(","); sb.Append(ObjectCreateJavaScriptCode(a.GetValue(i))); } } sb.Append("]"); return(sb.ToString()); } return(string.Format(CultureInfo.InvariantCulture, "'{0}'", v)); }
public string GetPhpCode() { if (VPLUtil.IsNumber(_type)) { if (_value == null) { return("0"); } return(_value.ToString()); } if (typeof(bool).Equals(_type)) { bool b = Convert.ToBoolean(_value); if (b) { return("true"); } else { return("false"); } } if (typeof(DateTime).Equals(_type)) { if (_value == null) { return("'1900-01-01'"); } try { DateTime dt = Convert.ToDateTime(_value); return(string.Format(CultureInfo.InvariantCulture, "(new DateTime('{0}'))", dt.ToString("yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture))); } catch { string sd = _value.ToString(); if (string.IsNullOrEmpty(sd)) { return("date('Y-m-d H:i:s')"); } return(_value.ToString()); } } if (_value == null) { return("''"); } string s = _value.ToString(); return(string.Format(CultureInfo.InvariantCulture, "'{0}'", s.Replace("'", "\\'"))); }
public static string ObjectCreatePhpScriptCode(object v) { if (v == null || v == System.DBNull.Value) { return("NULL"); } Type t = v.GetType(); if (typeof(bool).Equals(t)) { bool c = Convert.ToBoolean(v); if (c) { return("True"); } else { return("False"); } } if (typeof(DateTime).Equals(t)) { DateTime dt = (DateTime)v; return(string.Format(CultureInfo.InvariantCulture, "'{0}-{1}-{2} {3}:{4}:{5}'", dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second)); } if (t.IsEnum) { return(((int)(v)).ToString(CultureInfo.InvariantCulture)); } if (VPLUtil.IsNumber(t)) { return(v.ToString()); } TypeConverter tc = TypeDescriptor.GetConverter(t); if (tc != null && tc.CanConvertTo(typeof(string))) { string vs = tc.ConvertToInvariantString(v); if (vs == null) { return("null"); } else { return(string.Format(CultureInfo.InvariantCulture, "\"{0}\"", vs.Replace("\"", "\\\""))); } } return(string.Format(CultureInfo.InvariantCulture, "'{0}'", v)); }
public string GetJsCode() { if (VPLUtil.IsNumber(_type)) { if (_value == null) { return("0"); } return(_value.ToString()); } if (typeof(bool).Equals(_type)) { bool b = Convert.ToBoolean(_value); if (b) { return("true"); } else { return("false"); } } if (typeof(DateTime).Equals(_type)) { if (_value == null) { return("'1900-01-01'"); } DateTime dt = Convert.ToDateTime(_value); return(string.Format(CultureInfo.InvariantCulture, "'{0}'", dt.ToString("yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture))); } IJavascriptType js = _value as IJavascriptType; if (js != null) { return(js.GetValueJsCode()); } if (_value == null) { return("''"); } string s = _value.ToString(); return(string.Format(CultureInfo.InvariantCulture, "'{0}'", s.Replace("'", "\\'"))); }
/// <summary> /// create a CodeExpression to generate an object /// </summary> /// <param name="v">the object to be generated</param> /// <returns>the CodeExpression generating the object</returns> public static CodeExpression ObjectCreationCode(object v) { //===simple values=== if (v == null) { return(new CodePrimitiveExpression(null)); } if (v == System.DBNull.Value) { return(new CodePropertyReferenceExpression(new CodeTypeReferenceExpression(typeof(System.DBNull)), "Value")); } Type t = v.GetType(); if (t.Equals(typeof(EventArgs))) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(EventArgs)), "Empty")); } if (t.IsPrimitive) { if (t.Equals(typeof(IntPtr)) || t.Equals(typeof(UIntPtr))) { CodeObjectCreateExpression coce; if (t.Equals(typeof(IntPtr))) { IntPtr val = (IntPtr)v; if (IntPtr.Size == 4) { coce = new CodeObjectCreateExpression(t, new CodePrimitiveExpression(val.ToInt32())); } else { coce = new CodeObjectCreateExpression(t, new CodePrimitiveExpression(val.ToInt64())); } } else { UIntPtr val = (UIntPtr)v; if (IntPtr.Size == 4) { coce = new CodeObjectCreateExpression(t, new CodePrimitiveExpression(val.ToUInt32())); } else { coce = new CodeObjectCreateExpression(t, new CodePrimitiveExpression(val.ToUInt64())); } } return(coce); } else { CodePrimitiveExpression cpi = new CodePrimitiveExpression(v); if (VPLUtil.IsNumber(t)) { if (!typeof(int).Equals(t)) { return(new CodeCastExpression(t, cpi)); } } return(cpi); } } if (t.Equals(typeof(string))) { return(new CodePrimitiveExpression(v)); } if (t.IsEnum) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(t), v.ToString())); } if (t.IsArray) { Type te = t.GetElementType(); Array a = (Array)v; if (a.Rank == 1) { CodeExpression[] inits = new CodeExpression[a.Length]; for (int i = 0; i < inits.Length; i++) { object val = a.GetValue(i); if (val == null) { inits[i] = GetDefaultValueExpression(te); } else { inits[i] = ObjectCreationCodeGen.ObjectCreationCode(val); } } CodeArrayCreateExpression ac = new CodeArrayCreateExpression(t, inits); return(ac); } else { StringBuilder sb = new StringBuilder(CreateArrayCreationCodeString(a.Rank, te.Name)); sb.Append("{"); for (int i = 0; i < a.Rank; i++) { if (i > 0) { sb.Append(","); } sb.Append("{"); for (int j = a.GetLowerBound(i); j <= a.GetUpperBound(i); j++) { if (j > 0) { sb.Append(","); } sb.Append(ObjectCreationCodeGen.GetObjectCreationCodeSnippet(a.GetValue(i, j))); } sb.Append("}"); } sb.Append("}"); return(new CodeSnippetExpression(sb.ToString())); } } //===use plug-ins to handle it=== if (creators != null) { foreach (IGetObjectCreationCode occ in creators.Values) { CodeExpression ce = occ.ObjectCreationCode(v); if (ce != null) { return(ce); } } } //===use default handlers=== if (t.Equals(typeof(Size))) { Size v1 = (Size)v; return(new CodeObjectCreateExpression(t, new CodePrimitiveExpression(v1.Width), new CodePrimitiveExpression(v1.Height))); } if (t.Equals(typeof(Point))) { Point v1 = (Point)v; return(new CodeObjectCreateExpression(t, new CodePrimitiveExpression(v1.X), new CodePrimitiveExpression(v1.Y))); } if (t.Equals(typeof(Color))) { Color v1 = (Color)v; return(new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(Color)), "FromArgb"), new CodeCastExpression(typeof(int), new CodePrimitiveExpression(v1.A)), new CodeCastExpression(typeof(int), new CodePrimitiveExpression(v1.R)), new CodeCastExpression(typeof(int), new CodePrimitiveExpression(v1.G)), new CodeCastExpression(typeof(int), new CodePrimitiveExpression(v1.B)) )); } if (t.Equals(typeof(Cursor))) { //System.Windows.Forms.Cursors. Cursor v1 = (Cursor)v; if (v1 == Cursors.AppStarting) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "AppStarting")); } else if (v1 == Cursors.Arrow) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "Arrow")); } else if (v1 == Cursors.Cross) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "Cross")); } else if (v1 == Cursors.Default) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "Default")); } else if (v1 == Cursors.Hand) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "Hand")); } else if (v1 == Cursors.Help) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "Help")); } else if (v1 == Cursors.HSplit) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "HSplit")); } else if (v1 == Cursors.IBeam) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "IBeam")); } else if (v1 == Cursors.No) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "No")); } else if (v1 == Cursors.NoMove2D) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "NoMove2D")); } else if (v1 == Cursors.NoMoveHoriz) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "NoMoveHoriz")); } else if (v1 == Cursors.NoMoveVert) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "NoMoveVert")); } else if (v1 == Cursors.PanEast) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanEast")); } else if (v1 == Cursors.PanNE) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanNE")); } else if (v1 == Cursors.PanNorth) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanNorth")); } else if (v1 == Cursors.PanNW) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanNW")); } else if (v1 == Cursors.PanSE) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanSE")); } else if (v1 == Cursors.PanSouth) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanSouth")); } else if (v1 == Cursors.PanSW) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanSW")); } else if (v1 == Cursors.PanWest) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "PanWest")); } else if (v1 == Cursors.SizeAll) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "SizeAll")); } else if (v1 == Cursors.SizeNESW) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "SizeNESW")); } else if (v1 == Cursors.SizeNS) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "SizeNS")); } else if (v1 == Cursors.SizeNWSE) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "SizeNWSE")); } else if (v1 == Cursors.SizeWE) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "SizeWE")); } else if (v1 == Cursors.UpArrow) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "UpArrow")); } else if (v1 == Cursors.VSplit) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "VSplit")); } else if (v1 == Cursors.WaitCursor) { return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(Cursors)), "WaitCursor")); } else { CursorConverter cc = new CursorConverter(); string s = cc.ConvertToString(v); return(new CodeMethodInvokeExpression( new CodeObjectCreateExpression(typeof(CursorConverter), null), "ConvertFromString", new CodePrimitiveExpression(s) )); } } if (t.Equals(typeof(Font))) { Font f = (Font)v; return(new CodeObjectCreateExpression(typeof(Font), new CodePrimitiveExpression(f.FontFamily.ToString()), new CodePrimitiveExpression(f.Size))); } if (t.Equals(typeof(Icon))) { Icon ic = (Icon)v; using (MemoryStream ms = new MemoryStream()) { ic.Save(ms); byte[] bs = ms.ToArray(); CodeObjectCreateExpression coce = new CodeObjectCreateExpression(); coce.CreateType = new CodeTypeReference(t); CodeObjectCreateExpression p1 = new CodeObjectCreateExpression(); coce.Parameters.Add(p1); p1.CreateType = new CodeTypeReference(typeof(MemoryStream)); CodeExpression p2 = ObjectCreationCode(bs); p1.Parameters.Add(p2); return(coce); } } //use string converter =================================== TypeConverter sc = TypeDescriptor.GetConverter(t); if (sc != null) { if (sc.CanConvertTo(typeof(string)) && sc.CanConvertFrom(typeof(string))) { string svalue = sc.ConvertToInvariantString(v); CodeMethodInvokeExpression mgc = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(typeof(TypeDescriptor)), "GetConverter", new CodeTypeOfExpression(t)); CodeMethodInvokeExpression fs = new CodeMethodInvokeExpression(mgc, "ConvertFromInvariantString", new CodePrimitiveExpression(svalue)); // return(new CodeCastExpression(t, fs)); } } //===use TypeConverter as the last resort=== PropertyDescriptorCollection pifs = TypeDescriptor.GetProperties(v); if (pifs == null || pifs.Count == 0) { return(new CodeObjectCreateExpression(t)); } int nCount = 0; for (int i = 0; i < pifs.Count; i++) { if (pifs[i].IsBrowsable && !pifs[i].IsReadOnly) { nCount++; } } if (nCount == 0) { return(new CodeObjectCreateExpression(t)); } string sCodeSnippet = GetObjectCreationCodeSnippet(v); return(new CodeSnippetExpression(sCodeSnippet)); }
public static string ObjectCreateJavaScriptCode(object v) { if (v == null || v == System.DBNull.Value) { return("null"); } IJavascriptType ijt = v as IJavascriptType; if (ijt != null) { return(ijt.GetValueJsCode()); } Type t = v.GetType(); if (typeof(WebMouseButton).Equals(t)) { WebMouseButton wmb = (WebMouseButton)v; switch (wmb) { case WebMouseButton.Left: return("JsonDataBinding.mouseButtonLeft()"); case WebMouseButton.Middle: return("4"); default: return("2"); } } if (typeof(Cursor).Equals(t)) { Cursor cr = (Cursor)v; return(string.Format(CultureInfo.InvariantCulture, "'{0}'", GetJavascriptCursorValue(cr, true))); } if (typeof(EnumWebCursor).Equals(t)) { return(string.Format(CultureInfo.InvariantCulture, "'{0}'", v.ToString().Replace("_", "-"))); } if (t.IsEnum) { if (JavaScriptEnumAttribute.IsJavaScriptEnum(t)) { return(string.Format(CultureInfo.InvariantCulture, "{0}.{1}", t.FullName, Enum.GetName(t, v))); } else { return(string.Format(CultureInfo.InvariantCulture, "'{0}'", v)); } } if (typeof(string).Equals(t)) { string s = v as string; if (s.Length == 0) { return("''"); } s = s.Replace("\r", "\\r").Replace("\n", "\\n").Replace("'", "\\'"); return(string.Format(CultureInfo.InvariantCulture, "'{0}'", s)); } if (typeof(bool).Equals(t)) { bool c = Convert.ToBoolean(v); if (c) { return("true"); } else { return("false"); } } if (typeof(Color).Equals(t)) { Color c = (Color)v; return(string.Format(CultureInfo.InvariantCulture, "'{0}'", GetColorString(c))); } if (typeof(Font).Equals(t)) { Font ft = (Font)v; return(string.Format(CultureInfo.InvariantCulture, "'{0}'", GetFontStyleString(ft))); } if (typeof(Cursor).Equals(t)) { return(string.Format(CultureInfo.InvariantCulture, "'{0}'", GetJavascriptCursorValue((Cursor)v, true))); } if (VPLUtil.IsNumber(t)) { return(v.ToString()); } if (t.IsArray) { Array a = v as Array; StringBuilder sb = new StringBuilder("["); if (a.Length > 0) { sb.Append(ObjectCreateJavaScriptCode(a.GetValue(0))); for (int i = 1; i < a.Length; i++) { sb.Append(","); sb.Append(ObjectCreateJavaScriptCode(a.GetValue(i))); } } sb.Append("]"); return(sb.ToString()); } return(string.Format(CultureInfo.InvariantCulture, "'{0}'", v)); }