Class: LlmCostTracker::Parsers::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/llm_cost_tracker/parsers/registry.rb

Constant Summary collapse

MUTEX =
Monitor.new

Class Method Summary collapse

Class Method Details

.find_for(url) ⇒ Object



26
27
28
# File 'lib/llm_cost_tracker/parsers/registry.rb', line 26

def find_for(url)
  parsers.find { |parser| parser.match?(url) }
end

.find_for_provider(provider) ⇒ Object



30
31
32
33
# File 'lib/llm_cost_tracker/parsers/registry.rb', line 30

def find_for_provider(provider)
  provider_name = provider.to_s.downcase
  parsers.find { |parser| provider_names_for(parser).include?(provider_name) }
end

.parsersObject



11
12
13
# File 'lib/llm_cost_tracker/parsers/registry.rb', line 11

def parsers
  @parsers || MUTEX.synchronize { @parsers ||= default_parsers.freeze }
end

.register(parser) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/llm_cost_tracker/parsers/registry.rb', line 15

def register(parser)
  parser = coerce_parser(parser)

  MUTEX.synchronize do
    current = @parsers || default_parsers.freeze
    @parsers = ([parser] + current).freeze
  end

  parser
end

.reset!Object



35
36
37
# File 'lib/llm_cost_tracker/parsers/registry.rb', line 35

def reset!
  MUTEX.synchronize { @parsers = nil }
end