Sha256: 645a5c852b68e1307115c2d44b5e5dd0cad1bbbce964322fbdb04805e8d790b0

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require 'base64'

module RHCP
  
  module EncodingHelper
    
    def self.change_string_values(thing, &block)
      result = nil
      case thing.class.to_s
      when "Array"
        result = []
        thing.each do |t|
          result << change_string_values(t, &block)
        end
      when "Hash"
        result = {}
        thing.each do |k,v|
          result[k] = change_string_values(v, &block)
        end
      #when "String","Fixnum","Boolean","TrueClass","FalseClass"
      when "String"
        result = block.call(thing.to_s)
      when "Fixnum","TrueClass","FalseClass"
        result = thing
      when "Proc","NilClass","Binding"
        # ignore
      else
        $logger.debug("don't know how to encode #{thing.class} - skipping")
      end
      result
    end

    def self.to_base64(thing)
      change_string_values(thing) do |x|
        Base64.encode64(x)
      end
    end
    
    def self.from_base64(thing)
      change_string_values(thing) do |x|
        Base64.decode64(x)
      end
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rhcp-0.2.23 lib/rhcp/encoding_helper.rb
rhcp-0.2.22 lib/rhcp/encoding_helper.rb