Class: Metanorma::Release::Config
- Inherits:
-
Object
- Object
- Metanorma::Release::Config
- Defined in:
- lib/metanorma/release/config.rb
Class Method Summary collapse
Instance Method Summary collapse
- #channels ⇒ Object
- #default_channels ⇒ Object
- #defaults ⇒ Object
- #documents ⇒ Object
-
#initialize(data) ⇒ Config
constructor
A new instance of Config.
- #resolve_channels(publication) ⇒ Object
- #routing ⇒ Object
- #routing_default ⇒ Object
- #routing_rules ⇒ Object
- #slug_config ⇒ Object
- #slug_default_strategy ⇒ Object
- #slug_strategies ⇒ Object
Constructor Details
#initialize(data) ⇒ Config
Returns a new instance of Config.
26 27 28 |
# File 'lib/metanorma/release/config.rb', line 26 def initialize(data) @data = data end |
Class Method Details
.defaults ⇒ Object
22 23 24 |
# File 'lib/metanorma/release/config.rb', line 22 def self.defaults new({}) end |
.from_file(path) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/metanorma/release/config.rb', line 13 def self.from_file(path) unless File.exist?(path) raise ArgumentError, "Config file not found: #{path}" end from_yaml(File.read(path)) end |
.from_yaml(yaml_string) ⇒ Object
8 9 10 11 |
# File 'lib/metanorma/release/config.rb', line 8 def self.from_yaml(yaml_string) data = YAML.safe_load(yaml_string, permitted_classes: [Symbol]) new(data || {}) end |
Instance Method Details
#channels ⇒ Object
30 31 32 |
# File 'lib/metanorma/release/config.rb', line 30 def channels @data.fetch("channels", []) end |
#default_channels ⇒ Object
66 67 68 69 70 71 |
# File 'lib/metanorma/release/config.rb', line 66 def default_channels list = defaults.fetch("channels", nil) return ["public"] unless list list end |
#defaults ⇒ Object
62 63 64 |
# File 'lib/metanorma/release/config.rb', line 62 def defaults @data.fetch("defaults", {}) end |
#documents ⇒ Object
58 59 60 |
# File 'lib/metanorma/release/config.rb', line 58 def documents @data.fetch("documents", []) end |
#resolve_channels(publication) ⇒ Object
73 74 75 76 77 78 79 80 81 |
# File 'lib/metanorma/release/config.rb', line 73 def resolve_channels(publication) manifest_channels = resolve_manifest_channels(publication) return manifest_channels if manifest_channels rule_channels = resolve_routing_rules(publication) return rule_channels if rule_channels default_channels end |
#routing ⇒ Object
34 35 36 |
# File 'lib/metanorma/release/config.rb', line 34 def routing @data.fetch("routing", {}) end |
#routing_default ⇒ Object
38 39 40 |
# File 'lib/metanorma/release/config.rb', line 38 def routing_default routing.fetch("default", ["public"]) end |
#routing_rules ⇒ Object
42 43 44 |
# File 'lib/metanorma/release/config.rb', line 42 def routing_rules routing.fetch("rules", []) end |
#slug_config ⇒ Object
46 47 48 |
# File 'lib/metanorma/release/config.rb', line 46 def slug_config @data.fetch("slug", {}) end |
#slug_default_strategy ⇒ Object
50 51 52 |
# File 'lib/metanorma/release/config.rb', line 50 def slug_default_strategy slug_config.fetch("default", "edition") end |
#slug_strategies ⇒ Object
54 55 56 |
# File 'lib/metanorma/release/config.rb', line 54 def slug_strategies slug_config.fetch("strategies", {}) end |