7th toRuby、第8章クラスとモジュール

基礎の基礎だけど、せっかくなのでtoRubyでやったことを復習したい。

前々回はクラスについて学んだので、その中で少し盛り上がった継承を使ってみた。
Fileを継承して、DICOMの中身をタグ単位でHashに入れて、配列にしまう。
DICOMフルセットではないけど、これ、仕事で結構使えそう。

require "kconv"

class Rdicm < File
  def readlines
    skip_to_body
    lines = []
    idx = 0
    while tag = read_tag
      get_element_info
      body = read_body

      each_line = {}
      each_line["TAG"] = tag
      each_line["VR"] = @vr
      each_line["SIZE"] = @size
      each_line["BODY"] = body
      lines[idx] = each_line
      idx += 1
    end
    return lines
  end

  def get_element_info
    @vr = read(2)

    if /OB/ =~ @vr || /SQ/ =~ @vr || /OW/ =~ @vr
      seek(2,IO::SEEK_CUR)
      size_a = read(4).unpack("L")
    else
      size_a = read(2).unpack("S")
    end

    @size = size_a[0].to_i

  end



end