xhtml_report_generator 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc379b301d2c38242fdb6708b0189896382ac92f
4
- data.tar.gz: 9ebe5ee16571a086d9f6b39b94a56ee2cbe21d09
3
+ metadata.gz: a56e14ff278000689e7206f3460278519a0f71d5
4
+ data.tar.gz: 4b8f3ab22cc07c789e38649fbab38e59554fa303
5
5
  SHA512:
6
- metadata.gz: d3bb81610d3c81f03f5c09e99e4b53a716266ce91c75425f5912c59512bf8e5df168ca594297b18f9664b2ea6d9ecad8c7e3dc6326bbaea74ea4b00708f5f411
7
- data.tar.gz: 5c2f2f097770f3005b681c64fdb6f92e8cb0eb229efb5c9be154f09325d5f523252b3b509039356b1d31a29dc49481c0441aa5483b313fd3fc8662164ff185f2
6
+ metadata.gz: 309ea3a329355afce991bda4007b957df24fd48793c3451067b9210510c7bdd4de7a35f8302cac2b3d153b35626c3624c574f7b36d04298c046808b6909933b2
7
+ data.tar.gz: 9845ac4ffd8ebb70e244d039cb8dc54ee6712e7801b25cec58964971e2c7609548483df22d4b2b022bf0b1040172694b6e756b7355a4c844af82c66bde231295
@@ -5,6 +5,9 @@
5
5
  require 'rexml/document'
6
6
 
7
7
  module XhtmlReportGenerator
8
+
9
+ # This is the main generator class. It can be instanced with custom javascript, css, and ruby files to allow
10
+ # generation of arbitrary reports.
8
11
  class Generator
9
12
  attr_accessor :document
10
13
  # @param opts [Hash] See the example for an explanation of the valid symbols
@@ -62,13 +65,21 @@ module XhtmlReportGenerator
62
65
  return doc
63
66
  end
64
67
 
68
+ # returns the string representation of the xml document
69
+ # @param indent [Number] indent for child elements. defaults to 0.
65
70
  def to_s(indent = 0)
66
71
  output = ""
67
72
  # note transitive is needed to preserve newlines in <pre> tags
68
- @document.write(:output=>output,:indent=>indent, :transitive=>true)
73
+ # note2: the hash options syntax is supported only from ruby version >= 2.0.0 we need the old style
74
+ # for compatibility with 1.9.3
75
+ #@document.write({:output=>output, :indent=>indent, :transitive=>true})
76
+ @document.write(output, indent, true)
69
77
  return output
70
78
  end
71
-
79
+
80
+ # saves the xml document as a file
81
+ # @param file [String] absolute or relative path to the file to which will be written.
82
+ # @param mode [String] defaults to 'w', one of the file open modes that allows writing ['r+','w','w+','a','a+']
72
83
  def writeToFile(file, mode='w')
73
84
  File.open(file, "#{mode}:UTF-8") {|f| f.write(self.to_s)}
74
85
  end
@@ -1,7 +1,7 @@
1
- # The module needs to be called 'Custom'
1
+ # The module name doesn't matter, just make sure at the end to 'extend' it
2
+ # because it will be 'eval'ed by the initialize method of the XhtmlReportGenerator::Generator class.
2
3
  module Custom
3
-
4
- #puts Module.nesting
4
+
5
5
  # creates the basic page layout and sets the current Element to the main content area (middle div)
6
6
  # @example The middle div is matched by the following xPath
7
7
  # //body/div[@class='middle']
@@ -18,22 +18,33 @@ module Custom
18
18
  @current = @document.elements["//body/div[@class='middle']"]
19
19
  end
20
20
 
21
+ # sets the title of the document in the header section as well as in the layout.
22
+ # createLayout must be called before!
21
23
  def setTitle(title)
24
+ if !@layout
25
+ raise "call createLayout first"
26
+ end
22
27
  pagetitle = @document.elements["//head/title"]
23
28
  pagetitle.text = title
24
29
  div = @document.elements["//body/div[@class='head']"]
25
30
  div.text = title
26
31
  end
27
32
 
33
+ # returns the title text of the report
28
34
  def getTitle()
29
35
  pagetitle = @document.elements["//head/title"]
30
36
  return pagetitle.text
31
37
  end
32
38
 
33
- # set the current element to the first element matched by the xpath expression.
34
- # The current element is the one which was last added
39
+ # set the current element to the element or first element matched by the xpath expression.
40
+ # The current element is the one which can be modified through highlighting.
41
+ # @param xpath [REXML::Element|String] the element or a string
35
42
  def setCurrent!(xpath)
36
- @current = @document.elements[xpath]
43
+ if xpath.is_a?(REXML::Element)
44
+ @current = xpath
45
+ else
46
+ @current = @document.elements[xpath]
47
+ end
37
48
  end
