Class: PSD::Resources

Inherits:
Object
  • Object
show all
Includes:
Section
Defined in:
lib/psd/resources.rb

Overview

Parses and reads all of the Resource records in the document.

Instance Attribute Summary collapse

Attributes included from Section

#section_end, #section_start

Instance Method Summary collapse

Methods included from Section

#end_of_section, #end_section, #start_of_section, #start_section

Constructor Details

#initialize(file) ⇒ Resources

Returns a new instance of Resources.



9
10
11
12
13
14
# File 'lib/psd/resources.rb', line 9

def initialize(file)
  @file = file
  @resources = {}
  @type_index = {}
  @length = nil
end

Instance Attribute Details

#resourcesObject (readonly) Also known as: data

Returns the value of attribute resources.



6
7
8
# File 'lib/psd/resources.rb', line 6

def resources
  @resources
end

Instance Method Details

#[](id) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/psd/resources.rb', line 50

def [](id)
  if id.is_a?(Symbol)
    by_type(id)
  else
    @resources[id]
  end
end

#by_type(id) ⇒ Object



58
59
60
# File 'lib/psd/resources.rb', line 58

def by_type(id)
  @resources[@type_index[id]]
end

#parseObject

Parses each Resource and stores them.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/psd/resources.rb', line 17

def parse
  start_section

  n = length
  start = @file.tell

  while n > 0
    pos = @file.tell

    resource = Resource.new(@file)
    resource.parse

    resource_end = @file.tell + resource.size

    name = Resource::Section.factory(@file, resource)
    @resources[resource.id] = resource
    @type_index[name] = resource.id unless name.nil?

    @file.seek resource_end
    n -= @file.tell - pos
  end

  unless n == 0
    @file.seek start + length
  end

  end_section
end

#skipObject



46
47
48
# File 'lib/psd/resources.rb', line 46

def skip
  @file.seek length, IO::SEEK_CUR
end