public static ScriptSyntaxAttribute Get(Type type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } ScriptSyntaxAttribute attribute = type.GetTypeInfo().GetCustomAttribute <ScriptSyntaxAttribute>() ?? new ScriptSyntaxAttribute(type.Name, "..."); return(attribute); }
public override object Evaluate(TemplateContext context) { // Check that the Target is actually a function var functionCall = Target as ScriptFunctionCall; if (functionCall == null) { var parameterLessFunction = context.Evaluate(Target, true); if (!(parameterLessFunction is IScriptCustomFunction)) { ScriptSyntaxAttribute targetPrettyname = ScriptSyntaxAttribute.Get(Target); throw new ScriptRuntimeException(Target.Span, string.Format(RS.WrapEvalFailed, Target, targetPrettyname.Name)); } context.BlockDelegates.Push(Body); return(ScriptFunctionCall.Call(context, this, parameterLessFunction, false)); } else { context.BlockDelegates.Push(Body); return(context.Evaluate(functionCall)); } }