private static void AddEvents(FileModel aFile, BlockModel docModel, bool targetAIR, bool targetFP10) { aFile.MetaDatas = new List <ASMetaData>(); foreach (EventModel ev in docModel.Events) { if (!targetAIR && ev.IsAIR) { continue; } if (!targetFP10 && ev.IsFP10) { continue; } int p = ev.EventType.LastIndexOf('.'); string type = ev.EventType.Substring(0, p); string pname = ev.EventType.Substring(p + 1); ClassModel eClass = getClass(type); if (eClass.IsVoid()) { continue; } string value = '"' + ev.Name + '"'; if (eClass.Members.Items.Any <MemberModel>(item => item.Name == pname)) { ASMetaData meta = new ASMetaData("Event"); if (ev.Comment != null) { meta.Comments = "\r\n\t * " + ev.Comment + "\r\n\t * @eventType " + ev.EventType; } meta.ParseParams(String.Format("name=\"{0}\", type=\"{1}\"", ev.Name, type)); aFile.MetaDatas.Add(meta); } } }
private void ReadEventMeta(ASDocItem doc) { if (IsEmptyElement) { return; } ASMetaData meta = new ASMetaData("Event"); meta.Kind = ASMetaKind.Event; meta.Comments = ""; string eName = null; string eType = null; string eFullType = null; string eon = Name; ReadStartElement(); while (Name != eon) { if (NodeType == XmlNodeType.Element) { switch (Name) { case "shortdesc": meta.Comments = ReadValue() ?? ""; break; case "apiDesc": if (meta.Comments == "") { meta.Comments = ReadValue() ?? ""; } break; case "apiName": eName = ReadValue(); break; case "adobeApiEventClassifier": eType = ReadValue().Replace(':', '.'); break; case "apiEventType": eFullType = ReadValue(); break; } } Read(); } if (doc.Meta == null) { doc.Meta = new List <ASMetaData>(); } meta.Params = new Dictionary <string, string>(); meta.Params["name"] = eName; meta.Params["type"] = eType; if (eFullType != null) { meta.Comments = meta.Comments.Trim() + "\n@eventType\t" + eFullType.Replace(':', '.'); } meta.RawParams = String.Format("name=\"{0}\", type=\"{1}\"", eName, eType); doc.Meta.Add(meta); }
private void ReadStyleMeta(ASDocItem doc) { if (IsEmptyElement || !HasAttributes) { return; } ASMetaData meta = new ASMetaData("Style"); meta.Kind = ASMetaKind.Style; meta.Comments = ""; string sName = GetAttribute("name"); string sType = GetAttribute("type"); //string sInherit = GetAttribute("inherit"); //string sFormat = GetAttribute("format"); string sEnum = GetAttribute("enumeration"); string sDefault = null; string eon = Name; ReadStartElement(); while (Name != eon) { if (NodeType == XmlNodeType.Element) { switch (Name) { case "description": meta.Comments = ReadValue() ?? ""; break; case "default": sDefault = ReadValue(); break; } } Read(); } if (doc.Meta == null) { doc.Meta = new List <ASMetaData>(); } if (sDefault != null) { meta.Comments = meta.Comments.Trim() + "\n@default\t" + sDefault; } meta.Params = new Dictionary <string, string>(); meta.Params["name"] = sName; meta.Params["type"] = sType; meta.RawParams = String.Format("name=\"{0}\", type=\"{1}\"", sName, sType); if (sEnum != null) { meta.Params["enumeration"] = sEnum; meta.RawParams += ", enumeration=\"" + sEnum + "\""; } doc.Meta.Add(meta); }
private static FileModel ParseInclude(FileModel fileModel, ASMetaData meta) { Match m = reIncPath.Match(meta.RawParams); if (m.Success) { string path = m.Groups[2].Value; if (path.Length == 0) { return(null); } // retrieve from cache if (includesCache.ContainsKey(path)) { return(includesCache[path]); } // relative path? string fileName = path; if (!Path.IsPathRooted(fileName)) { if (fileName[0] == '/' || fileName[0] == '\\') { fileName = Path.Combine(fileModel.BasePath, fileName); } else { fileName = Path.Combine(Path.GetDirectoryName(fileModel.FileName), fileName); } } // parse & cache if (!File.Exists(fileName)) { return(null); } string src = File.ReadAllText(fileName); if (src.IndexOf("package") < 0) { src = "package {" + src + "}"; } ASFileParser parser = new ASFileParser(); FileModel model = new FileModel(path); parser.ParseSrc(model, src); includesCache[path] = model; return(model); } return(null); }
/// <summary> /// Called if a FileModel needs filtering /// - modify parsed model /// </summary> /// <param name="model"></param> /// <returns></returns> static public void FilterSource(FileModel model, MxmlFilterContext ctx) { ctx.model = model; model.InlinedIn = "xml"; model.InlinedRanges = ctx.as3ranges; if (model.MetaDatas == null) { model.MetaDatas = new List <ASMetaData>(); } foreach (string key in ctx.namespaces.Keys) { ASMetaData meta = new ASMetaData("Namespace"); meta.Params = new Dictionary <string, string>(); meta.Params.Add(key, ctx.namespaces[key]); model.MetaDatas.Add(meta); } ClassModel aClass = model.GetPublicClass(); if (aClass == ClassModel.VoidClass) { return; } aClass.Comments = "<" + ctx.baseTag + "/>"; Dictionary <string, string> resolved = new Dictionary <string, string>(); foreach (MemberModel mxmember in ctx.mxmlMembers) { string tag = mxmember.Type; string type = null; if (resolved.ContainsKey(tag)) { type = resolved[tag]; } else { type = MxmlComplete.ResolveType(ctx, tag); resolved[tag] = type; } MemberModel member = aClass.Members.Search(mxmember.Name, FlagType.Variable, Visibility.Public); if (member != null) { member.Comments = "<" + tag + "/>"; member.Type = type; } } }
//--------------------------- // Meta tags //--------------------------- private void ReadExcludeMeta(ASDocItem doc) { if (!HasAttributes) { return; } ASMetaData meta = new ASMetaData("Style"); meta.Kind = ASMetaKind.Exclude; string sKind = GetAttribute("kind"); string sName = GetAttribute("name"); if (doc.Meta == null) { doc.Meta = new List <ASMetaData>(); } meta.Params = new Dictionary <string, string>(); meta.Params["kind"] = sKind; meta.Params["name"] = sName; meta.RawParams = String.Format("kind=\"{0}\", name=\"{1}\"", sKind, sName); doc.Meta.Add(meta); }