diff options
Diffstat (limited to 'lib/trocla/formats.rb')
-rw-r--r-- | lib/trocla/formats.rb | 20 |
1 files changed, 14 insertions, 6 deletions
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 |