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.
- data/lib/spreadsheet_cache_manager_refi.rb +56 -0
- metadata +78 -0
@@ -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
|
+
|