Class: Docit::Ai::TagInjector

Inherits:
Object
  • Object
show all
Defined in:
lib/docit/ai/tag_injector.rb

Instance Method Summary collapse

Constructor Details

#initialize(tags:) ⇒ TagInjector

Returns a new instance of TagInjector.



6
7
8
# File 'lib/docit/ai/tag_injector.rb', line 6

def initialize(tags:)
  @tags = tags.uniq
end

Instance Method Details

#injectObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/docit/ai/tag_injector.rb', line 10

def inject
  return [] if initializer_path && File.exist?(initializer_path) == false

  content = File.read(initializer_path)
  existing_tags = content.scan(/config\.tag\s+["']([^"']+)["']/).flatten

  new_tags = @tags - existing_tags
  return [] if new_tags.empty?

  lines = new_tags.map do |tag|
    desc = "#{tag} management endpoints"
    "  config.tag \"#{tag}\", description: \"#{desc}\""
  end

  insertion_point = find_insertion_point(content)
  return [] if insertion_point.nil?

  content = content.insert(insertion_point, "\n#{lines.join("\n")}")
  File.write(initializer_path, content)

  new_tags
end