# frozen_string_literal: true require 'date' require 'zlib' require 'stringio' require 'base64' require 'md5f' require_relative 'dsp_blueprint_parser/version' require_relative 'dsp_blueprint_parser/blueprint_data' require_relative 'dsp_blueprint_parser/icon_layout' require_relative 'dsp_blueprint_parser/area' require_relative 'dsp_blueprint_parser/building' require_relative 'dsp_blueprint_parser/binary_reader' require_relative 'dsp_blueprint_parser/parser' require_relative 'dsp_blueprint_parser/data_sections' # module to receive a Dyson Sphere Program blueprint string and parse it module DspBlueprintParser class Error < StandardError; end # @param str_blueprint [String] # @return [BlueprintData] def self.parse(str_blueprint) return if str_blueprint.size < 28 return unless str_blueprint.start_with? 'BLUEPRINT:' parser = Parser.new(str_blueprint) parser.blueprint end # @param input [String] # @return [Boolean] def self.is_valid?(input) sections = DataSections.new(input) hash = MD5F::compute(sections.hashed_string) return sections.hash == hash end end