energon 0.0.3 → 0.0.4
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/energon/document.rb +2 -2
- data/lib/energon/excel_document.rb +15 -5
- data/lib/energon/od_document.rb +2 -1
- data/lib/energon/open_xml_helper.rb +1 -1
- data/lib/energon/parser.rb +1 -1
- data/lib/energon/word_document.rb +2 -2
- data/rakefile.rb +57 -57
- data/test/test_oo_document.rb +2 -1
- metadata +69 -58
data/lib/energon/document.rb
CHANGED
@@ -21,7 +21,7 @@ module Woa; module Energon
|
|
21
21
|
# include Woa::Energon
|
22
22
|
# document = Document.new("@author@, @date@, @country@")
|
23
23
|
# document.add_values({:author => "Woa! Kft", :date => Time.now})
|
24
|
-
# document.add_value(:country
|
24
|
+
# document.add_value(:country, "Hungary")
|
25
25
|
# puts document.write #"Woa! Kft, Wed Nov 29 11:31:52 CET 2006, Hungary"
|
26
26
|
class Document
|
27
27
|
|
@@ -83,7 +83,7 @@ module Woa; module Energon
|
|
83
83
|
@placeholders.each do |placeholder|
|
84
84
|
data = Parser.merge(placeholder, @datas)
|
85
85
|
data = data.join(@new_line) if data.is_a?(Array)
|
86
|
-
@template.gsub!("#{@delimiter}#{placeholder}#{@delimiter}", data)
|
86
|
+
@template.gsub!("#{@delimiter}#{placeholder}#{@delimiter}", data.to_s)
|
87
87
|
end
|
88
88
|
return(@template) if output.nil?
|
89
89
|
output.puts @template
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'energon/document'
|
2
2
|
require 'energon/open_xml_helper'
|
3
3
|
require 'rexml/document'
|
4
|
-
include REXML
|
5
4
|
|
6
5
|
module Woa; module Energon;
|
7
6
|
# This is a subclass of Document but it deals with Excel templates
|
@@ -12,7 +11,8 @@ module Woa; module Energon;
|
|
12
11
|
#
|
13
12
|
# :include: rdoc-header
|
14
13
|
class ExcelDocument < Document
|
15
|
-
|
14
|
+
include REXML
|
15
|
+
|
16
16
|
def write()
|
17
17
|
raise NoPlaceholderFound if @placeholders.empty?
|
18
18
|
rows = {}
|
@@ -48,7 +48,7 @@ module Woa; module Energon;
|
|
48
48
|
continue = false
|
49
49
|
break
|
50
50
|
end
|
51
|
-
|
51
|
+
write_data_to_cell data, cell
|
52
52
|
end
|
53
53
|
if continue
|
54
54
|
new_row = row.deep_clone
|
@@ -70,7 +70,7 @@ module Woa; module Energon;
|
|
70
70
|
XPath.each(root, 'row') do |element|
|
71
71
|
next if element.parent.index(element) <= index
|
72
72
|
value = element.attributes.get_attribute('r').value.to_i + inserted_rows
|
73
|
-
element.add_attribute('r', value)
|
73
|
+
element.add_attribute('r', value.to_s)
|
74
74
|
XPath.each(element, 'c[@r]') do |element|
|
75
75
|
new_value = element.attributes.get_attribute('r').value.to_s.gsub(/\d+/, value.to_s)
|
76
76
|
element.add_attribute('r', new_value)
|
@@ -94,6 +94,16 @@ module Woa; module Energon;
|
|
94
94
|
#############################
|
95
95
|
private
|
96
96
|
#############################
|
97
|
+
def write_data_to_cell(data, cell)
|
98
|
+
if data.kind_of?(Numeric)
|
99
|
+
cell.text = data.to_s
|
100
|
+
type_attribute = cell.parent.attributes.get_attribute('t')
|
101
|
+
type_attribute.remove if type_attribute
|
102
|
+
else
|
103
|
+
cell.text = add_shared_string(data.to_s)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
97
107
|
def extract_placeholders
|
98
108
|
@openxml = OpenXmlHelper.new_excel(@template)
|
99
109
|
@documents = @openxml.documents
|
@@ -132,7 +142,7 @@ module Woa; module Energon;
|
|
132
142
|
unique_count = root.attributes.get_attribute('uniqueCount').value.to_i.next
|
133
143
|
root.add_attribute('count', count.to_s)
|
134
144
|
root.add_attribute('uniqueCount', unique_count.to_s)
|
135
|
-
|
145
|
+
unique_count - 1
|
136
146
|
end
|
137
147
|
end
|
138
148
|
end; end
|
data/lib/energon/od_document.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'energon/document'
|
2
2
|
require 'energon/open_document_helper'
|
3
3
|
require 'rexml/document'
|
4
|
-
include REXML
|
5
4
|
|
6
5
|
module Woa; module Energon;
|
7
6
|
# This is a subclass of Document but it deals with OpenDocument
|
@@ -13,6 +12,8 @@ module Woa; module Energon;
|
|
13
12
|
#
|
14
13
|
# :include: rdoc-header
|
15
14
|
class OdDocument < Document
|
15
|
+
include REXML
|
16
|
+
|
16
17
|
def write()
|
17
18
|
raise NoPlaceholderFound if @placeholders.empty?
|
18
19
|
rows = {}
|
data/lib/energon/parser.rb
CHANGED
@@ -232,7 +232,7 @@ module Woa; module Energon
|
|
232
232
|
raise NoDataFound, error unless specific_data.is_a?(Array)
|
233
233
|
raise NoDataFound, error if specific_data.empty?
|
234
234
|
|
235
|
-
singular = Inflector::singularize(dynamic)
|
235
|
+
singular = ActiveSupport::Inflector::singularize(dynamic)
|
236
236
|
singular = nil if singular == dynamic
|
237
237
|
elements = []
|
238
238
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'energon/document'
|
2
2
|
require 'energon/open_xml_helper'
|
3
3
|
require 'rexml/document'
|
4
|
-
include REXML
|
5
4
|
|
6
5
|
module Woa; module Energon;
|
7
6
|
# This is a subclass of Document but it deals with Word templates
|
@@ -12,7 +11,8 @@ module Woa; module Energon;
|
|
12
11
|
#
|
13
12
|
# :include: rdoc-header
|
14
13
|
class WordDocument < Document
|
15
|
-
|
14
|
+
include REXML
|
15
|
+
|
16
16
|
def write()
|
17
17
|
raise NoPlaceholderFound if @placeholders.empty?
|
18
18
|
rows = {}
|
data/rakefile.rb
CHANGED
@@ -1,57 +1,57 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rake/rdoctask'
|
4
|
-
require 'rake/gempackagetask'
|
5
|
-
|
6
|
-
task :default => :test
|
7
|
-
|
8
|
-
desc "Run the tests"
|
9
|
-
Rake::TestTask::new do |t|
|
10
|
-
t.test_files = FileList['test/test_*.rb']
|
11
|
-
t.verbose = true
|
12
|
-
end
|
13
|
-
|
14
|
-
desc "Generate the documentation"
|
15
|
-
Rake::RDocTask::new do |rdoc|
|
16
|
-
rdoc.rdoc_dir = 'energon-doc/'
|
17
|
-
rdoc.title = "Energon Documentation"
|
18
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
19
|
-
rdoc.rdoc_files.include('README')
|
20
|
-
rdoc.rdoc_files.include('MIT-LICENSE')
|
21
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
-
end
|
23
|
-
|
24
|
-
spec = Gem::Specification::new do |s|
|
25
|
-
s.platform = Gem::Platform::RUBY
|
26
|
-
|
27
|
-
s.name = 'energon'
|
28
|
-
s.version = "0.0.
|
29
|
-
s.summary = "Report engine outputting Word/Excel OpenXML documents"
|
30
|
-
s.description = <<EOF
|
31
|
-
Energon is a report engine written in ruby, creating advanced and
|
32
|
-
reliable reports from templates.
|
33
|
-
EOF
|
34
|
-
s.author = '
|
35
|
-
s.email = 'energon@
|
36
|
-
s.homepage = "http://www.
|
37
|
-
|
38
|
-
s.requirements << 'rubyzip, 0.9.1 or greater'
|
39
|
-
s.add_dependency('rubyzip', '>= 0.9.1')
|
40
|
-
|
41
|
-
s.requirements << 'activesupport, 1.3.1 or greater'
|
42
|
-
s.add_dependency('activesupport', '>= 1.3.1')
|
43
|
-
|
44
|
-
s.require_path = 'lib'
|
45
|
-
s.files = FileList["lib/**/*.rb", "test/**/*.rb", "README","MIT-LICENSE","rakefile.rb"]
|
46
|
-
s.test_files = FileList['test/test*.rb']
|
47
|
-
|
48
|
-
s.has_rdoc = true
|
49
|
-
s.extra_rdoc_files = ["README", "rdoc-header"]
|
50
|
-
s.rdoc_options.concat ['--main', 'README']
|
51
|
-
end
|
52
|
-
|
53
|
-
desc "Package the library as a gem"
|
54
|
-
Rake::GemPackageTask.new(spec) do |pkg|
|
55
|
-
pkg.need_zip = true
|
56
|
-
pkg.need_tar = true
|
57
|
-
end
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc "Run the tests"
|
9
|
+
Rake::TestTask::new do |t|
|
10
|
+
t.test_files = FileList['test/test_*.rb']
|
11
|
+
t.verbose = true
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Generate the documentation"
|
15
|
+
Rake::RDocTask::new do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'energon-doc/'
|
17
|
+
rdoc.title = "Energon Documentation"
|
18
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
19
|
+
rdoc.rdoc_files.include('README')
|
20
|
+
rdoc.rdoc_files.include('MIT-LICENSE')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
end
|
23
|
+
|
24
|
+
spec = Gem::Specification::new do |s|
|
25
|
+
s.platform = Gem::Platform::RUBY
|
26
|
+
|
27
|
+
s.name = 'energon'
|
28
|
+
s.version = "0.0.4"
|
29
|
+
s.summary = "Report engine outputting Word/Excel OpenXML documents"
|
30
|
+
s.description = <<EOF
|
31
|
+
Energon is a report engine written in ruby, creating advanced and
|
32
|
+
reliable reports from templates.
|
33
|
+
EOF
|
34
|
+
s.author = 'Wopata'
|
35
|
+
s.email = 'energon@wopata.com'
|
36
|
+
s.homepage = "http://www.wopata.com"
|
37
|
+
|
38
|
+
s.requirements << 'rubyzip, 0.9.1 or greater'
|
39
|
+
s.add_dependency('rubyzip', '>= 0.9.1')
|
40
|
+
|
41
|
+
s.requirements << 'activesupport, 1.3.1 or greater'
|
42
|
+
s.add_dependency('activesupport', '>= 1.3.1')
|
43
|
+
|
44
|
+
s.require_path = 'lib'
|
45
|
+
s.files = FileList["lib/**/*.rb", "test/**/*.rb", "README","MIT-LICENSE","rakefile.rb"]
|
46
|
+
s.test_files = FileList['test/test*.rb']
|
47
|
+
|
48
|
+
s.has_rdoc = true
|
49
|
+
s.extra_rdoc_files = ["README", "rdoc-header"]
|
50
|
+
s.rdoc_options.concat ['--main', 'README']
|
51
|
+
end
|
52
|
+
|
53
|
+
desc "Package the library as a gem"
|
54
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
55
|
+
pkg.need_zip = true
|
56
|
+
pkg.need_tar = true
|
57
|
+
end
|
data/test/test_oo_document.rb
CHANGED
@@ -41,7 +41,8 @@ class TestOdDocument < Test::Unit::TestCase
|
|
41
41
|
ZipFile.open("test/opendocument/template_test.#{hash[:ext]}") {|zipfile| content_orig = zipfile.file.read("content.xml")}
|
42
42
|
ZipFile.open(file) {|zipfile| content_new = zipfile.file.read("content.xml")}
|
43
43
|
|
44
|
-
|
44
|
+
# compare hash equivalents so as to ignore insignificant differences in formatting or attribute ordering
|
45
|
+
assert_equal Hash.from_xml(content_orig), Hash.from_xml(content_new)
|
45
46
|
|
46
47
|
FileUtils.rm(file)
|
47
48
|
end
|
metadata
CHANGED
@@ -1,35 +1,47 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0
|
3
|
-
specification_version: 1
|
4
2
|
name: energon
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-03-23 00:00:00 +01:00
|
8
|
-
summary: Report engine outputting Word/Excel OpenXML documents
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: energon@woa.hu
|
12
|
-
homepage: http://www.woa.hu
|
13
|
-
rubyforge_project:
|
14
|
-
description: Energon is a report engine written in ruby, creating advanced and reliable reports from templates.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.0.4
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
|
-
-
|
7
|
+
- Wopata
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-11-22 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rubyzip
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.9.1
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activesupport
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.3.1
|
34
|
+
version:
|
35
|
+
description: " Energon is a report engine written in ruby, creating advanced and\n reliable reports from templates. \n"
|
36
|
+
email: energon@wopata.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
42
|
+
- README
|
43
|
+
- rdoc-header
|
31
44
|
files:
|
32
|
-
- lib/energon.rb
|
33
45
|
- lib/energon/document.rb
|
34
46
|
- lib/energon/excel_document.rb
|
35
47
|
- lib/energon/od_document.rb
|
@@ -37,6 +49,7 @@ files:
|
|
37
49
|
- lib/energon/open_xml_helper.rb
|
38
50
|
- lib/energon/parser.rb
|
39
51
|
- lib/energon/word_document.rb
|
52
|
+
- lib/energon.rb
|
40
53
|
- test/test_document.rb
|
41
54
|
- test/test_excel_document.rb
|
42
55
|
- test/test_oo_document.rb
|
@@ -47,6 +60,36 @@ files:
|
|
47
60
|
- MIT-LICENSE
|
48
61
|
- rakefile.rb
|
49
62
|
- rdoc-header
|
63
|
+
has_rdoc: true
|
64
|
+
homepage: http://www.wopata.com
|
65
|
+
licenses: []
|
66
|
+
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options:
|
69
|
+
- --main
|
70
|
+
- README
|
71
|
+
require_paths:
|
72
|
+
- lib
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: "0"
|
78
|
+
version:
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "0"
|
84
|
+
version:
|
85
|
+
requirements:
|
86
|
+
- rubyzip, 0.9.1 or greater
|
87
|
+
- activesupport, 1.3.1 or greater
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.3.5
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: Report engine outputting Word/Excel OpenXML documents
|
50
93
|
test_files:
|
51
94
|
- test/test_document.rb
|
52
95
|
- test/test_excel_document.rb
|
@@ -54,35 +97,3 @@ test_files:
|
|
54
97
|
- test/test_open_document_helper.rb
|
55
98
|
- test/test_open_xml_helper.rb
|
56
99
|
- test/test_word_document.rb
|
57
|
-
rdoc_options:
|
58
|
-
- --main
|
59
|
-
- README
|
60
|
-
extra_rdoc_files:
|
61
|
-
- README
|
62
|
-
- rdoc-header
|
63
|
-
executables: []
|
64
|
-
|
65
|
-
extensions: []
|
66
|
-
|
67
|
-
requirements:
|
68
|
-
- rubyzip, 0.9.1 or greater
|
69
|
-
- activesupport, 1.3.1 or greater
|
70
|
-
dependencies:
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: rubyzip
|
73
|
-
version_requirement:
|
74
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
75
|
-
requirements:
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 0.9.1
|
79
|
-
version:
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
name: activesupport
|
82
|
-
version_requirement:
|
83
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
84
|
-
requirements:
|
85
|
-
- - ">="
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: 1.3.1
|
88
|
-
version:
|