コード例 #1
0
ファイル: RendererBase.cs プロジェクト: bryanjd/markdig
        /// <summary>
        /// Writes the specified Markdown object.
        /// </summary>
        /// <param name="obj">The Markdown object to write to this renderer.</param>
        public void Write(MarkdownObject obj)
        {
            if (obj == null)
            {
                return;
            }

            // Calls before writing an object
            ObjectWriteBefore?.Invoke(this, obj);

            var objectType = obj.GetType();

            IMarkdownObjectRenderer renderer;

            // Handle regular renderers
            if (objectType == previousObjectType)
            {
                renderer = previousRenderer;
            }
            else if (!renderersPerType.TryGetValue(objectType, out renderer))
            {
                for (int i = 0; i < ObjectRenderers.Count; i++)
                {
                    var testRenderer = ObjectRenderers[i];
                    if (testRenderer.Accept(this, obj))
                    {
                        renderersPerType[objectType] = renderer = testRenderer;
                        break;
                    }
                }
            }

            if (renderer != null)
            {
                renderer.Write(this, obj);

                previousObjectType = objectType;
                previousRenderer   = renderer;
            }
            else if (obj is ContainerBlock containerBlock)
            {
                WriteChildren(containerBlock);
            }
            else if (obj is ContainerInline containerInline)
            {
                WriteChildren(containerInline);
            }

            // Calls after writing an object
            ObjectWriteAfter?.Invoke(this, obj);
        }
コード例 #2
0
ファイル: WpfMathRendererBase.cs プロジェクト: olesar/Altaxo
 /// <summary>
 /// Called to announce the completion of an element by firing the <see cref="ObjectWriteAfter"/> event.
 /// </summary>
 /// <param name="elementCompleted">The completed element.</param>
 public void OnCompletionOfElement(Atom elementCompleted)
 {
     ObjectWriteAfter?.Invoke(this, elementCompleted);
 }