コード例 #1
0
 public override CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
 {
     return(new CodeMethodInvokeExpression(
                new CodeTypeReferenceExpression(typeof(LabelExpressionBuilder)),
                "GetLabel",
                new CodePrimitiveExpression(entry.Expression.Trim()),
                new CodePrimitiveExpression(context.VirtualPath)));
 }
コード例 #2
0
 public override CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
 {
     return(new CodeMethodInvokeExpression(
                new CodeTypeReferenceExpression(typeof(ComponentExpressionBuilder)),
                "GetComponent",
                new CodePrimitiveExpression(entry.Expression.Trim()),
                new CodeTypeOfExpression(new CodeTypeReference(entry.PropertyInfo.PropertyType))));
 }
コード例 #3
0
ファイル: IronExpressionBuilder.cs プロジェクト: ltwlf/IronSP
        public override object EvaluateExpression(object target, System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
        {
            string value      = String.Empty;
            string scriptName = entry.Expression;

            try
            {
                string functionName = null;

                if (scriptName.Contains("@"))
                {
                    var tmp = scriptName.Split('@');
                    functionName = tmp[0].Trim();
                    scriptName   = tmp[1].Trim();
                }
                else
                {
                    throw new ArgumentException("Invalid expression! Use <%$Iron:My.sayHello@my/functions.rb");
                }

                engine = IronRuntime.GetDefaultIronRuntime(SPContext.Current.Site).GetEngineByExtension(Path.GetExtension(scriptName));
                value  = engine.InvokeDynamicFunction(functionName, scriptName, target, entry).ToString();
            }
            catch (Exception ex)
            {
                IronRuntime.LogError("Error", ex);

                if (SPContext.Current.Web.UserIsSiteAdmin && engine.IronRuntime.IronHive.Web.CurrentUser.IsSiteAdmin)
                {
                    var    eo    = engine.ScriptEngine.GetService <ExceptionOperations>();
                    string error = eo.FormatException(ex);

                    IronRuntime.LogError(String.Format("Error executing script {0}: {1}", scriptName, error), ex);

                    value = error;

                    if (engine != null)
                    {
                        new IronLogger(engine.IronRuntime).Log(String.Format("Ruby Error: {0} at {1}", ex.Message, error));
                    }
                }
                else
                {
                    value = "Error occured";
                }
            }

            return(value);
        }
コード例 #4
0
 public override System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, System.Web.Compilation.ExpressionBuilderContext context)
 {
     // here is where the magic happens that tells the compiler
     // what to do with the expression it found.
     // in this case we return a CodeMethodInvokeExpression that
     // makes the compiler insert a call to our custom method
     // 'GetValueFromKey'
     CodeExpression[] inputParams = new CodeExpression[] {
         new CodePrimitiveExpression(entry.Expression.Trim()),
         new CodeTypeOfExpression(entry.DeclaringType),
         new CodePrimitiveExpression(entry.PropertyInfo.Name)
     };
     return(new CodeMethodInvokeExpression(
                new CodeTypeReferenceExpression(
                    this.GetType()
                    ),
                "GetValueFromKey",
                inputParams
                ));
 }
 // Methods
 public virtual System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
 {
 }
 public virtual object EvaluateExpression(object target, System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
 {
 }
 public override System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, Object parsedData, ExpressionBuilderContext context)
 {
     return(default(System.CodeDom.CodeExpression));
 }
 public override Object EvaluateExpression(Object target, System.Web.UI.BoundPropertyEntry entry, Object parsedData, ExpressionBuilderContext context)
 {
     return(default(Object));
 }
コード例 #9
0
 public override CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
 {
     return(new CodeSnippetExpression(entry.Expression.Trim()));
 }
コード例 #10
0
ファイル: IronExpressionBuilder.cs プロジェクト: ltwlf/IronSP
 public override System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
 {
     throw new NotSupportedException();
 }
コード例 #11
0
 public abstract System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, Object parsedData, ExpressionBuilderContext context);