Module: MppReader
- Defined in:
- lib/mpp_reader.rb,
lib/mpp_reader/cli.rb,
lib/mpp_reader/task.rb,
lib/mpp_reader/decode.rb,
lib/mpp_reader/errors.rb,
lib/mpp_reader/project.rb,
lib/mpp_reader/version.rb,
lib/mpp_reader/calendar.rb,
lib/mpp_reader/cfbf/fat.rb,
lib/mpp_reader/comp_obj.rb,
lib/mpp_reader/reader14.rb,
lib/mpp_reader/relation.rb,
lib/mpp_reader/resource.rb,
lib/mpp_reader/rtf_text.rb,
lib/mpp_reader/cfbf/file.rb,
lib/mpp_reader/field_map.rb,
lib/mpp_reader/assignment.rb,
lib/mpp_reader/cfbf/header.rb,
lib/mpp_reader/blocks/props.rb,
lib/mpp_reader/field_reader.rb,
lib/mpp_reader/field_tables.rb,
lib/mpp_reader/cfbf/directory.rb,
lib/mpp_reader/blocks/var_meta.rb,
lib/mpp_reader/blocks/var2_data.rb,
lib/mpp_reader/blocks/fixed_data.rb,
lib/mpp_reader/blocks/fixed_meta.rb
Overview
GENERATED FILE - do not edit by hand. Built by tool/generate_field_tables.rb from the MPXJ sources (common/MPP*Field.java and *Field.java enums).
Defined Under Namespace
Modules: Blocks, Cfbf, Decode, FieldTables, RtfText Classes: Assignment, CLI, Calendar, CompObj, CorruptFileError, Duration, Error, FieldMap, FieldReader, InvalidFormatError, Project, Reader14, Relation, Resource, Task, UnsupportedFormatError
Constant Summary collapse
- SUPPORTED_FORMATS =
File-format identifiers (from the CompObj stream) this gem supports: MPP14 is the format written by Project 2010 through 2021. MPT are templates, GLOBAL is the global.mpt enterprise template.
%w[MSProject.MPP14 MSProject.MPT14 MSProject.GLOBAL14].freeze
- KNOWN_UNSUPPORTED =
Known older generations, for clear error messages only.
{ "MSProject.MPP4" => "Project 4.x/95", "MSProject.MPP8" => "Project 98", "MSProject.MPT8" => "Project 98", "MSProject.MPP9" => "Project 2000/2002", "MSProject.MPT9" => "Project 2000/2002", "MSProject.GLOBAL9" => "Project 2000/2002", "MSProject.MPP12" => "Project 2003/2007", "MSProject.MPT12" => "Project 2003/2007", "MSProject.GLOBAL12" => "Project 2003/2007" }.freeze
- VERSION =
"0.1.0"
Class Method Summary collapse
-
.open(source) ⇒ Object
Opens an .mpp file (path, binary String, or IO) and returns a Project.
Class Method Details
.open(source) ⇒ Object
Opens an .mpp file (path, binary String, or IO) and returns a Project.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/mpp_reader.rb', line 48 def self.open(source) cfbf = Cfbf::File.read(source) comp_obj_stream = cfbf.stream("\x01CompObj") if comp_obj_stream.nil? raise InvalidFormatError, "OLE file has no CompObj stream - not an MS Project file" end comp_obj = CompObj.new(comp_obj_stream) format = comp_obj.file_format unless SUPPORTED_FORMATS.include?(format) product = KNOWN_UNSUPPORTED[format] detail = product ? "#{format} (written by #{product})" : format.inspect raise UnsupportedFormatError, "unsupported file format #{detail} - only MPP14 (Project 2010-2021) is supported" end Project.new(cfbf, comp_obj) end |