void BuildFunction(XmlElement element) { PythonFunction pyFunc; Module.Functions.Add(pyFunc = new PythonFunction() { Name = element.GetAttribute("name"), Region = GetDomRegion(element), }); foreach (XmlElement child in element) { if (child.LocalName == "doc") { pyFunc.Documentation = element.InnerText.Trim(); } else if (child.LocalName == "local") { BuildLocal(child, pyFunc); } else if (child.LocalName == "argument") { BuildArgument(child, pyFunc); } } }
void BuildLocal(XmlElement element, PythonFunction pyFunc) { pyFunc.Locals.Add(new PythonLocal() { Name = element.GetAttribute("name"), Region = GetDomRegion(element) }); }
void BuildArgument(XmlElement element, PythonFunction pyFunc) { pyFunc.Arguments.Add(new PythonArgument() { Name = element.GetAttribute("name"), Region = pyFunc.Region, }); }
void BuildLocal(XmlElement element, PythonFunction pyFunc) { pyFunc.Locals.Add (new PythonLocal () { Name = element.GetAttribute ("name"), Region = GetDomRegion (element) }); }
void BuildFunction(XmlElement element, PythonClass pyClass) { PythonFunction pyFunc; pyClass.Functions.Add (pyFunc = new PythonFunction () { Name = element.GetAttribute ("name"), Region = GetDomRegion (element), }); foreach (XmlElement child in element) if (child.LocalName == "doc") pyFunc.Documentation = element.InnerText.Trim (); else if (child.LocalName == "argument") BuildArgument (child, pyFunc); }
void BuildFunction(XmlElement element) { PythonFunction pyFunc; Module.Functions.Add (pyFunc = new PythonFunction () { Name = element.GetAttribute ("name"), Region = GetDomRegion (element), }); foreach (XmlElement child in element) { if (child.LocalName == "doc") { pyFunc.Documentation = element.InnerText.Trim (); } else if (child.LocalName == "local") { BuildLocal (child, pyFunc); } else if (child.LocalName == "argument") { BuildArgument (child, pyFunc); } } }
void BuildArgument(XmlElement element, PythonFunction pyFunc) { pyFunc.Arguments.Add (new PythonArgument () { Name = element.GetAttribute("name"), Region = pyFunc.Region, }); }
// We only try to add simple member expr, such "self.something", // which are most likely all the possibilites to declare/initialize // a class attribute (field). static bool IsSelfAttr(PythonFunction func, MemberExpression expr, out string attrName) { attrName = null; // NameExpression -> Simple name access var target = expr.Target as NameExpression; if (target == null) return false; if (func.Arguments.Count == 0 || func.Arguments [0].Name != target.Name) return false; attrName = expr.Name; // self.Name return true; }
public override bool Walk(FunctionDefinition node) { if (node.IsLambda) return base.Walk (node); var function = new PythonFunction () { Name = node.Name, Region = GetDomRegion (node), Documentation = node.Documentation }; var parameters = node.Parameters; for (int i = 0; i < parameters.Count; i++) { var param = parameters [i]; string name = param.Name; if (param.IsList) name = "*" + name; else if (param.IsDictionary) name = "**" + name; var p = new PythonArgument () { Name = name, Position = i }; function.Arguments.Add (p); } containers.Peek ().Functions.Add (function); containers.Push (function); return base.Walk (node); }