From 08ac533d2156b666ae6ca68e797992629051315f Mon Sep 17 00:00:00 2001 From: mh Date: Fri, 27 Jun 2014 19:22:44 +0200 Subject: make it possible that formats can query back to trocla itself, so they can lookup other 'keys' --- lib/trocla/formats.rb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'lib/trocla/formats.rb') diff --git a/lib/trocla/formats.rb b/lib/trocla/formats.rb index 3cf31bd..0103c4e 100644 --- a/lib/trocla/formats.rb +++ b/lib/trocla/formats.rb @@ -1,32 +1,40 @@ class Trocla::Formats + + class Base + attr_reader :trocla + def initialize(trocla) + @trocla = trocla + end + end + class << self def [](format) formats[format.downcase] end - + def all Dir[File.expand_path(File.join(File.dirname(__FILE__),'formats','*.rb'))].collect{|f| File.basename(f,'.rb').downcase } end - + def available?(format) all.include?(format.downcase) end - + private def formats @@formats ||= Hash.new do |hash, format| format = format.downcase if File.exists?(path(format)) require "trocla/formats/#{format}" - hash[format] = (eval "Trocla::Formats::#{format.capitalize}").new + hash[format] = (eval "Trocla::Formats::#{format.capitalize}") else raise "Format #{format} is not supported!" end end end - + def path(format) File.expand_path(File.join(File.dirname(__FILE__),'formats',"#{format}.rb")) end end -end \ No newline at end of file +end -- cgit v1.2.3