Class: Metanorma::Release::SlugRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/metanorma/release/slug_strategy.rb

Class Method Summary collapse

Instance Method Summary collapse

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

.defaultObject



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