Пример #1
0
        //////////////////////////////////////////////////////////////////////////
        internal override void WriteXml(XmlNode RootNode)
        {
            XmlElement Node = RootNode.OwnerDocument.CreateElement("Method");

            Node.SetAttribute("Global", IsGlobal.ToString());
            Node.SetAttribute("Constructor", Constructor.ToString());

            base.WriteXml(Node);

            // headers
            foreach (string Header in Headers)
            {
                XmlNode HeaderNode = RootNode.OwnerDocument.CreateElement("Signature");
                XmlNode SigNode    = RootNode.OwnerDocument.CreateTextNode(Header);
                HeaderNode.AppendChild(SigNode);

                Node.AppendChild(HeaderNode);
            }

            // parameters
            foreach (ScriptParameter Param in Parameters)
            {
                Param.WriteXml(Node);
            }

            RootNode.AppendChild(Node);
        }
Пример #2
0
        //////////////////////////////////////////////////////////////////////////
        internal override void WriteXml(XmlNode RootNode)
        {
            XmlElement Node = RootNode.OwnerDocument.CreateElement("Attribute");

            Node.SetAttribute("Global", IsGlobal.ToString());
            Node.SetAttribute("ReadOnly", ReadOnly.ToString());

            base.WriteXml(Node);
            RootNode.AppendChild(Node);
        }
Пример #3
0
        public void WriteInfoToFile(string fullPath)
        {
            XmlDocument doc = new XmlDocument();

            doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null));
            XmlElement root = doc.CreateElement("scriptinfo");

            XmlElement settings = doc.CreateElement("settings");

            settings.SetAttribute("global", IsGlobal.ToString());
            settings.SetAttribute("successfully", (SF.ReadingState != ReadingState.Error).ToString());
            settings.SetAttribute("compiled", IsCompiled.ToString());

            XmlElement name = doc.CreateElement("name");

            name.InnerText = Name;
            settings.AppendChild(name);

            root.AppendChild(settings);

            XmlElement content = doc.CreateElement("content");

            if (SF.ReadingState != ReadingState.Error)
            {
                foreach (IncludeInfo inc in Includes)
                {
                    XmlElement include = doc.CreateElement("include");
                    include.InnerText = inc.SFPath;
                    content.AppendChild(include);
                }

                foreach (UsingInfo curUsing in Usings)
                {
                    XmlElement usingElem = doc.CreateElement("using");
                    usingElem.SetAttribute("name", curUsing.Name);
                    usingElem.SetAttribute("access", curUsing.Access.ToString());

                    XmlElement sfPath = doc.CreateElement("sfPath");
                    sfPath.InnerText = curUsing.SFPath;
                    usingElem.AppendChild(sfPath);

                    content.AppendChild(usingElem);
                }

                foreach (ConstInfo constant in Constants)
                {
                    XmlElement constElem = doc.CreateElement("const");
                    constElem.SetAttribute("name", constant.Name);
                    constElem.SetAttribute("access", constant.Access.ToString());
                    constElem.SetAttribute("sealed", constant.Sealed.ToString());

                    XmlElement summary = doc.CreateElement("summary");
                    summary.InnerText = constant.Summary;
                    constElem.AppendChild(summary);

                    XmlElement value = doc.CreateElement("value");
                    value = constant.Value.ToXML(doc, value, this);
                    constElem.AppendChild(value);

                    content.AppendChild(constElem);
                }

                foreach (FuncInfo func in Functions)
                {
                    XmlElement funcElem = doc.CreateElement("func");
                    funcElem.SetAttribute("name", func.Name);
                    funcElem.SetAttribute("access", func.Access.ToString());

                    XmlElement self = doc.CreateElement("self");
                    self.InnerText = func.Self;
                    funcElem.AppendChild(self);

                    XmlElement summary = doc.CreateElement("summary");
                    summary.InnerText = func.Summary;
                    funcElem.AppendChild(summary);

                    XmlElement returns = doc.CreateElement("returns");
                    returns.InnerText = func.Returns;
                    funcElem.AppendChild(returns);

                    XmlElement example = doc.CreateElement("example");
                    example.InnerText = func.Example;
                    funcElem.AppendChild(example);

                    foreach (FuncParamInfo param in func.Parameters)
                    {
                        XmlElement paramElem = doc.CreateElement("param");
                        paramElem.SetAttribute("name", param.Name);

                        if (param.IsOpt)
                        {
                            paramElem.SetAttribute("opt", param.IsOpt.ToString());
                        }

                        paramElem.InnerText = param.Summary;
                        funcElem.AppendChild(paramElem);
                    }

                    content.AppendChild(funcElem);
                }

                foreach (IReferenceInfo refInfo in References)
                {
                    content.AppendChild(refInfo.ToXML(doc));
                }
            }

            foreach (Error error in SF.Errors)
            {
                content.AppendChild(error.ToXML(doc));
            }

            root.AppendChild(content);

            doc.AppendChild(root);
            Directory.CreateDirectory(Path.GetDirectoryName(fullPath));
            doc.Save(fullPath);
        }