Sha256: bb8d6084ebee82d90db06007c628d429809c5923e6a3647784a74c608750de0f

Contents?: true

Size: 1 KB

Versions: 31

Compression:

Stored size: 1 KB

Contents

module Qa::Authorities
  module MeshTools
    class MeshDataParser
      attr_accessor :file

      def initialize(file)
        @file = file
      end

      def each_mesh_record # rubocop:disable Metrics/MethodLength
        current_data = {}
        in_record = false
        file.each_line do |line|
          case line
          when /\A\*NEWRECORD/
            yield(current_data) if in_record
            in_record = true
            current_data = {}
          when /\A(?<term>[^=]+) = (?<value>.*)/
            current_data[Regexp.last_match(:term)] ||= []
            current_data[Regexp.last_match(:term)] << Regexp.last_match(:value).strip
          when /\A\n/
            yield(current_data) if in_record
            in_record = false
          end
        end
        # final time in case file did not end with a blank line
        yield(current_data) if in_record
      end

      def all_records
        result = []
        each_mesh_record { |rec| result << rec }
        result
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
qa-5.8.1 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.8.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.7.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.6.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.5.2 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-4.3.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-3.1.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-2.3.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.5.1 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.5.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.4.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.3.1 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.3.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.2.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.1.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-5.0.0 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-4.2.4 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-4.2.3 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-4.2.2 lib/qa/authorities/mesh_tools/mesh_data_parser.rb
qa-4.2.1 lib/qa/authorities/mesh_tools/mesh_data_parser.rb