Class: Markbridge::Renderers::Discourse::Tag
- Inherits:
-
Object
- Object
- Markbridge::Renderers::Discourse::Tag
- Defined in:
- lib/markbridge/renderers/discourse/tag.rb
Overview
Base class for rendering tags Can be subclassed for complex tags or initialized with a block for simple tags
Direct Known Subclasses
Markbridge::Renderers::Discourse::Tags::AlignTag, Markbridge::Renderers::Discourse::Tags::AttachmentTag, Markbridge::Renderers::Discourse::Tags::BoldTag, Markbridge::Renderers::Discourse::Tags::CodeTag, Markbridge::Renderers::Discourse::Tags::ColorTag, Markbridge::Renderers::Discourse::Tags::EmailTag, Markbridge::Renderers::Discourse::Tags::EventTag, Markbridge::Renderers::Discourse::Tags::HeadingTag, Markbridge::Renderers::Discourse::Tags::HorizontalRuleTag, Markbridge::Renderers::Discourse::Tags::ImageTag, Markbridge::Renderers::Discourse::Tags::ItalicTag, Markbridge::Renderers::Discourse::Tags::LineBreakTag, Markbridge::Renderers::Discourse::Tags::ListItemTag, Markbridge::Renderers::Discourse::Tags::ListTag, Markbridge::Renderers::Discourse::Tags::MentionTag, Markbridge::Renderers::Discourse::Tags::ParagraphTag, Markbridge::Renderers::Discourse::Tags::PollTag, Markbridge::Renderers::Discourse::Tags::QuoteTag, Markbridge::Renderers::Discourse::Tags::SizeTag, Markbridge::Renderers::Discourse::Tags::SpoilerTag, Markbridge::Renderers::Discourse::Tags::StrikethroughTag, Markbridge::Renderers::Discourse::Tags::SubscriptTag, Markbridge::Renderers::Discourse::Tags::SuperscriptTag, Markbridge::Renderers::Discourse::Tags::TableCellTag, Markbridge::Renderers::Discourse::Tags::TableRowTag, Markbridge::Renderers::Discourse::Tags::TableTag, Markbridge::Renderers::Discourse::Tags::UnderlineTag, Markbridge::Renderers::Discourse::Tags::UploadTag, Markbridge::Renderers::Discourse::Tags::UrlTag
Instance Method Summary collapse
-
#initialize(&block) ⇒ Tag
constructor
Initialize a tag.
-
#render(element, interface) ⇒ String
Render a node to Discourse Markdown.
Constructor Details
#initialize(&block) ⇒ Tag
Initialize a tag
11 12 13 |
# File 'lib/markbridge/renderers/discourse/tag.rb', line 11 def initialize(&block) @render_block = block end |
Instance Method Details
#render(element, interface) ⇒ String
Render a node to Discourse Markdown.
When ‘interface.html_mode?` is true the surrounding output is a CommonMark HTML block (§4.6): content is treated as raw HTML and is not re-parsed for Markdown except across blank lines. Every tag must pick one of two contracts:
-
Emit raw HTML (e.g. ‘<strong>` for `**`).
-
Wrap Markdown output in ‘nn…nn` so the blank lines close the HTML block, CommonMark parses the content as a Markdown island, then re-opens. Visible: blank-line wrapping forces a `<p>` margin around inline content, so prefer (1) when the tag has an HTML form.
32 33 34 35 36 37 38 |
# File 'lib/markbridge/renderers/discourse/tag.rb', line 32 def render(element, interface) if @render_block @render_block.call(element, interface) else raise NotImplementedError, "#{self.class} must implement #render or provide a block" end end |