Sha256: d326ef0f72d4fc05cbb4f0188be8f3f54c0d1347082728c22e0c1fae573b549e

Contents?: true

Size: 1.23 KB

Versions: 5

Compression:

Stored size: 1.23 KB

Contents

require 'yaml'

module ASIR
  class Coder
    # !SLIDE
    # YAML Coder
    # Use YAML for encode/decode.
    class Yaml < self
      def _encode obj
        case obj
        when Message, Result
          obj = obj.encode_more!
        end
        yaml_dump(obj)
      end

      def _decode obj
        case obj = ::YAML::load(obj)
        when Message, Result
          obj.decode_more!
        else
          obj
        end
      end

      attr_accessor :yaml_options
      case RUBY_VERSION
      when /^1\.8|^1\.9\.2/
        def yaml_dump obj
          ::YAML::dump obj
        end
      else
        def yaml_dump obj
          ::YAML::dump(obj, nil, yaml_options || EMPTY_HASH)
        end
      end
    end # class
  end # class
end # module

if defined? ::Psych
  require 'psych/visitors'
  class Psych::Visitors::YAMLTree
    private
    # alias fails for some environments:
    # alias :binary_without_option? :binary?
    def binary? string
      return false if @options[:never_binary]
      result =
        string.index("\x00") ||
        string.count("\x00-\x7F", "^ -~\t\r\n").fdiv(string.length) > 0.3
      unless @options[:ASCII_8BIT_ok]
        result ||= string.encoding == Encoding::ASCII_8BIT
      end
      result
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
asir-1.2.11 lib/asir/coder/yaml.rb
asir-1.2.10 lib/asir/coder/yaml.rb
asir-1.2.9 lib/asir/coder/yaml.rb
asir-1.2.8 lib/asir/coder/yaml.rb
asir-1.2.7 lib/asir/coder/yaml.rb