Class: Coradoc::Markdown::Serializer::Config
- Inherits:
-
Object
- Object
- Coradoc::Markdown::Serializer::Config
- Defined in:
- lib/coradoc/markdown/serializer/config.rb
Overview
Immutable serialization configuration.
Created via ‘Serializer.build` with a flavor and overrides. Once built, the Config is frozen and resolves capability strategies (admonitions, autolinks, comments, etc.) by combining flavor defaults with caller overrides.
SSOT: the 5 spec-mandated options live here and nowhere else. Strategy classes read their mode via ‘config.strategy_for(:capability)`.
Constant Summary collapse
- ATTRIBUTES =
%i[ markdown_flavor admonition_style definition_list_nested suppress_comments autolinks ].freeze
Instance Method Summary collapse
-
#initialize(flavor: :gfm, **overrides) ⇒ Config
constructor
A new instance of Config.
- #to_h ⇒ Object
- #with(overrides) ⇒ Object
Constructor Details
#initialize(flavor: :gfm, **overrides) ⇒ Config
Returns a new instance of Config.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/coradoc/markdown/serializer/config.rb', line 28 def initialize(flavor: :gfm, **overrides) unless Flavor.known?(flavor) raise ArgumentError, "Unknown markdown_flavor: #{flavor.inspect}. " \ "Known: #{Flavor.names.inspect}" end resolved = Flavor.resolve(flavor).merge(symbolize(overrides)) (resolved) @markdown_flavor = resolved.fetch(:markdown_flavor) @admonition_style = resolved.fetch(:admonition_style) @definition_list_nested = resolved.fetch(:definition_list_nested) @suppress_comments = resolved.fetch(:suppress_comments) @autolinks = resolved.fetch(:autolinks) freeze end |
Instance Method Details
#to_h ⇒ Object
46 47 48 |
# File 'lib/coradoc/markdown/serializer/config.rb', line 46 def to_h ATTRIBUTES.to_h { |k| [k, public_send(k)] } end |
#with(overrides) ⇒ Object
50 51 52 |
# File 'lib/coradoc/markdown/serializer/config.rb', line 50 def with(overrides) self.class.new(**to_h.merge(symbolize(overrides))) end |