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
- #set_default(strategy) ⇒ Object
- #with_default(strategy) ⇒ Object
Constructor Details
#initialize(default: EditionSlug.new) ⇒ SlugRegistry
Returns a new instance of SlugRegistry.
122 123 124 125 |
# File 'lib/metanorma/release/slug_strategy.rb', line 122 def initialize(default: EditionSlug.new) @default = default @strategies = {} end |
Class Method Details
.build_strategy(name) ⇒ Object
158 159 160 161 162 163 164 165 166 |
# File 'lib/metanorma/release/slug_strategy.rb', line 158 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
168 169 170 171 172 173 174 175 |
# File 'lib/metanorma/release/slug_strategy.rb', line 168 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
147 148 149 150 151 152 153 154 155 156 |
# File 'lib/metanorma/release/slug_strategy.rb', line 147 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.set_default(default) registry end |
Instance Method Details
#register(publisher, strategy) ⇒ Object
127 128 129 |
# File 'lib/metanorma/release/slug_strategy.rb', line 127 def register(publisher, strategy) @strategies[publisher.to_s] = strategy end |
#resolve(publisher) ⇒ Object
131 132 133 |
# File 'lib/metanorma/release/slug_strategy.rb', line 131 def resolve(publisher) @strategies.fetch(publisher.to_s, @default) end |
#set_default(strategy) ⇒ Object
142 143 144 145 |
# File 'lib/metanorma/release/slug_strategy.rb', line 142 def set_default(strategy) @default = strategy self end |
#with_default(strategy) ⇒ Object
135 136 137 138 139 140 |
# File 'lib/metanorma/release/slug_strategy.rb', line 135 def with_default(strategy) registry = new @strategies.each { |pub, s| registry.register(pub, s) } registry.set_default(strategy) registry end |