Class: PrintReleaf::Resource

Inherits:
Hashie::Trash
  • Object
show all
Includes:
Hashie::Extensions::Coercion, Hashie::Extensions::IgnoreUndeclared, Hashie::Extensions::IndifferentAccess
Defined in:
lib/printreleaf/resource.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Resource

Returns a new instance of Resource.



36
37
38
39
# File 'lib/printreleaf/resource.rb', line 36

def initialize(*args)
  super
  @copy = self.dup.freeze
end

Instance Attribute Details

#copyObject (readonly)

Returns the value of attribute copy.



33
34
35
# File 'lib/printreleaf/resource.rb', line 33

def copy
  @copy
end

#ownerObject

Returns the value of attribute owner.



34
35
36
# File 'lib/printreleaf/resource.rb', line 34

def owner
  @owner
end

Class Method Details

.action(sym) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/printreleaf/resource.rb', line 21

def action(sym)
  actions.tap { |list|
    list.add(sym)
  }.each { |action|
    include Actions.const_get(action.to_s.capitalize)
  }
end

.actionsObject



17
18
19
# File 'lib/printreleaf/resource.rb', line 17

def actions
  @actions ||= Set.new
end

.path(value = nil) ⇒ Object



8
9
10
11
# File 'lib/printreleaf/resource.rb', line 8

def path(value=nil)
  @path = value if value
  @path or raise "Path not declared."
end

.uriObject



13
14
15
# File 'lib/printreleaf/resource.rb', line 13

def uri
  path
end

Instance Method Details

#changesObject



59
60
61
62
63
64
65
66
# File 'lib/printreleaf/resource.rb', line 59

def changes
  keys.map(&:to_sym).inject({}) do |diff, key|
    unless self[key] == copy[key]
      diff[key] = self[key]
    end
    diff
  end
end

#compact_inspectObject



84
85
86
87
88
89
90
# File 'lib/printreleaf/resource.rb', line 84

def compact_inspect
  "".tap do |str|
    str << "#<#{self.class} "
    str << "id='#{self.id}'" if respond_to?(:id)
    str << ">"
  end
end

#deleteObject

Raises:



50
51
52
# File 'lib/printreleaf/resource.rb', line 50

def delete
  raise DoesNotImplement, "Resource does not implement `delete`"
end

#deleted?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/printreleaf/resource.rb', line 68

def deleted?
  !!deleted
end

#find(*args) ⇒ Object

Raises:



46
47
48
# File 'lib/printreleaf/resource.rb', line 46

def find(*args)
  raise DoesNotImplement, "Resource does not implement `find`"
end

#inspectObject



76
77
78
79
80
81
82
# File 'lib/printreleaf/resource.rb', line 76

def inspect
  "".tap do |str|
    str << "#<#{self.class} "
    str << JSON.pretty_generate(self)
    str << ">"
  end
end

#reset(hash) ⇒ Object



54
55
56
57
# File 'lib/printreleaf/resource.rb', line 54

def reset(hash)
  delete_if { true }
  update(hash)
end

#to_sObject



72
73
74
# File 'lib/printreleaf/resource.rb', line 72

def to_s
  "#<#{self.class.name}>"
end

#uriObject



41
42
43
44
# File 'lib/printreleaf/resource.rb', line 41

def uri
  scope = owner ? owner.uri : nil
  Util.join_uri(scope, self.class.uri, self.id)
end