Module: Legion::Extensions::Helpers::Segments

Defined in:
lib/legion/extensions/helpers/segments.rb

Class Method Summary collapse

Class Method Details

.categorize_gem(gem_name, categories:, lists:) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/legion/extensions/helpers/segments.rb', line 41

def categorize_gem(gem_name, categories:, lists:)
  # Check defined lists first (list membership takes priority)
  lists.each do |cat_name, gem_list|
    next unless categories.key?(cat_name)

    return { category: cat_name, tier: categories[cat_name][:tier] } if gem_list.include?(gem_name)
  end

  # Check prefix-matched categories
  bare = gem_name.delete_prefix('lex-')
  categories.each do |cat_name, cat_config|
    next unless cat_config[:type] == :prefix

    return { category: cat_name, tier: cat_config[:tier] } if bare.start_with?("#{cat_name}-")
  end

  { category: :default, tier: 5 }
end

.derive_const_path(gem_name) ⇒ Object



17
18
19
# File 'lib/legion/extensions/helpers/segments.rb', line 17

def derive_const_path(gem_name)
  "Legion::Extensions::#{derive_namespace(gem_name).join('::')}"
end

.derive_namespace(gem_name) ⇒ Object



13
14
15
# File 'lib/legion/extensions/helpers/segments.rb', line 13

def derive_namespace(gem_name)
  derive_segments(gem_name).map { |s| s.split('_').map(&:capitalize).join }
end

.derive_require_path(gem_name) ⇒ Object



21
22
23
# File 'lib/legion/extensions/helpers/segments.rb', line 21

def derive_require_path(gem_name)
  "legion/extensions/#{derive_segments(gem_name).join('/')}"
end

.derive_segments(gem_name) ⇒ Object



9
10
11
# File 'lib/legion/extensions/helpers/segments.rb', line 9

def derive_segments(gem_name)
  gem_name.delete_prefix('lex-').split('-')
end

.segments_to_amqp_prefix(segments) ⇒ Object



29
30
31
# File 'lib/legion/extensions/helpers/segments.rb', line 29

def segments_to_amqp_prefix(segments)
  "lex.#{segments.join('.')}"
end

.segments_to_log_tag(segments) ⇒ Object



25
26
27
# File 'lib/legion/extensions/helpers/segments.rb', line 25

def segments_to_log_tag(segments)
  segments.map { |s| "[#{s}]" }.join
end

.segments_to_settings_path(segments) ⇒ Object



33
34
35
# File 'lib/legion/extensions/helpers/segments.rb', line 33

def segments_to_settings_path(segments)
  segments.map(&:to_sym)
end

.segments_to_table_prefix(segments) ⇒ Object



37
38
39
# File 'lib/legion/extensions/helpers/segments.rb', line 37

def segments_to_table_prefix(segments)
  segments.join('_')
end