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