Sha256: f04a8a52035fc62362f80c5025b3256059bfc74d8183de46d95279dee8749390

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

###
### $Rev: 41 $
### $Release: 0.5.1 $
### copyright(c) 2005 kuwata-lab all rights reserved.
###

require 'yaml'

module YamlHelper

   ##
   ## expand tab character to spaces
   ##
   ## ex.
   ##   untabified_str = YamlHelper.untabify(tabbed_str)
   ##
   ## input:: String or IO
   ##
   def self.untabify(input)
      s = ''
      input.each_line do |line|
         s << line.gsub(/([^\t]{8})|([^\t]*)\t/n) { [$+].pack("A8") }
      end
      return s
   end


   ##
   ## create a hash table from list of hash with primary key.
   ##
   ## ex.
   ##   hashlist = [
   ##     { "name"=>"Foo", "gender"=>"M", "age"=>20, },
   ##     { "name"=>"Bar", "gender"=>"F", "age"=>25, },
   ##     { "name"=>"Baz", "gender"=>"M", "age"=>30, },
   ##   ]
   ##   hashtable = YamlHelper.create_hashtable(hashlist, "name")
   ##   p hashtable
   ##       # => { "Foo" => { "name"=>"Foo", "gender"=>"M", "age"=>20, },
   ##              "Bar" => { "name"=>"Bar", "gender"=>"F", "age"=>25, },
   ##              "Baz" => { "name"=>"Baz", "gender"=>"M", "age"=>30, }, }
   ##
   def self.create_hashtable(hashlist, primarykey, flag_duplicate_check=true)
      hashtable = {}
      hashlist.each do |hash|
         key = hash[primarykey]
         unless key
            riase "primary key '#{key}' not found."
         end
         if flag_duplicate_check && hashtable.key?(key)
            raise "primary key '#{key}' duplicated (value '#{hashtable[key]}')"
         end
         hashtable[key] = hash
      end if hashlist
      return hashtable
   end


   ##
   ## get nested value directly.
   ##
   ## ex.
   ##   val = YamlHelper.get_value(obj, ['aaa', 0, 'xxx'])
   ##
   ## This is equal to the following:
   ##   begin
   ##     val = obj['aaa'][0]['xxx']
   ##   rescue NameError
   ##     val = nil
   ##   end
   ##
   def self.get_value(obj, path)
      val = obj
      path.each do |key|
         return nil unless val.is_a?(Hash) || val.is_a?(Array)
         val = val[key]
      end if path
      return val
   end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kwalify-0.5.1 lib/kwalify/util/yaml-helper.rb