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.



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

.defaultObject



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