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



22
23
24
# File 'lib/llm_cost_tracker/parsers/registry.rb', line 22

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

.find_for_provider(provider) ⇒ Object



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

def find_for_provider(provider)
  provider_name = provider.to_s
  parsers.find { |parser| parser.provider_names.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
# File 'lib/llm_cost_tracker/parsers/registry.rb', line 15

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

.reset!Object



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

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