Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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;
                }
            }
        }
Example #6
0
        //---------------------------
        //	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);
        }