السلام عليكم،،،
قمت بتطوير أداة جديدة أسميتها MaNa.AdvancedLiteral، تقوم بمعالجة النصوص قبل عرضها على صفحات asp.net لكي استفيد منها في زاوية "حرامي الكودات" و "مكتبتي"، حيث تقوم هذه الأداة Control بتنسيق المواضيع بشكل اتوماتيكي حسب إعدادات مسجلة مسبقا في ملف xml، هذه الأداة Control أسميتها AdvancedLiteral لأن وظيفتها شبيه تماما بوظيفة أداة الـ Literal في ASP.NET، و لكن مع إمكانية معالجة النص قبل عرضه في الصفحة.
فكما هو معلوم، تقوم أداة Literal العادية في ASP.NET بطباعة النص في الصفحة كما هو، بدون أي معالجة، و لكن MaNa.AdvancedLiteral تعتمد على ملف إعدادات Configuration يخبرها بجميع التاقز التي تحتاج معالجة قبل الطباعة في Output Stream، على سبيل المثال:
لو كنا نريد تلوين كود السي شارب المكتوب في موضوع معين، كل ما نحتاج عمله هو تسجيل معالج كود سي شارب في ملف الإعدادات، لكي تقوم الأداة بتحويل كل نص سي شارب في الموضوع إلى هذا المعالج، لكي يقوم بالتلوين و التنسيق بشكل اتوماتيكي،،، (أحس ان الكلام السابق يلحس المخ،، أحد فهم شيء؟ لول)
[chsarp_] .... [/csharp]
و هذا تشغيل حي demo للإداة، مع العلم أنها ما زالت تحت التطوير:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for UIText
/// </summary>
namespace MaNa.Web
{
public class UIText
{
private DataSet ds = new DataSet();
public UIText()
{
ds.ReadXml("Globlaization/ar-sa/strings");
}
public static string PostCollection
{
get
{
return GetSafeConfig("PostCollection", "Post Categories");
}
}
public static string ArticleCollection
{
get
{
return GetSafeConfig("ArticleCollection", "Article Categories");
}
}
public static string ImageCollection
{
get
{
return GetSafeConfig("ImageCollection", "Image Galleries");
}
}
public static string Archives
{
get
{
return GetSafeConfig("Archives", "Archives");
}
}
public static string Comments
{
get
{
return GetSafeConfig("Comments", "Comments");
}
}
public static string PublishedIn
{
get
{
return GetSafeConfig("PublishedIn", "Published in");
}
}
public static string NoComments
{
get
{
return GetSafeConfig("NoComments", "No Comments");
}
}
public static string Entries
{
get
{
return GetSafeConfig("Entries", "Entries");
}
}
private static string GetSafeConfig(string name, string defaultValue)
{
string text = ConfigurationSettings.AppSettings[name] as string;
if (text == null)
{
return defaultValue;
}
return text;
}
}
} |