Sha256: d2a304236a49a103071025957d7feeff28b5dc922093710d15292b4b57caaf8d

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

require 'evernote-thrift'

class NoteMeta

  [:updated, :created, :title, :notebookGuid, :guid, :contentLength, :tagGuids].each do |method|
    define_method method do
      iv_name = "@#{method}"
      value = instance_variable_get iv_name
      unless value
        value = instance_variable_get("@meta").send method
        instance_variable_set iv_name, value
      end
      value
    end
  end

  def initialize meta, note_store
    @meta = meta
    @store = note_store
  end

  def tags
    @tags ||= (tagGuids ? tagGuids.map{|id| @store.tag_name id} : [])
  end

  def book
    @book ||= @store.book_name notebookGuid
  end

  def stack
    @stack = (instance_variable_defined? :@stack) ? @stack : @store.stack_name(notebookGuid)
  end

  def created_at
    Time.at created / 1000
  end

  def updated_at
    Time.at updated / 1000
  end

  def to_h
    @h = attr_methods.each_with_object({}) do |method, hash|
        hash[method] = send method
      end
  end

  def marshal_dump
    to_h
  end

  def marshal_load hash
    hash.each do |key, value|
      instance_variable_set "@#{key}", value
    end
  end

  private

  def attr_methods
    self.class.instance_methods(false) - [:to_h, :marshal_dump, :marshal_load]
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yinx-0.1.2 lib/yinx/note_meta.rb
yinx-0.1.1 lib/yinx/note_meta.rb