module EnClient::Serializable

Public Instance Methods

deserialize(str) click to toggle source
# File usr/lib/evernote-mode/enclient.rb, line 68
def deserialize(str)
  fields = str.split ","
  fields.each do |f|
    f =~ /\A([^=]*)=(.*)\z/
    varsym = $1.to_sym
    varval_str = $2
    vartype = serialized_fields[varsym]
    #puts "[#{varsym}], [#{varval_str}], [#{vartype}]"

    varval =
      if varval_str
        case vartype
        when :field_type_int, :field_type_timestamp
          varval_str.to_i
        when :field_type_bool
          if varval_str == "true"
            true
          elsif varval_str == "false"
            false
          else
            raise IllegalStateException.new("illegal field value of boolean #{varval_str}")
          end
        when :field_type_string
          varval_str
        when :field_type_string_array
          varval_str.split "|"
        when :field_type_base64
          Formatter.decode_base64 varval_str
        when :field_type_base64_array
          Formatter.decode_base64_list varval_str.split("|")
        else
          raise IllegalStateException.new("illegal field type #{vartype} for #{varsym}")
        end
      else
        nil
      end
    send (varsym.to_s + "="), varval
  end
end
serialize() click to toggle source
# File usr/lib/evernote-mode/enclient.rb, line 45
def serialize
  fields = serialized_fields.map do |varsym, vartype|
    varval = send varsym
    if varval
      case vartype
      when :field_type_int, :field_type_bool, :field_type_string, :field_type_timestamp
        "#{varsym}=#{varval}"
      when :field_type_string_array
        "#{varsym}=#{varval.join "|"}"
      when :field_type_base64
        "#{varsym}=#{Formatter.encode_base64 varval}"
      when :field_type_base64_array
        b64list = Formatter.encode_base64_list varval
        "#{varsym}=#{b64list.join "|"}"
      else
        raise IllegalStateException.new("illegal field type #{ftype}")
      end
    end
  end
  fields.delete nil
  fields.join ","
end
to_sexp() click to toggle source
# File usr/lib/evernote-mode/enclient.rb, line 108
def to_sexp
  str = "("
  class_name = Formatter.remove_package_names self.class.name
  str += "(class . #{class_name})"
  serialized_fields.each do |varsym, vartype|
    varval = send varsym
    if varval
      case vartype
      when :field_type_int
        str += "(#{varsym} . #{varval})"
      when :field_type_timestamp
        str += %Q|(#{varsym} . "#{Time.at varval/1000}")|
      when :field_type_bool
        if varval == true
          str += "(#{varsym} . t)"
        elsif varval_str == false
          str += "(#{varsym} . nil)"
        else
          raise IllegalStateException.new("illegal field value of boolean #{varval}")
        end
      when :field_type_string
        str += %Q|(#{varsym} . "#{varval}")|
      when :field_type_string_array
        str += "(#{varsym} . ("
        varval.each do |elem|
          str += %Q|"#{elem}"|
            str += " "
        end
        str += "))"
      when :field_type_base64
        #str += %|(#{varsym} . "#{Formatter.encode_base64 varval}")|
        str += %Q|(#{varsym} . "#{Formatter.sexp_string_escape varval}")|
      when :field_type_base64_array
        str += "(#{varsym} . ("
        varval.each do |elem|
          #str += %|"#{Formatter.encode_base64 elem}"|
          # str += " "
          str += %Q|"#{Formatter.sexp_string_escape elem}"|
            str += " "
        end
        str += "))"
      else
        raise IllegalStateException.new("illegal field type #{vartype}")
      end
    else
      str += "(#{varsym} . nil)"
    end
  end
  str += ")"
end