Sha256: a5945462a1b1262ea9fe053cb06af33e7d1d9b62074a064a7ae1fa6821cdec30
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
require "digest/sha1" module DocXify module Element class File < Base PNG_SIGNATURE = "\x89PNG\r\n\u001A\n".b.freeze JPEG_START = "\xFF\xD8".b.freeze JPEG_END = "\xFF\xD9".b.freeze attr_accessor :data, :filename def initialize(file_path_or_data) super() load_file_data(file_path_or_data) end def load_file_data(file_path_or_data) if contains_png_image?(file_path_or_data) @data = file_path_or_data @filename = "#{Digest::SHA1.hexdigest(@data)}.png" elsif contains_jpeg_image?(file_path_or_data) @data = file_path_or_data @filename = "#{Digest::SHA1.hexdigest(@data)}.jpg" elsif ::File.exist?(file_path_or_data) @filename = ::File.basename(file_path_or_data) @data = ::File.read(file_path_or_data, mode: "rb") raise ArgumentError.new("Unsupported file type - images must be PNG or JPEG") unless contains_png_image?(@data) || contains_jpeg_image?(@data) else raise ArgumentError.new("Unsupported file type - images must be PNG or JPEG") end end def reference "image-#{Digest::SHA1.hexdigest(@data)[0, 8]}" end def contains_png_image?(data) data[0, 8] == PNG_SIGNATURE end def contains_jpeg_image?(data) data[0..1] == JPEG_START && data[-2..] == JPEG_END end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
docxify-0.0.5 | lib/docxify/element/file.rb |