public MetaItem(Node node) { Node = node; Name = node.GetAttributeValue("name"); FormattedName = StringUtils.CapitalizeFirstLetter(Name); // Get item comment if (Node.Children != null) { var descNode = Node.GetChildByType(NodeType.Desc); if (descNode != null && !String.IsNullOrWhiteSpace(descNode.Attributes["text"])) { Comment = descNode.Attributes["text"]; } } OverriddenFrom = node.GetAttributeValue("overriddenFrom"); if (OverriddenFrom != null) { OverriddenFrom = TypeMapper.MapType(OverriddenFrom); } DocFrom = node.GetAttributeValue("docFrom"); if (DocFrom != null) { DocFrom = TypeMapper.MapType(DocFrom); } }
public MetaEvent(Node node) : base(node) { var typesNode = node.GetChildByType(NodeType.Types); if (typesNode != null) { EventType = TypeMapper.MapType(typesNode.Children[0].GetAttributeValue("type")); } // Add 'On' in front of all the event names because many times there will be properties or methods with the same names FormattedName = "On" + FormattedName; }
public MetaMethodParameter(Node node) : base(node) { if (node.Children != null) { // There could be more than one parameter type, in which case make it an object var typesNode = node.GetChildByType(NodeType.Types); if (typesNode.Children.Count == 1) { Type = typesNode.Children[0].GetAttributeValue("type"); } else { // If only one of the parameter types is non-null, set it as a parameter type // otherwise set the parameter type to object var nonNullTypes = new List<string>(); foreach (var typeNode in typesNode.Children) { var type = typeNode.GetAttributeValue("type"); if (type != "null") { nonNullTypes.Add(type); } } if (nonNullTypes.Count == 1) { Type = nonNullTypes[0]; } else { Type = "object"; } } } if (Type == "Function" && Name == "listener") Type = "FunctionListener"; Type = TypeMapper.MapType(Type); if (Type == null) { Type = "object"; } DefaultValue = node.GetAttributeValue("defaultValue"); FormatDefaultValue(); Name = TypeMapper.EscapeIdentifier(Name); }
public MetaMethod(Node node, MetaClass metaClass) : base(node) { IsConstructor = node.Attributes.ContainsKey("isCtor") && node.GetAttributeValue("isCtor") == "True"; if (IsConstructor) { Name = metaClass.Name; FormattedName = Name; ReturnType = ""; } else { FormattedName = StringUtils.CapitalizeFirstLetter(FormattedName.Replace("$", "")); } IsStatic = node.Attributes.ContainsKey("isStatic") && node.GetAttributeValue("isStatic") == "True"; AccessType = node.GetAttributeValue("access"); if (AccessType == null) AccessType = "public"; Parameters = new List<MetaMethodParameter>(); var paramsNode = node.GetChildByType(NodeType.Params); if (paramsNode != null) { foreach (var el in paramsNode.Children) { Parameters.Add(new MetaMethodParameter(el)); } } // Make all parameters following the optional ones to also be optional (not always the case) bool hasOptional = false; foreach (var parameter in Parameters) { if (parameter.DefaultValue != null) { hasOptional = true; } else if (hasOptional) { parameter.DefaultValue = "null"; parameter.FormatDefaultValue(); } } // Get the return / parameter type from the relevant property (if there is one) var fromProperty = node.GetAttributeValue("fromProperty"); if (fromProperty != null) { var property = metaClass.Properties.FirstOrDefault(p => p.Name == fromProperty); if (property != null) { if (Name.StartsWith("get")) { ReturnType = property.Type; } else if (Name.StartsWith("set")) { Parameters[0].Type = property.Type; } } } // Get return type from the metadata if (ReturnType == null && fromProperty == null) { var returnNode = node.GetChildByType(NodeType.Return); if (returnNode != null) { var typesNode = returnNode.GetChildByType(NodeType.Types); if (typesNode != null) { // There could be more than one return type, in which case make it an object if (typesNode.Children.Count == 1) { ReturnType = typesNode.Children[0].GetAttributeValue("type"); } else { // If only one of the return types is non-null, set it as a return type // otherwise set the return type to object var nonNullTypes = new List<string>(); foreach (var typeNode in typesNode.Children) { var type = typeNode.GetAttributeValue("type"); if (type != "null") { nonNullTypes.Add(type); } } if (nonNullTypes.Count == 1) { ReturnType = nonNullTypes[0]; } else { ReturnType = "object"; } } } var commentNode = returnNode.GetChildByType(NodeType.Desc); if (commentNode != null) { ReturnComment = commentNode.GetAttributeValue("text"); } } } if (ReturnType == "null") ReturnType = "object"; if (!IsConstructor) { if (ReturnType == null) ReturnType = "void"; else ReturnType = TypeMapper.MapType(ReturnType); } }