Sha256: a2c95e64ee6763a56872be64800c8c7e9713719a3c4cef53216f189ba5b11f91

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

#coding: binary
module PNGSuite
  PNG_SUITE_URL = "http://www.schaik.com/pngsuite/PngSuite-2011apr25.tgz"

  class << self
    attr_accessor :dir

    def init dir
      @dir = dir
      if Dir.exist?(dir)
        if Dir[File.join(dir, "*.png")].size > 100
          # already fetched and unpacked
          return
        end
      else
        Dir.mkdir(dir)
      end
      require 'open-uri'
      puts "[.] fetching PNG test-suite from #{PNG_SUITE_URL} .. "
      data = URI.open(PNG_SUITE_URL).read

      fname = File.join(dir, "png_suite.tgz")
      File.open(fname, "wb"){ |f| f<<data }
      puts "[.] unpacking #{fname} .. "
      system "tar", "xf", fname, "-C", dir
    end

    def each *prefixes
      Dir[File.join(dir,"*.png")].each do |fname|
        if prefixes.empty?
          yield fname
        elsif prefixes.any?{ |p| p[/[*?\[]/] ? File.fnmatch(p, File.basename(fname)) : File.basename(fname).start_with?(p) }
          yield fname
        end
      end
    end

    def each_good
      Dir[File.join(dir,"[^x]*.png")].each do |fname|
        yield fname
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sugar_png-0.5.5 spec/support/png_suite.rb
sugar_png-0.5.4 spec/support/png_suite.rb
sugar_png-0.5.3 spec/support/png_suite.rb
sugar_png-0.5.2 spec/support/png_suite.rb