38
49
 
39
50
  # returns the current xml element
@@ -173,7 +184,7 @@ module Custom
173
184
  # @param type [String] specifiy "h1", "h2", "h3" for the heading
174
185
  # @param toc [symbol] one of :ltoc, :rtoc, :btoc depending on in which toc you want to display the heading
175
186
  # @return the added element
176
- def heading(text, type, toc=:ltoc)
187
+ def heading(text, type="h1", toc=:ltoc)
177
188
  case toc
178
189
  when :rtoc
179
190
  opts = {"class" => "onlyrtoc"}
@@ -191,6 +202,30 @@ module Custom
191
202
  @current.text = text
192
203
  return @current
193
204
  end
205
+
206
+ # Inserts a new heading element at the very beginning of the middle div section, and points @current to this heading
207
+ # @param text [String] the heading text
208
+ # @param type [String] specifiy "h1", "h2", "h3" for the heading
209
+ # @param toc [symbol] one of :ltoc, :rtoc, :btoc depending on in which toc you want to display the heading
210
+ # @return the added element
211
+ def headingTop(text, type="h1", toc=:ltoc)
212
+ case toc
213
+ when :rtoc
214
+ opts = {"class" => "onlyrtoc"}
215
+ when :btoc
216
+ opts = {"class" => "bothtoc"}
217
+ else
218
+ opts = {}
219
+ end
220
+
221
+ temp = REXML::Element.new(type)
222
+ temp.add_attributes(opts)
223
+ # insert before the first child of div middle
224
+ @div_middle.insert_before("//div[@class='middle']/*[1]", temp)
225
+ @current = temp
226
+ @current.text = text
227
+ return @current
228
+ end
194
229
 
195
230
  # @param element [REXML::Element] the element in whose text tags will be added at the specified indices of @index_length_array
196
231
  # @param parent [REXML::Element] the parent to which @element should be attached after parsing
@@ -1,5 +1,5 @@
1
1
  module XhtmlReportGenerator
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
4
4
 
5
- puts XhtmlReportGenerator::VERSION
5
+ # puts XhtmlReportGenerator::VERSION
metadata CHANGED
@@ -1,29 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xhtml_report_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Widmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-22 00:00:00.000000000 Z
11
+ date: 2014-12-23 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: |
14
- Here is an example usage:
15
- @example Basic Testreport
16
- gen1 = XhtmlReportGenerator::Generator.new
17
- gen1.createLayout
18
- gen1.setTitle("Example Report")
19
- gen1.heading("titel", "h1", :btoc)
20
- gen1.heading("subtitel", "h2", :ltoc)
21
- gen1.heading("section", "h3")
22
- gen1.content("content function: Hallo welt <br /> html test <span class="r" >red span test</span>", {"class"=>"bold"})
23
- gen1.html("<p class="italic">html function: Hallo welt <br /> html test <span class="r" >red span test</span></p>")
24
-
25
- The javascript to render the table of contents, the custom generator functions and style sheet all can be
26
- supplied by your own, if needed.
13
+ description: "The generator can be used to create xhtml files. It comes with some
14
+ default utility functions.\n== Here is an example usage\n gen1 = XhtmlReportGenerator::Generator.new\n
15
+ \ gen1.createLayout\n gen1.setTitle(\"Example Report\")\n gen1.heading(\"titel\",
16
+ \"h1\", :btoc)\n gen1.heading(\"subtitel\", \"h2\", :ltoc)\n gen1.heading(\"section\",
17
+ \"h3\")\n gen1.content(\"content function: Hallo welt <br /> html test <span class=\"r\"
18
+ >red span test</span>\", {\"class\"=>\"bold\"})\n gen1.html(\"<p class=\"italic\">html
19
+ function: Hallo welt <br /> html test <span class=\"r\" >red span test</span></p>\")\n\nThe
20
+ javascript to render the table of contents, the custom generator functions and style
21
+ sheet all can be\nsupplied by your own, if necessary. \n"
27
22
  email: m-widmer@gmx.ch
28
23
  executables: []
29
24
  extensions: []
@@ -37,7 +32,7 @@ files:
37
32
  - lib/xhtml_report_generator/style_template.css
38
33
  - lib/xhtml_report_generator/toc.js
39
34
  - lib/xhtml_report_generator/version.rb
40
- homepage: http://rubygems.org/gems/hrg
35
+ homepage: https://rubygems.org/gems/xhtml_report_generator
41
36
  licenses:
42
37
  - MIT
43
38
  metadata: {}
@@ -49,7 +44,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
44
  requirements:
50
45
  - - '>='
51
46
  - !ruby/object:Gem::Version
52
- version: '0'
47
+ version: 1.8.7
53
48
  required_rubygems_version: !ruby/object:Gem::Requirement
54
49
  requirements:
55
50
  - - '>='