Sha256: c29290fe6c94d3fa31262fac07fd5fd391fdd9931cfa6739cff4c0b79a431303

Contents?: true

Size: 1.28 KB

Versions: 3

Compression:

Stored size: 1.28 KB

Contents

# Author::    Nicolas Pouillard  <ertai@lrde.epita.fr>.
# Copyright:: Copyright (c) 2004, 2005 TTK team. All rights reserved.
# License::   LGPL
# $Id: OYaml.rb 567 2005-04-13 08:00:06Z polrop $


require 'yaml/basenode_ext'

module TTK

  module Loaders

    # OYaml: Ordered Yaml
    class OYaml < Loader
      include Concrete

      def load_doc(io)
	YAML::parse(io).ttk_loader_oyaml_transform
      end

    end # class OYaml


    module ::YAML

      module BaseNode

        def ttk_loader_oyaml_transform
          @type_id = nil unless defined? @type_id
          t = nil
          if @value.is_a? Hash
            t = OHash.new
            ordered_children_with_index.each do |v, k|
              k = k.to_s.to_sym unless k.is_a? Symbol or k.is_a? Integer
              if k == :strategy
                t[k] = TTK::Loaders.get_class(v.value)
              else
                t[k] = v.ttk_loader_oyaml_transform
              end
            end
          elsif @value.is_a? Array
            t = []
            @value.each do |v|
              t.push v.ttk_loader_oyaml_transform
            end
          else
            t = @value
          end
          YAML.transfer(@type_id, t)
        end

      end # module BaseNode

    end # module ::YAML

  end # module Loaders

end # module TTK


Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ttk-0.1.576 lib/ttk/loaders/OYaml.rb
ttk-0.1.580 lib/ttk/loaders/OYaml.rb
ttk-0.1.579 lib/ttk/loaders/OYaml.rb