Ruby读取INI文件

将读取INI文件的类用Ruby翻译了一下,记下来备用
class INIReader	
  def initialize(fileName)
    @sections = {}		
    current_section, kv_hash = nil
    File.open(fileName).each_line do |line|
      line = line.strip
      if line != ''
        if line[0].chr == '[' and line[-1].chr == ']'
          current_section = line[1, line.length - 2]
          kv_hash = {}
        else					
          kv = line.split("=")
          kv_hash[kv[0]] = kv[1]
          @sections[current_section] = kv_hash
        end
      end
    end
  end
	
  def get_sections
    @sections.keys
  end
	
  def get_keys(sectionName)
    (@sections[sectionName]).keys
  end
	
  def get_value(sectionName, keyName)
    (@sections[sectionName])[keyName]
  end
end

# tester
reader = INIReader.new('test.ini')
puts reader.get_sections
puts reader.get_keys('Section2')
puts reader.get_value('Section3', 'key3')


在编写这段代码时查到一段输出调试Hash的技巧
使用普通的puts方法输出Hash对象是key-value连在一起的,基本不可读;
简单的Hash对象可以使用这种 p 方法输出查看
p hash 

复杂的Hash对象可以使用 pp 方法输出查看,这种输出叫pretty-print
require 'pp'
pp hash

你可能感兴趣的:(Ruby)