Changeset 170

Show
Ignore:
Timestamp:
04/19/08 12:21:58 (7 months ago)
Author:
eric.dumin..@gmail.com
Message:

Specs pass again. No PlainText? module anymore

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/oo_indexer/lib/picolena/templates/app/models/document.rb

    r167 r170  
    5555  #  Document.new("presentation.some_weird_extension").supported? => false 
    5656  def supported? 
    57     PlainText.supported_extensions.include?(self.ext_as_sym) 
     57    Filter.supported_extensions.include?(self.ext_as_sym) 
    5858  end 
    5959   
    6060  # Retrieves content as it is *now*. 
    6161  def content 
    62     PlainText.extract_content_from(complete_path) 
     62    Filter.extract_content_from(complete_path) 
    6363  end 
    6464   
  • branches/oo_indexer/lib/picolena/templates/app/models/filter.rb

    r168 r170  
    11require 'filter_DSL' 
    22 
    3 module PlainText 
     3class Filter 
    44  @@filters=[] 
    55   
    66  #returns every defined filter 
    7   def self.filters 
     7  def self.all 
    88    @@filters 
     9  end 
     10 
     11  def self.each(&block) 
     12    all.each(&block) 
    913  end 
    1014   
    1115  #returns every required dependency for every defined filter 
    12   def self.filter_dependencies 
    13     @@dependencies||=filters.collect{|filter| filter.dependencies}.flatten.compact.uniq.sort 
     16  def self.dependencies 
     17    @@dependencies||=all.collect{|filter| filter.dependencies}.flatten.compact.uniq.sort 
    1418  end 
    1519   
    1620  #returns every supported file extensions 
    1721  def self.supported_extensions 
    18     @@supported_exts||=filters.collect{|filter| filter.exts}.flatten.compact.uniq 
     22    @@supported_exts||=all.collect{|filter| filter.exts}.flatten.compact.uniq 
    1923  end 
    2024 
     
    2226  def self.find_filter_for(filename) 
    2327    ext=File.ext_as_sym(filename) 
    24     filter=filters.find{|filter| filter.exts.include?(ext)} || raise(ArgumentError, "no convertor for #{filename}") 
     28    filter=all.find{|filter| filter.exts.include?(ext)} || raise(ArgumentError, "no convertor for #{filename}") 
    2529    filter.source=filename 
    2630    filter 
     
    3337   
    3438   
    35   class Filter 
    3639    attr_accessor :source 
    3740     
     
    7275      end 
    7376    end     
    74   end 
    7577end 
  • branches/oo_indexer/lib/picolena/templates/app/models/indexer.rb

    r167 r170  
    100100       
    101101      begin  
    102         text = PlainText.extract_content_from(complete_path) 
     102        text = Filter.extract_content_from(complete_path) 
    103103        raise "\tempty document #{complete_path}" if text.strip.empty? 
    104104        fields[:content] = text 
  • branches/oo_indexer/lib/picolena/templates/config/initializers/004_load_filters.rb

    r81 r170  
    11require 'core_exts' 
    2 require 'filter
     2require 'filter_DSL
    33 
    44Dir.glob(File.join(RAILS_ROOT,'lib/filters/*.rb')).each{|filter| 
  • branches/oo_indexer/lib/picolena/templates/lib/filter_DSL.rb

    r81 r170  
    11#Module used to define Filters with DSL 
    22#For example, to convert "Microsoft Office Word document" to plain text 
    3 #   PlainText.extract
     3#   Filter.new
    44#      from :doc, :dot 
    55#      as "application/msword" 
     
    88#      which_should_for_example_extract 'district heating', :from => 'Types of malfunction in DH substations.doc' 
    99#   } 
    10 module PlainText   
    11   #defines a new Filter with DSL 
    12   def self.extract(&block) 
    13     filter = Filter.new 
    14     filter.instance_eval(&block) 
    15     @@filters<<filter 
    16     MimeType.add(filter.exts,filter.mime_name) 
    17   end 
    18    
    19   #defined by DSL described in PlainText 
    20   class Filter 
     10require 'app/models/filter.rb' 
     11class Filter 
    2112    attr_reader :exts, :mime_name, :description, :command, :content_and_file_examples 
    2213     
    23     def initialize 
    24       @content_and_file_examples=[]    
     14    def initialize(&block) 
     15      @content_and_file_examples=[] 
     16      self.instance_eval(&block) 
     17      @@filters<<self 
     18      MimeType.add(self.exts,self.mime_name) 
    2519    end 
    2620     
     
    7468      @command<<' 2>/dev/null' if (@command.is_a?(String) && platform==:on_linux && !@command.include?('|')) 
    7569    end 
    76   end 
    7770end 
  • branches/oo_indexer/lib/picolena/templates/lib/filters/adobe.pdf.rb

    r169 r170  
    66 
    77Filter.new { 
     8  puts self.inspect 
    89  from :pdf 
    910  as "application/pdf" 
  • branches/oo_indexer/lib/picolena/templates/lib/tasks/install_dependencies.rake

    r84 r170  
    3030  task :deb_packages do 
    3131    root_privileges_required! 
    32     #TODO: Should load this list from defined PlainText.filters 
     32    #TODO: Should load this list from defined Filters 
    3333    packages=%w{antiword poppler-utils odt2txt html2text catdoc unrtf}.join(" ") 
    3434    puts "Installing "<<packages 
  • branches/oo_indexer/lib/picolena/templates/spec/helpers/documents_helper_spec.rb

    r81 r170  
    44  it "shouldn't raise if matching not in content field" 
    55 
    6   PlainText.supported_extensions.each{|ext| 
     6  Filter.supported_extensions.each{|ext| 
    77    it "should have an icon for .#{ext} filetype" do  
    88      icon_for(ext.to_s).should_not be_nil 
  • branches/oo_indexer/lib/picolena/templates/spec/models/filters_spec.rb

    r153 r170  
    66  end   
    77   
    8   PlainText.filters.each{|filter| 
     8  Filter.each{|filter| 
    99    filter.exts.each{|ext| 
    1010      should_extract= "should be able to extract content from #{filter.description} (.#{ext})" 
  • branches/oo_indexer/lib/picolena/templates/spec/models/host_indexing_system_spec.rb

    r167 r170  
    22 
    33describe "Host indexing system" do 
    4  PlainText.filter_dependencies.each do |dependency| 
     4 Filter.dependencies.each do |dependency| 
    55    it "should have #{dependency} installed" do 
    66       IO.popen("which #{dependency}"){|i| i.read.should_not be_empty}