Sha256: f7eb992b39cb0475180d38f57d381899801e524ab19eb605452a5a965dfac834

Contents?: true

Size: 1.11 KB

Versions: 13

Compression:

Stored size: 1.11 KB

Contents

require 'representable/hash/binding'

module Representable
  module YAML
    class Binding < Representable::Hash::Binding
      def self.build_for(definition, *args)
        return Collection.new(definition, *args) if definition.array?
        new(definition, *args)
      end

      def write(map, fragment)
        map.children << Psych::Nodes::Scalar.new(as)
        map.children << node_for(fragment)  # FIXME: should be serialize.
      end
    # private

      def node_for(fragment)
        write_scalar(fragment)
      end

      def write_scalar(value)
        return value if typed?

        Psych::Nodes::Scalar.new(value.to_s)
      end

      def serialize_method
        :to_ast
      end

      def deserialize_method
        :from_hash
      end


      class Collection < self
        include Representable::Binding::Collection

        def node_for(fragments)
          Psych::Nodes::Sequence.new.tap do |seq|
            seq.style = Psych::Nodes::Sequence::FLOW if self[:style] == :flow
            fragments.each { |frag| seq.children << write_scalar(frag) }
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
representable-2.3.0 lib/representable/yaml/binding.rb
representable-2.2.3 lib/representable/yaml/binding.rb
representable-2.2.2 lib/representable/yaml/binding.rb
representable-2.2.1 lib/representable/yaml/binding.rb
representable-2.2.0 lib/representable/yaml/binding.rb
representable-2.1.8 lib/representable/yaml/binding.rb
representable-2.1.7 lib/representable/yaml/binding.rb
representable-2.1.6 lib/representable/yaml/binding.rb
representable-2.1.5 lib/representable/yaml/binding.rb
representable-2.1.4 lib/representable/yaml/binding.rb
representable-2.1.3 lib/representable/yaml/binding.rb
representable-2.1.1 lib/representable/yaml/binding.rb
representable-2.1.0 lib/representable/yaml/binding.rb