Class: LlmCostTracker::Parsers::Registry
- Inherits:
-
Object
- Object
- LlmCostTracker::Parsers::Registry
- Defined in:
- lib/llm_cost_tracker/parsers/registry.rb
Constant Summary collapse
- MUTEX =
Monitor.new
Class Method Summary collapse
- .find_for(url) ⇒ Object
- .find_for_provider(provider) ⇒ Object
- .parsers ⇒ Object
- .register(parser) ⇒ Object
- .reset! ⇒ Object
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 |
.parsers ⇒ Object
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 |