Class: Metanorma::Release::SlugRegistry
- Inherits:
-
Object
- Object
- Metanorma::Release::SlugRegistry
- Defined in:
- lib/metanorma/release/slug_strategy.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(default: EditionSlug.new) ⇒ SlugRegistry
constructor
A new instance of SlugRegistry.
- #register(publisher, strategy) ⇒ Object
- #resolve(publisher) ⇒ Object
Constructor Details
#initialize(default: EditionSlug.new) ⇒ SlugRegistry
Returns a new instance of SlugRegistry.
119 120 121 122 |
# File 'lib/metanorma/release/slug_strategy.rb', line 119 def initialize(default: EditionSlug.new) @default = default @strategies = {} end |
Class Method Details
.build_strategy(name) ⇒ Object
143 144 145 146 147 148 149 150 151 |
# File 'lib/metanorma/release/slug_strategy.rb', line 143 def self.build_strategy(name) case name.to_s when "edition" then EditionSlug.new when "version" then VersionSlug.new when "internet-draft" then InternetDraftSlug.new when "rfc" then RfcSlug.new when "draft-suffix" then DraftSuffixSlug.new end end |
.default ⇒ Object
153 154 155 156 157 158 159 160 |
# File 'lib/metanorma/release/slug_strategy.rb', line 153 def self.default registry = new registry.register("ietf", InternetDraftSlug.new) registry.register("ieee", DraftSuffixSlug.new) registry.register("iho", VersionSlug.new) registry.register("ogc", VersionSlug.new) registry end |
.from_config(config) ⇒ Object
132 133 134 135 136 137 138 139 140 141 |
# File 'lib/metanorma/release/slug_strategy.rb', line 132 def self.from_config(config) registry = new config.slug_strategies.each do |publisher, strategy_name| strategy = build_strategy(strategy_name) registry.register(publisher, strategy) if strategy end default = build_strategy(config.slug_default_strategy) || EditionSlug.new registry.instance_variable_set(:@default, default) registry end |
Instance Method Details
#register(publisher, strategy) ⇒ Object
124 125 126 |
# File 'lib/metanorma/release/slug_strategy.rb', line 124 def register(publisher, strategy) @strategies[publisher.to_s] = strategy end |
#resolve(publisher) ⇒ Object
128 129 130 |
# File 'lib/metanorma/release/slug_strategy.rb', line 128 def resolve(publisher) @strategies.fetch(publisher.to_s, @default) end |