Class: Saxlsx::FileSystem

Inherits:
Object
  • Object
show all
Defined in:
lib/saxlsx/file_system.rb

Constant Summary collapse

IO_METHODS =
[:tell, :seek, :read, :close]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename) ⇒ FileSystem

Returns a new instance of FileSystem.



15
16
17
18
19
20
21
22
# File 'lib/saxlsx/file_system.rb', line 15

def initialize(filename)
  if IO_METHODS.map { |method| filename.respond_to?(method) }.all?
    @zip = Zip::File.open_buffer filename
    @io = true
  else
    @zip = Zip::File.open filename
  end
end

Class Method Details

.open(filename) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/saxlsx/file_system.rb', line 6

def self.open(filename)
  begin
    file_system = self.new(filename)
    yield file_system
  ensure
    file_system.close
  end
end

Instance Method Details

#closeObject



24
25
26
# File 'lib/saxlsx/file_system.rb', line 24

def close
  @zip.close unless @io
end

#shared_stringsObject



32
33
34
35
# File 'lib/saxlsx/file_system.rb', line 32

def shared_strings
  file = @zip.glob('xl/shared[Ss]trings.xml').first
  @zip.get_input_stream(file) if file
end

#sheet(i) ⇒ Object



41
42
43
# File 'lib/saxlsx/file_system.rb', line 41

def sheet(i)
  @zip.get_input_stream("xl/worksheets/sheet#{i+1}.xml")
end

#stylesObject



37
38
39
# File 'lib/saxlsx/file_system.rb', line 37

def styles
  @zip.get_input_stream('xl/styles.xml')
end

#workbookObject



28
29
30
# File 'lib/saxlsx/file_system.rb', line 28

def workbook
  @zip.get_input_stream('xl/workbook.xml')
end