spreadsheet_cache_manager_refi 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+