Module: Feedx::Format
- Defined in:
- lib/feedx/format.rb
Defined Under Namespace
Classes: Abstract, JSON, Parquet, Protobuf
Class Method Summary
collapse
Class Method Details
.detect(path) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/feedx/format.rb', line 24
def detect(path)
base = File.basename(path)
loop do
ext = File.extname(base)
raise ArgumentError, 'unable to detect format' if ext.empty?
kind = _resolve(ext[1..]) || _resolve(ext[1..-2])
return kind if kind
base = base[0..-ext.size - 1]
end
end
|
.register(ext, kind) ⇒ Object
16
17
18
|
# File 'lib/feedx/format.rb', line 16
def register(ext, kind)
registry[ext.to_s] = validate!(kind)
end
|
.resolve(name) ⇒ Object
20
21
22
|
# File 'lib/feedx/format.rb', line 20
def resolve(name)
_resolve(name) || raise(ArgumentError, "invalid format #{name}")
end
|
.validate!(kind) ⇒ Object
9
10
11
12
13
14
|
# File 'lib/feedx/format.rb', line 9
def validate!(kind)
raise ArgumentError, "#{kind} does not implement #encoder(io, &block)" unless kind.respond_to?(:encoder)
raise ArgumentError, "#{kind} does not implement #decoder(io, &block)" unless kind.respond_to?(:decoder)
kind
end
|