Module: Feedx::Format

Defined in:
lib/feedx/format.rb

Defined Under Namespace

Classes: Abstract, JSON, Protobuf

Class Method Summary collapse

Class Method Details

.detect(path) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/feedx/format.rb', line 18

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..-1]) || _resolve(ext[1..-2])
    return kind if kind

    base = base[0..-ext.size - 1]
  end
end

.register(ext, kind) ⇒ Object

Raises:

  • (ArgumentError)


8
9
10
11
12
# File 'lib/feedx/format.rb', line 8

def register(ext, kind)
  raise ArgumentError, "#{kind} is not a subclass of Feedx::Format::Abstract" unless kind.is_a?(Class) && kind < Abstract

  registry[ext.to_s] = kind
end

.resolve(name) ⇒ Object



14
15
16
# File 'lib/feedx/format.rb', line 14

def resolve(name)
  _resolve(name) || raise(ArgumentError, "invalid format #{name}")
end