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

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

Constant Summary collapse

COMPOUND_SUFFIXES =
{
  %w[llm azure foundry] => %w[llm azure_foundry]
}.freeze

Class Method Summary collapse

Class Method Details

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



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/legion/extensions/helpers/segments.rb', line 46

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



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

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

.derive_namespace(gem_name) ⇒ Object



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

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

.derive_require_path(gem_name) ⇒ Object



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

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

.derive_segments(gem_name) ⇒ Object



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

def derive_segments(gem_name)
  segments = gem_name.delete_prefix('lex-').split('-')
  COMPOUND_SUFFIXES.fetch(segments, segments)
end

.segments_to_amqp_prefix(segments) ⇒ Object



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

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

.segments_to_log_tag(segments) ⇒ Object



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

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

.segments_to_settings_path(segments) ⇒ Object



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

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

.segments_to_table_prefix(segments) ⇒ Object



42
43
44
# File 'lib/legion/extensions/helpers/segments.rb', line 42

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