Class: Markbridge::Parsers::MediaWiki::InlineTagRegistry
- Inherits:
-
Object
- Object
- Markbridge::Parsers::MediaWiki::InlineTagRegistry
- Defined in:
- lib/markbridge/parsers/media_wiki/inline_tag_registry.rb
Overview
Registry of inline HTML-like tag handlers for the MediaWiki parser.
Supports three tag types:
-
:raw - content is preserved verbatim (e.g., <code>, <nowiki>)
-
:formatting - content is parsed for inline wiki markup (e.g., <s>, <u>)
-
:self_closing - no content, produces a leaf AST node (e.g.,
)
Defined Under Namespace
Classes: Entry
Class Method Summary collapse
-
.build_from_default {|InlineTagRegistry| ... } ⇒ InlineTagRegistry
Build a registry from the default with optional customization.
-
.default ⇒ InlineTagRegistry
Create the default registry with standard MediaWiki inline tags.
Instance Method Summary collapse
-
#[](tag_name) ⇒ Entry?
Look up a tag entry by name.
-
#initialize ⇒ InlineTagRegistry
constructor
A new instance of InlineTagRegistry.
-
#known?(tag_name) ⇒ Boolean
Check if a tag name is registered.
-
#register(tag_name, type, element_class) ⇒ self
Register a handler for an inline HTML-like tag.
Constructor Details
#initialize ⇒ InlineTagRegistry
Returns a new instance of InlineTagRegistry.
26 27 28 |
# File 'lib/markbridge/parsers/media_wiki/inline_tag_registry.rb', line 26 def initialize @entries = {} end |
Class Method Details
.build_from_default {|InlineTagRegistry| ... } ⇒ InlineTagRegistry
Build a registry from the default with optional customization.
85 86 87 88 89 |
# File 'lib/markbridge/parsers/media_wiki/inline_tag_registry.rb', line 85 def self.build_from_default registry = default yield(registry) if block_given? registry end |
.default ⇒ InlineTagRegistry
Create the default registry with standard MediaWiki inline tags.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/markbridge/parsers/media_wiki/inline_tag_registry.rb', line 61 def self.default registry = new # Raw tags -content preserved verbatim, not parsed for wiki markup registry.register("nowiki", :raw, nil) registry.register("code", :raw, AST::Code) registry.register("pre", :raw, AST::Code) # Formatting tags -content parsed for inline wiki markup registry.register("s", :formatting, AST::Strikethrough) registry.register("del", :formatting, AST::Strikethrough) registry.register("u", :formatting, AST::Underline) registry.register("ins", :formatting, AST::Underline) registry.register("sup", :formatting, AST::Superscript) registry.register("sub", :formatting, AST::Subscript) # Self-closing tags -produce a leaf node, no content registry.register("br", :self_closing, AST::LineBreak) end |
Instance Method Details
#[](tag_name) ⇒ Entry?
Look up a tag entry by name.
46 47 48 |
# File 'lib/markbridge/parsers/media_wiki/inline_tag_registry.rb', line 46 def [](tag_name) @entries[tag_name.downcase] end |
#known?(tag_name) ⇒ Boolean
Check if a tag name is registered.
54 55 56 |
# File 'lib/markbridge/parsers/media_wiki/inline_tag_registry.rb', line 54 def known?(tag_name) @entries.key?(tag_name.downcase) end |
#register(tag_name, type, element_class) ⇒ self
Register a handler for an inline HTML-like tag.
36 37 38 39 40 |
# File 'lib/markbridge/parsers/media_wiki/inline_tag_registry.rb', line 36 def register(tag_name, type, element_class) validate_type!(type) @entries[tag_name.downcase] = Entry.new(type:, element_class:) self end |