Sha256: 0d7163c84dd7cc4bee4ceec0c8f36e03767632ad1646d923e7a559df55b9128f

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

module Magic
  class Database
    # Creates an instance of +Magic::Database+ using given flags
    def initialize(*flags)
      open(*flags)
      load
    end

    # Opens magic db using given flags
    def open(*flags)
      magic_flags = flags.inject(0) { |acc, flag| acc |= Constants::Flag.const_get(flag.to_s.upcase) }
      @magic_set = Api.magic_open(magic_flags)
    end

    # Closes the database
    def close
      Api.magic_close(@magic_set)
    end

    # Loads given database file (or default if +nil+ given)
    def load(database = nil)
      Api.magic_load(@magic_set, database)
    end

    # Determine type of a file at given path
    def file(filename)
      result = Api.magic_file(@magic_set, filename.to_s)
      if result.null?
        raise Exception, error
      else
        result.get_string(0)
      end
    end

    # Determine type of given string
    def buffer(string)
      result = Api.magic_buffer(@magic_set, string, string.bytesize)
      if result.null?
        raise Exception, error
      else
        result.get_string(0)
      end
    end

    # Returns last error occured
    def error
      Api.magic_error(@magic_set)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
magic-0.1.1 lib/magic/database.rb
magic-0.1.0 lib/magic/database.rb