Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iEPGデジタル 関連続きmulti形式 RubyでPVRを作ろう!その7

データの読み込み部分に関して、multi形式への対応をしなければならないので、IEPG.File2Array()メソッドを作ります。これはファイルから読むことにします。最初の行を読んだ時点で、シングル形式かマルチ形式か判断しています。戻り値は、シングルでもマルチでも同じ形式になるように、iEPGDのArrayとして返すようにしています。

  def IEPG.File2Array( filespec )
    ar = Array.new
    File::open( filespec ) {|f|
      if line = f.gets   # first line
        if line =~ /^Content-type: *application\/#{@@
V1SingleContent}|#{@@V2SingleContent}/
          # single content
          fromLines = Array.new
          fromLines << line.strip
          while line = f.gets
            fromLines << line.strip
          end
          if ( (tmp = IEPG::fromLines( fromLines )) != nil )
            ar << IEPG::fromLines( fromLines )
          end
        elsif line =~ /^Content-type: *application\/#{@@
V1MultiContent}|#{@@V2MultiContent}/
          # multi contents
          while line = f.gets
            if line =~ /^boundary:(.*)$/
              boundary = $1.strip
              break
            end
          end # while
         
          while ( line = f.gets )
            if (line =~ /^#{boundary}--/) # to find really end
              return ar
            elsif (line =~ /^#{boundary}/) # to find start of a content
              fromLines = Array.new
              while line = f.gets
                if (line =~ /^#{boundary}/) # found end of a content
                  if ( (tmp = IEPG::fromLines( fromLines )) != nil )
                    ar << IEPG::fromLines( fromLines )
                    break ;
                  end
                else
                  fromLines << line.strip
                end #if-else
              end # while
              redo
            end # elsif
          end #while ( line = f.gets )
        else
          print( __FILE__ + __LINE__.to_s + "unknown file \n" )
          return nil
        end # else
      else
        break
      end
    }
    return ar
  end # def IEPG.fromFile( filespec )

 



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/639-bc112d06
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。