Dies Aliquanti

スポンサーサイト

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

RubyでIniFileを読む

Rubyの練習用にIniFileを読むクラスを作ってみました。

 oIniFile = iniFile.new( "Foo.ini")
  sABC = oIniFile["セクション名"]["キー名”]

みたいに使います。セクションやキーがない場合は””になります。

 hSection=oIniFile["セクション名"]

とすると、キーとその値を組にしたハッシュでセクション全体を取得できます。セクションが存在しない場合は、空のハッシュが返ります。
ビンボー性な私は、ハッシュを使うだけで、ちょっと後ろめたいというか、エコでない感じ(笑)がちょっとします。

----
#
# (c)2009 BO
#
class IniFile < Hash
  @@ReComment = /^#/
  @@ReSection =/\[\s*(.*)\s*\]/
  @@ReKeyValue =/\s*(.*)\s*=\s*(.*)\s*/
 
  def initialize( fileSpec )
    @fileSpec = fileSpec
    File::open( fileSpec) {|f|
      sName = ""
      tmpHash = Hash::new
      tmpHash.default = ""
      while line = f.gets
        if line =~ @@ReComment
        elsif line =~ @@ReSection
          # closing previous section
          if sName != ""
            self[ sName ]= tmpHash
          end # if
          sName = $1
          if ( tmpHash = self[ sName ] ) == nil
            tmpHash = Hash::new
            tmpHash.default = ""
          end
        elsif line =~ @@ReKeyValue
          tmpHash[ $1 ] = $2
        end
      end # while
      # closing final section
      if sName != ""
        self[ sName ]= tmpHash
      end # if
    } # auto close-file
    tmpHash = Hash::new
    tmpHash.default = ""
    self.default = tmpHash
    self
  end #def initialize( fileSpec )

  def to_s
    @fileSpec
  end # def to_s
 
  attr_reader :fileSpec
   
end # class IniFile



コメント

コメントの投稿


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

トラックバック

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

FC2Ad

まとめ

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