よしのぼりんさん、こんばんは。
>漢字が使えないというのは、私がライブラリのテストに使ったYAMLのライブラリが日本語対応していなかっただけでした。

なるほど…WindowsとLinuxと両方使っていると、「日本語」は相変わらず頭痛いですね。
YAML、私も勉強してみます。
(2009.08.16 18:09:43)

緑のボタンを押せ! Press the green button

緑のボタンを押せ! Press the green button

PR

×

Keyword Search

▼キーワード検索

Archives

2026.10
2026.09
2026.08
2026.07
2026.06

Comments

effelpist@ kilovermek.es effelpist &lt;a href=&quot; <small> <a href="http…
Jun@ Re:「いっちゅう」さんのiEPG用ソフト入れてみた(09/15) TVdeIEPG Ver.1.2.1.0がリンク切れしてい…
スター@ Re:hauppauge HD PVR 速報(08/25) スタービーチ <small> <a href="http://c…
ASOBO@ Re:hauppauge HD PVR 速報 ASOBO攻略 <small> <a href="http:/…
ハッピーメール@ Re:hauppauge HD PVR 速報 ハッピーメール <small> <a href="http:/…

Freepage List

Favorite Blog

まだ登録されていません
2009.05.06
XML
テーマ: 私のPC生活(7590)
カテゴリ: Ruby
2009/6/29 さらに 直しました
まえにも、書いたんですが、ちょっと直しました。

ini = IniFile.new( "test.ini")

で、ハッシュのハッシュを返します。

ini[ section ][ key ]

でセクション、キーで値を参照できます。存在しない、ハッシュ、キーが指定されると""(ヌル文字列)が返ります。


ini[ section ]

でセクション全体をハッシュとして返します。存在しないセクションを指定すれば、空のハッシュを返します。

iniファイルを書く方も作らなければなりませんね。ま、それはまた今度。


#
# (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.strip
          if ( tmpHash = self[ sName ] ) == nil
            tmpHash = Hash::new
            tmpHash.default = ""
          end
        elsif line =~ @@ReKeyValue
          tmpHash[ $1.strip  ] = $2.strip
        end
      end # while
      # closing final section
      if sName != ""
        self[ sName ]= tmpHash
      end # if
    }
    tmpHash = Hash::new
    tmpHash.default = ""
    self.default = tmpHash
    self
  end #def initialize( fileSpec )

  attr_reader :fileSpec
end # class IniFile







お気に入りの記事を「いいね!」で応援しよう

Last updated  2009.06.28 18:48:44
コメント(6) | コメントを書く
[Ruby] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


私も .ini を...  
よしのぼりん さん
自分も、似たものを作ってました。Ruby 標準ライブラリの YAML と良く似たインターフェイスで .ini ファイルから読み込める、INI です:
<small> <a href=" http://yoshinoborin-diary.blogspot.com/2009/08/ini.html" ; target="_blank"> http://yoshinoborin-diary.blogspot.com/2009/08/ini.html< ;/a></small>
(2009.08.06 23:21:00)

Re:私も .ini を...(05/06)  
B.O  さん
よしのぼりんさん、こんばんは。
YAMLなんて知りませんでした。勉強になります。
漢字は、-Ksとかで漢字コードを指定してもだめでしょうか?
(2009.08.08 01:50:32)

Re[1]:私も .ini を...(05/06)  
よしのぼりん さん
B.Oさん、こんばんは。
アドバイスありがとうございます。
漢字が使えないというのは、私がライブラリのテストに使ったYAMLのライブラリが日本語対応していなかっただけでした。お騒がせいたしました。
YAMLですが、とても便利です。いろいろな設定ファイルをYAMLフォーマットにしておけば、Rubyのコード数行で読み込み可能です。 (2009.08.14 22:57:36)

Re[2]:私も .ini を...(05/06)  
B.O  さん

Re:Rubyで.iniファイルを読む(05/06)  
ひっぱりだこ さん
「ruby iniファイル」で検索するとこちらにたどり着いたので、iniファイルの処理にありがたく使わせていただきました。値そのものに=(イコール)が含まれる場合があるので正規表現の一部を最短一致に変更して使っています。
@@ReKeyValue =/\s*?(.*?)\s*?=\s*(.*)\s*/
(2009.09.12 23:01:14)

Re[1]:Rubyで.iniファイルを読む(05/06)  
B.O  さん
ひっぱりだこさん、こんばんわ
>「値そのものに=(イコール)が含まれる場合
>があるので正規表現の一部を最短一致に変更して..
なる程、確かにそうですね。そのうちメンテします。
ご指摘、ありがとうございます。
(2009.09.14 00:20:31)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: