Sha256: 042c7bd252cc1cb089966d8b62d3dc5509e320ec8e2c235c18061293dbeaab0b

Contents?: true

Size: 619 Bytes

Versions: 12

Compression:

Stored size: 619 Bytes

Contents

require 'ostruct'

module Yoda
  class Server
    class Deserializer
      def initialize
      end

      # @param params [Hash]
      def deserialize(params)
        Hash[params.map { |key, value| [snakenize(key), deserialize_value(value)] }]
      end

      # @param params [any]
      def deserialize_value(value)
        return deserialize(value) if value.is_a?(Hash)
        return value.map { |el| deserialize_value(el) } if value.is_a?(Enumerable)
        value
      end

      # @param str [Symbol]
      def snakenize(str)
        str.to_s.gsub(/([A-Z])/, '_\1').downcase.to_sym
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/server/deserializer.rb
yoda-language-server-0.10.0 lib/yoda/server/deserializer.rb
yoda-language-server-0.9.0 lib/yoda/server/deserializer.rb
yoda-language-server-0.8.0 lib/yoda/server/deserializer.rb
yoda-language-server-0.7.2 lib/yoda/server/deserializer.rb
yoda-language-server-0.7.1 lib/yoda/server/deserializer.rb
yoda-language-server-0.7.0 lib/yoda/server/deserializer.rb
yoda-language-server-0.6.2 lib/yoda/server/deserializer.rb
yoda-language-server-0.6.1 lib/yoda/server/deserializer.rb
yoda-language-server-0.6.0 lib/yoda/server/deserializer.rb
yoda-language-server-0.5.0 lib/yoda/server/deserializer.rb
yoda-language-server-0.4.0 lib/yoda/server/deserializer.rb