代码拉取完成,页面将自动刷新
同步操作将从 shengu/scriptparser 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
ScriptParser是一款可以在.net的环境下,解析执行javascript
语法的开源组件,其主要定位如下:
javascript
来控制逻辑的模板机制,以便在.net环境下,可以动态生成文本(比如:某些情况下,代替.aspx生成html页面等)目前ECMAScript 5
的语法,除了with语法、Property、正则表达式
等个别语法之外,其它的都有支持。
支持的预设类型:Object、Array、Number、String、Date
,以及部分预设方法:parseInt、parseFloat、stringify、eval
等。
支持对DataTable
的访问。
支持开发者根据需要,添加需要在javascript
中调用的类、对象、方法及属性。
javascript
对象的特殊性,所有需要传入到javascript
中去访问的对象、方法,都需要直接或间接的转化成继承于IScriptObject的对象。.net中的对象,如果没有特别处理,会使用
ScriptType
、ScriptNativeObject
、ScriptNativeArray
、ScriptNativeFunction
进行包装后,供javascript
的语句中调用。
请参见ScriptTest项目
//解析javascript语法,创建ScriptParser
ScriptParser parser = ScriptParser.Parse("var i = 0; return i + inc;");
//创建执行上下文:ScriptContext
ScriptContext context = new ScriptContext();
//添加变量,以及方法映射
context.AddValue("inc", 100);
//执行
parser.Execute(context);
//获取执行结果
object result = context.Result.ToValue(context);
class ScriptResult
{
private string source;
private StringBuilder builder;
public ScriptResult(string source)
{
this.source = source;
this.builder = new StringBuilder();
}
[ScriptMapping("output")]
public void Output(int index, int length)
{
builder.Append(source.Substring(index, length));
}
[ScriptMapping("write")]
public void Write(IScriptObject value, ScriptContext context)
{
builder.Append(value.ToValueString(context));
}
public override string ToString()
{
return builder.ToString();
}
}
javascript
,并将ScriptResult
映射到ScriptContext
中执行//将包含<@XXX></@XXX>的标签,转成可以执行的javascript语法
TagParser reader = new TagParser();
string script = reader.Parse(text, "output", "write", true);
//解析javascript语法
ScriptParser parser = ScriptParser.Parse(script);
ScriptContext context = new ScriptContext();
//将output和write的方法映射添加到执行的上下文中
ScriptResult result = new ScriptResult(text);
context.AddMappings(result);
//执行javascript脚本
parser.Execute(context);
//读取结果
string content = result.ToString();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。