AjTalk.Model.MethodModel.HasBlock C# (CSharp) Méthode

HasBlock() public méthode

public HasBlock ( ) : bool
Résultat bool
        public bool HasBlock()
        {
            return this.HasBlock(this.body);
        }

Same methods

MethodModel::HasBlock ( IEnumerable expressions ) : bool

Usage Example

Exemple #1
0
        public override void Visit(MethodModel method)
        {
            if (method.Class != null)
            {
                if (method.Class.Name.EndsWith(" class"))
                    this.writer.Write(string.Format("{0}Class.prototype['{1}'] = function(", method.Class.Name.Substring(0, method.Class.Name.Length - " class".Length), ToMethodName(method.Selector)));
                else
                    this.writer.Write(string.Format("{0}.prototype['{1}'] = function(", method.Class.Name, ToMethodName(method.Selector)));
            }
            else
            {
                this.writer.Write(string.Format("function {0}(", ToMethodName(method.Selector)));
            }

            int nparameters = 0;

            foreach (string name in method.ParameterNames)
            {
                if (nparameters > 0)
                    this.writer.Write(", ");
                this.writer.Write(name);
                nparameters++;
            }

            this.writer.WriteLine(")");
            this.writer.WriteLineStart("{");
            this.writer.WriteLine("var self = this;");
            
            // TODO Review local variable for block returns
            if (method.HasBlock())
                this.writer.WriteLine("var __context = {};");

            this.writer.WriteLine(string.Format("console.log('{0}');", ToMethodName(method.Selector)));

            foreach (string locname in method.LocalVariables)
                this.writer.WriteLine(string.Format("var {0} = null", ToVariableName(locname)));

            MethodModel previousMethod = this.CurrentMethod;

            try
            {
                this.CurrentMethod = method;
                this.Visit(method.Body);
            }
            finally
            {
                this.CurrentMethod = previousMethod;
            }

            if (method.Class != null)
                this.writer.WriteLineEnd("};");
            else
                this.writer.WriteLineEnd("}");
        }