private void Render(RenderExpression source, CSharpRenderingContext context)
        {
            if (source.Expression.Children.Count == 0)
            {
                return;
            }

            if (source.DocumentLocation != null)
            {
                using (context.Writer.BuildLinePragma(source.DocumentLocation))
                    using (context.Writer.NoIndent())
                    {
                        var paddingString = BuildAssignmentOffsetPadding(source.Padding);

                        context.Writer
                        .Write(paddingString)
                        .WriteStartAssignment(DesignTimeVariable);

                        using (context.Writer.BuildCodeMapping(source.DocumentLocation))
                        {
                            context.Render(source.Expression.Children);
                        }

                        context.Writer.WriteLine(";");
                    }
            }
            else
            {
                context.Writer.WriteStartAssignment(DesignTimeVariable);
                context.Render(source.Expression.Children);
                context.Writer.WriteLine(";");
            }
        }
        private static void Render(RenderExpression source, CSharpRenderingContext context)
        {
            IDisposable linePragmaScope = null;

            if (source.DocumentLocation != null)
            {
                linePragmaScope = context.Writer.BuildLinePragma(source.DocumentLocation);
            }

            var renderingConventions = context.GetRenderingConventions();

            renderingConventions.StartWriteMethod();
            context.Render(source.Expression.Children);
            context.Writer.WriteEndMethodInvocation();

            linePragmaScope?.Dispose();
        }
示例#3
0
文件: KoRenderers.cs 项目: Aethon/odo
        public static RenderAction RenderStringCompare(Expression expression, RenderExpression render, out string renderedExpression)
        {
            renderedExpression = null;
            var exp = expression as MethodCallExpression;

            if (exp == null || exp.Method != StandardResolvers.StringCompareMethodInfo)
                return RenderAction.None;

            string left;
            string right;
            if (RenderAction.Fail == render(exp.Arguments[0], render, out left) ||
                RenderAction.Fail == render(exp.Arguments[1], render, out right))
                return RenderAction.Fail;

            renderedExpression = string.Format("{0}.localeCompare({1})", left, right);
            return RenderAction.Rendered;
        }
示例#4
0
文件: KoRenderers.cs 项目: Aethon/odo
        public static RenderAction RenderBindingGetValue(Expression expression, RenderExpression render, out string renderedExpression)
        {
            renderedExpression = null;
            var exp = expression as MethodCallExpression;

            if (exp == null || !StandardResolvers.IsBindingGetValueMethod(exp.Method))
                return RenderAction.None;

            // TODO
            string arg;
            string obj;
            if (RenderAction.Fail == render(exp.Object, render, out obj) ||
                RenderAction.Fail == render(exp.Arguments[0], render, out arg))
                return RenderAction.Fail;

            renderedExpression = string.Format("({0})({1})", obj, arg);
            return RenderAction.Rendered;
        }
示例#5
0
文件: KoRenderers.cs 项目: Aethon/odo
        public static RenderAction IsMetadataDeclarationForMethod(Expression expression, RenderExpression render, out string renderedExpression)
        {
            renderedExpression = null;
            var exp = expression as MethodCallExpression;

            if (exp == null || !StandardResolvers.IsBindingGetValueMethod(exp.Method))
                return RenderAction.None;

            // TODO
            string arg;
            string name; // this is kloooge...fix it soon
            if (RenderAction.Fail == render(exp.Arguments[0], render, out arg) ||
                RenderAction.Fail == render(exp.Object, render, out name))
                return RenderAction.Fail;

            renderedExpression = string.Format("({0}).__md.{1}", arg, name);
            return RenderAction.Rendered;
        }