Class: Metanorma::Release::OrgConfig
- Inherits:
-
Object
- Object
- Metanorma::Release::OrgConfig
- Defined in:
- lib/metanorma/release/org_config.rb
Defined Under Namespace
Classes: Ref
Class Method Summary collapse
- .default_config_name ⇒ Object
- .defaults ⇒ Object
- .from_file(path) ⇒ Object
- .from_yaml(yaml_string) ⇒ Object
- .parse_ref(org_string) ⇒ Object
- .remote_path(ref) ⇒ Object
Instance Method Summary collapse
- #channels ⇒ Object
- #display_categories ⇒ Object
- #display_category_for(doctype) ⇒ Object
-
#initialize(data) ⇒ OrgConfig
constructor
A new instance of OrgConfig.
- #routing_default ⇒ Object
- #routing_rules ⇒ Object
- #valid_channel?(name) ⇒ Boolean
Constructor Details
#initialize(data) ⇒ OrgConfig
Returns a new instance of OrgConfig.
43 44 45 |
# File 'lib/metanorma/release/org_config.rb', line 43 def initialize(data) @data = data end |
Class Method Details
.default_config_name ⇒ Object
19 20 21 |
# File 'lib/metanorma/release/org_config.rb', line 19 def self.default_config_name "channels" end |
.defaults ⇒ Object
39 40 41 |
# File 'lib/metanorma/release/org_config.rb', line 39 def self.defaults new({}) end |
.from_file(path) ⇒ Object
33 34 35 36 37 |
# File 'lib/metanorma/release/org_config.rb', line 33 def self.from_file(path) raise ArgumentError, "Org config file not found: #{path}" unless File.exist?(path) from_yaml(File.read(path)) end |
.from_yaml(yaml_string) ⇒ Object
28 29 30 31 |
# File 'lib/metanorma/release/org_config.rb', line 28 def self.from_yaml(yaml_string) data = YAML.safe_load(yaml_string, permitted_classes: [Symbol]) new(data || {}) end |
.parse_ref(org_string) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/metanorma/release/org_config.rb', line 10 def self.parse_ref(org_string) parts = org_string.to_s.split("#", 2) slug = parts[0].to_s.strip segments = slug.split("/", 2) raise ArgumentError, "Invalid org reference: #{org_string}" unless segments.length == 2 Ref.new(owner: segments[0], repo: segments[1], name: parts[1]&.strip) end |
.remote_path(ref) ⇒ Object
23 24 25 26 |
# File 'lib/metanorma/release/org_config.rb', line 23 def self.remote_path(ref) name = ref.name || default_config_name ".metanorma/#{name}.yml" end |
Instance Method Details
#channels ⇒ Object
47 48 49 |
# File 'lib/metanorma/release/org_config.rb', line 47 def channels @data.fetch("channels", []) end |
#display_categories ⇒ Object
69 70 71 |
# File 'lib/metanorma/release/org_config.rb', line 69 def display_categories @data.fetch("display_categories", []) end |
#display_category_for(doctype) ⇒ Object
73 74 75 76 77 78 79 80 81 |
# File 'lib/metanorma/release/org_config.rb', line 73 def display_category_for(doctype) return nil if doctype.nil? || doctype.empty? display_categories.each do |cat| doctypes = cat["doctypes"] || [] return { "name" => cat["name"], "slug" => cat["slug"] } if doctypes.include?(doctype) end nil end |
#routing_default ⇒ Object
51 52 53 |
# File 'lib/metanorma/release/org_config.rb', line 51 def routing_default dig_defaults_routing("default") || [] end |
#routing_rules ⇒ Object
55 56 57 |
# File 'lib/metanorma/release/org_config.rb', line 55 def routing_rules dig_defaults_routing("rules") || [] end |
#valid_channel?(name) ⇒ Boolean
59 60 61 62 63 64 65 66 67 |
# File 'lib/metanorma/release/org_config.rb', line 59 def valid_channel?(name) return true if channels.empty? ch = Channel.new(name) channels.any? do |valid| valid_ch = Channel.new(valid) ch.eql?(valid_ch) || ch.name.start_with?("#{valid_ch.name}/") || valid_ch.name.start_with?("#{ch.name}/") end end |