Sha256: eec6f71ca484e6b2f8b63c70ce77bfdc57a6ab2719a4125966ab109c8c1ce1de

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

require 'time'
require 'bigdecimal'
require 'set'

module EDN
  module CoreExt
    module Unquoted
      def to_edn
        self.to_s
      end
    end

    module Bignum
      def to_edn
        self.to_s + 'M'
      end
    end

    module BigDecimal
      def to_edn
        self.to_s('F') + 'M'
      end
    end

    module String
      def ~@
        EDN::Type::Symbol.new(self)
      end

      def to_edn
        self.inspect
      end
    end

    module Symbol
      def to_edn
        ":#{self.to_s}"
      end
    end

    module Array
      def ~@
        EDN::Type::List.new(*self)
      end

      def to_edn
        '[' + self.map(&:to_edn).join(" ") + ']'
      end
    end

    module Hash
      def to_edn
        '{' + self.map { |k, v| [k, v].map(&:to_edn).join(" ") }.join(", ") + '}'
      end
    end

    module Set
      def to_edn
        '#{' + self.to_a.map(&:to_edn).join(" ") + '}'
      end
    end

    module NilClass
      def to_edn
        "nil"
      end
    end

    module DateTime
      def to_edn
        EDN.tagout("inst", self.rfc3339)
      end
    end

    module Time
      def to_edn
        EDN.tagout("inst", self.xmlschema)
      end
    end
  end
end

Numeric.send(:include, EDN::CoreExt::Unquoted)
Bignum.send(:include, EDN::CoreExt::Bignum)
BigDecimal.send(:include, EDN::CoreExt::BigDecimal)
TrueClass.send(:include, EDN::CoreExt::Unquoted)
FalseClass.send(:include, EDN::CoreExt::Unquoted)
NilClass.send(:include, EDN::CoreExt::NilClass)
String.send(:include, EDN::CoreExt::String)
Symbol.send(:include, EDN::CoreExt::Symbol)
Array.send(:include, EDN::CoreExt::Array)
Hash.send(:include, EDN::CoreExt::Hash)
Set.send(:include, EDN::CoreExt::Set)
DateTime.send(:include, EDN::CoreExt::DateTime)
Time.send(:include, EDN::CoreExt::Time)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
edn-0.9.4 lib/edn/core_ext.rb