spreadsheet_cache_manager_refi 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,56 @@
1
+ # encoding: UTF-8
2
+
3
+ #require 'roo'
4
+ require 'spreadsheet_cache_refi'
5
+ include Refi
6
+
7
+ class SpreadsheetCacheManager
8
+ def initialize(p={})
9
+ @default_db_pa = p[:default_db_pa] || "./"
10
+ @ss_manager = p[:ss_manager] || SpreadsheetManager.new
11
+ @ss_db_cache_s = {} # ss_pn => ss_db_cache
12
+ end
13
+ def get_ss_db_cache(ss_pn,p={})
14
+ db_pn = p[:db_pn] || File.join( @default_db_pa , "#{File.basename(ss_pn)}.ssdb" )
15
+ if @ss_db_cache_s[ss_pn] == nil # spreadsheet cache db not opened yet
16
+ myreq "intern/ss_db_cache.rb"
17
+ ss_db_cache = SpreadsheetCache.new(db_pn,ss_pn,@ss_manager)
18
+ @ss_db_cache_s[ss_pn] = ss_db_cache
19
+ end
20
+ return @ss_db_cache_s[ss_pn]
21
+ end
22
+ end
23
+
24
+ # access to spreadsheets via roo
25
+ # - each file will only be opened once for all requests that are made
26
+ class SpreadsheetManager
27
+ def initialize
28
+ @ss_s = {} # file_pn => spreadsheet
29
+ @metadata_s = {}
30
+ end
31
+ def get_ss(ss_pn)
32
+ if @ss_s[ss_pn] == nil # spreadsheet not opened yet
33
+ $Log.indent
34
+ $Log.tlog( {id: 'info1035', ss_pn: ss_pn } )
35
+ #dputi "K - open spreadsheet: #{$st[:ss_file]}#{ss_pn}"
36
+ #myreq 'roo'
37
+ file_extension = ss_pn.match(/.+\.(.+)$/)[1].to_s
38
+ ss = case file_extension
39
+ when 'xlsx' then Excelx.new(ss_pn)
40
+ when 'xls' then Excel.new(ss_pn)
41
+ when 'ods' then Openoffice.new(ss_pn)
42
+ end
43
+ @ss_s[ss_pn] = ss
44
+ $Log.undent
45
+ #dpun
46
+ end
47
+ return @ss_s[ss_pn]
48
+ end
49
+ def get_metadata(ss_pn)
50
+ if(@metadata_s[ss_pn] == nil)
51
+ @metadata_s[ss_pn] = {"ss_pn" => ss_pn}.merge( File.get_metadata(ss_pn) )
52
+ end
53
+ return @metadata_s[ss_pn]
54
+ end
55
+ end
56
+
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spreadsheet_cache_manager_refi
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 0
9
+ version: 0.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Robert Fey
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-07-26 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: spreadsheet_db-cache_refi
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - "="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 0
31
+ - 0
32
+ version: 0.0.0
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: ""
36
+ email: feyrob@gmail.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - lib/spreadsheet_cache_manager_refi.rb
45
+ has_rdoc: true
46
+ homepage: http://rubygems.org/gems/spreadsheet_cache_manager_refi
47
+ licenses: []
48
+
49
+ post_install_message:
50
+ rdoc_options: []
51
+
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ segments:
68
+ - 0
69
+ version: "0"
70
+ requirements: []
71
+
72
+ rubyforge_project: nowarning
73
+ rubygems_version: 1.3.7
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: speed up repetitive reading of spreadsheet files by creating sqlite caches
77
+ test_files: []
78
+