Beispiel #1
0
        public override EMElement Create(IMatch match, EMDocument doc, EMElementOrigin origin, EMElement parent, TransformationData data)
        {
            if (match is EMRawHTMLMatch)
            {
                var htmlMatch = match as EMRawHTMLMatch;
                if (htmlMatch.Name.ToLower() == "code")
                {
                    return(new EMCodeBlock(doc, origin, parent, htmlMatch.Content, true));
                }

                var element = new EMRawHTML(doc, origin, parent, htmlMatch.Name, htmlMatch.AttributesString);

                element.Elements.Parse(Markdown.Outdent(htmlMatch.Content, element.Elements.TextMap), data);

                return(element);
            }

            if (match is EMMarkdownTaggedElementMatch)
            {
                var markdownMatch = match as EMMarkdownTaggedElementMatch;

                switch (markdownMatch.Name.ToLower())
                {
                case "region":
                    return(EMRegion.CreateRegion(origin, doc, parent, data, markdownMatch, markdownMatch.Parameters));

                case "include":
                    return(EMInclude.CreateFromText(markdownMatch.Text, doc, origin, parent, data));

                case "include_files":
                    return(EMInclude.CreateIncludeFilesFromText(markdownMatch.Text, doc, origin, parent, data));

                case "relative":
                    return(EMRelativeLink.CreateFromText(markdownMatch.Parameters, doc, origin, parent, data));

                case "relative_img":
                    return(EMRelativeLink.CreateFromText(markdownMatch.Parameters, doc, origin, parent, data, true));

                case "object":
                    return(EMObject.CreateFromText(markdownMatch.Parameters, markdownMatch, doc, origin, parent, data));

                default:
                    return(EMErrorElement.Create(doc, origin, parent, data, "UnsupportedTaggedMarkdownElement"));
                }
            }

            return(EMErrorElement.Create(doc, origin, parent, data, "UnknownMatchTypeForTaggedElementsParser"));
        }
        public override EMElement Create(IMatch match, EMDocument doc, EMElementOrigin origin, EMElement parent, TransformationData data)
        {
            if (match is EMRawHTMLMatch)
            {
                var htmlMatch = match as EMRawHTMLMatch;
                if (htmlMatch.Name.ToLower() == "code")
                {
                    return new EMCodeBlock(doc, origin, parent, htmlMatch.Content, true);
                }

                var element = new EMRawHTML(doc, origin, parent, htmlMatch.Name, htmlMatch.AttributesString);

                element.Elements.Parse(Markdown.Outdent(htmlMatch.Content, element.Elements.TextMap), data);

                return element;
            }

            if (match is EMMarkdownTaggedElementMatch)
            {
                var markdownMatch = match as EMMarkdownTaggedElementMatch;

                switch (markdownMatch.Name.ToLower())
                {
                    case "region":
                        return EMRegion.CreateRegion(origin, doc, parent, data, markdownMatch, markdownMatch.Parameters);
                    case "include":
                        return EMInclude.CreateFromText(markdownMatch.Text, doc, origin, parent, data);
                    case "include_files":
                        return EMInclude.CreateIncludeFilesFromText(markdownMatch.Text, doc, origin, parent, data);
                    case "relative":
                        return EMRelativeLink.CreateFromText(markdownMatch.Parameters, doc, origin, parent, data);
                    case "relative_img":
                        return EMRelativeLink.CreateFromText(markdownMatch.Parameters, doc, origin, parent, data, true);
                    case "object":
                        return EMObject.CreateFromText(markdownMatch.Parameters, markdownMatch, doc, origin, parent, data);
                    default:
                        return EMErrorElement.Create(doc, origin, parent, data, "UnsupportedTaggedMarkdownElement");
                }
            }

            return EMErrorElement.Create(doc, origin, parent, data, "UnknownMatchTypeForTaggedElementsParser");
        }