Sha256: 939d98d46abf149c5e01995c211e7ba37d47319b9236e07fa2538e5bf6fc9ebb
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true module OoxmlParser # Basic class for OoxmlParser class Parser # Base method to yield parse document of any type # @param path_to_file [String] file # @return [CommonDocumentStructure] structure of doc def self.parse_format(path_to_file) return nil if OOXMLDocumentObject.encrypted_file?(path_to_file) path_to_zip_file = OOXMLDocumentObject.copy_file_and_rename_to_zip(path_to_file) OOXMLDocumentObject.path_to_folder = path_to_zip_file.sub(File.basename(path_to_zip_file), '') OOXMLDocumentObject.unzip_file(path_to_zip_file, OOXMLDocumentObject.path_to_folder) model = yield model.file_path = path_to_file if model FileUtils.rm_rf(OOXMLDocumentObject.path_to_folder) model end # Base method to parse document of any type # @param path_to_file [String] file # @return [CommonDocumentStructure] structure of doc def self.parse(path_to_file, password: nil) path_to_file = OOXMLDocumentObject.decrypt_file(path_to_file, password) if password Parser.parse_format(path_to_file) do format = Parser.recognize_folder_format case format when :docx DocumentStructure.parse when :xlsx XLSXWorkbook.new.parse when :pptx Presentation.new.parse else warn "#{path_to_file} is a simple zip file without OOXML content" end end end # Recognize folder format # @param directory [String] path to dirctory # @return [Symbol] type of document def self.recognize_folder_format(directory = OOXMLDocumentObject.path_to_folder) return :docx if Dir.exist?("#{directory}/word") return :xlsx if Dir.exist?("#{directory}/xl") return :pptx if Dir.exist?("#{directory}/ppt") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ooxml_parser-0.22.0 | lib/ooxml_parser/common_parser/parser.rb |