vedeu 0.8.2 → 0.8.3

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.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/examples/views/_interfaces.rb +127 -0
  3. data/examples/views/empty_template.rb +10 -0
  4. data/examples/views/expected/vedeu_full_screen.html +140 -0
  5. data/examples/views/expected/vedeu_full_screen.json +96050 -0
  6. data/examples/views/expected/vedeu_full_screen.out +1 -0
  7. data/examples/views/expected/vedeu_full_screen.txt +50 -0
  8. data/examples/views/expected/vedeu_line.html +140 -0
  9. data/examples/views/expected/vedeu_line.json +96050 -0
  10. data/examples/views/expected/vedeu_line.out +1 -0
  11. data/examples/views/expected/vedeu_line.txt +58 -0
  12. data/examples/views/expected/vedeu_lines.html +140 -0
  13. data/examples/views/expected/vedeu_lines.json +96050 -0
  14. data/examples/views/expected/{lines.out → vedeu_lines.out} +1 -1
  15. data/examples/views/expected/vedeu_lines_alignment.html +80 -0
  16. data/examples/views/expected/vedeu_lines_alignment.json +46370 -0
  17. data/examples/views/expected/vedeu_lines_alignment.out +1 -0
  18. data/examples/views/full_screen.rb +10 -0
  19. data/examples/views/line.rb +11 -106
  20. data/examples/views/lines.rb +8 -127
  21. data/examples/views/lines_alignment.rb +17 -125
  22. data/examples/views/runner.sh +65 -19
  23. data/lib/vedeu/borders/border.rb +6 -6
  24. data/lib/vedeu/borders/refresh.rb +4 -6
  25. data/lib/vedeu/buffers/buffer.rb +1 -1
  26. data/lib/vedeu/buffers/terminal.rb +4 -4
  27. data/lib/vedeu/buffers/view.rb +2 -2
  28. data/lib/vedeu/cells/all.rb +2 -2
  29. data/lib/vedeu/cells/border.rb +5 -0
  30. data/lib/vedeu/cells/borders/all.rb +2 -8
  31. data/lib/vedeu/cells/borders/edges/all.rb +6 -0
  32. data/lib/vedeu/cells/borders/{bottom_horizontal.rb → edges/bottom_horizontal.rb} +0 -0
  33. data/lib/vedeu/cells/borders/{left_vertical.rb → edges/left_vertical.rb} +0 -0
  34. data/lib/vedeu/cells/borders/{right_vertical.rb → edges/right_vertical.rb} +0 -0
  35. data/lib/vedeu/cells/borders/{top_horizontal.rb → edges/top_horizontal.rb} +0 -0
  36. data/lib/vedeu/cells/borders/horizontal.rb +5 -0
  37. data/lib/vedeu/cells/borders/vertical.rb +5 -0
  38. data/lib/vedeu/cells/borders/vertices/all.rb +6 -0
  39. data/lib/vedeu/cells/borders/{bottom_left.rb → vertices/bottom_left.rb} +5 -0
  40. data/lib/vedeu/cells/borders/{bottom_right.rb → vertices/bottom_right.rb} +5 -0
  41. data/lib/vedeu/cells/borders/{top_left.rb → vertices/top_left.rb} +5 -0
  42. data/lib/vedeu/cells/borders/{top_right.rb → vertices/top_right.rb} +5 -0
  43. data/lib/vedeu/cells/char.rb +16 -0
  44. data/lib/vedeu/cells/clear.rb +5 -0
  45. data/lib/vedeu/cells/cursor.rb +70 -0
  46. data/lib/vedeu/cells/empty.rb +24 -14
  47. data/lib/vedeu/cells/escape.rb +8 -7
  48. data/lib/vedeu/cells/support/all.rb +3 -0
  49. data/lib/vedeu/cells/support/html.rb +98 -0
  50. data/lib/vedeu/colours/background.rb +21 -1
  51. data/lib/vedeu/colours/colour.rb +10 -2
  52. data/lib/vedeu/colours/foreground.rb +21 -1
  53. data/lib/vedeu/colours/translator.rb +17 -24
  54. data/lib/vedeu/colours/validator.rb +9 -9
  55. data/lib/vedeu/configuration/api.rb +1 -1
  56. data/lib/vedeu/cursors/cursor.rb +5 -5
  57. data/lib/vedeu/dsl/elements.rb +22 -79
  58. data/lib/vedeu/dsl/string/text.rb +3 -3
  59. data/lib/vedeu/editor/cropper.rb +2 -2
  60. data/lib/vedeu/editor/cursor.rb +1 -1
  61. data/lib/vedeu/editor/document.rb +1 -1
  62. data/lib/vedeu/geometries/area/dimension.rb +1 -1
  63. data/lib/vedeu/geometries/position.rb +5 -2
  64. data/lib/vedeu/interfaces/clear.rb +5 -5
  65. data/lib/vedeu/models/row.rb +4 -3
  66. data/lib/vedeu/output/compressor.rb +7 -7
  67. data/lib/vedeu/output/output.rb +8 -13
  68. data/lib/vedeu/output/viewport.rb +1 -1
  69. data/lib/vedeu/presentation/background.rb +2 -2
  70. data/lib/vedeu/presentation/colour.rb +0 -4
  71. data/lib/vedeu/presentation/foreground.rb +2 -2
  72. data/lib/vedeu/presentation/style.rb +1 -1
  73. data/lib/vedeu/presentation/styles.rb +0 -3
  74. data/lib/vedeu/renderers/file.rb +10 -68
  75. data/lib/vedeu/renderers/html.rb +28 -96
  76. data/lib/vedeu/renderers/json.rb +15 -31
  77. data/lib/vedeu/renderers/options.rb +160 -14
  78. data/lib/vedeu/renderers/templates/html_renderer.vedeu +1 -0
  79. data/lib/vedeu/renderers/terminal.rb +16 -17
  80. data/lib/vedeu/renderers/text.rb +32 -41
  81. data/lib/vedeu/version.rb +1 -1
  82. data/lib/vedeu/views/all.rb +0 -2
  83. data/lib/vedeu/views/chars.rb +6 -3
  84. data/lib/vedeu/views/stream.rb +3 -2
  85. data/test/lib/vedeu/borders/caption_test.rb +17 -17
  86. data/test/lib/vedeu/borders/title_test.rb +12 -12
  87. data/test/lib/vedeu/cells/border_test.rb +6 -0
  88. data/test/lib/vedeu/cells/borders/{bottom_horizontal_test.rb → edges/bottom_horizontal_test.rb} +0 -0
  89. data/test/lib/vedeu/cells/borders/{left_vertical_test.rb → edges/left_vertical_test.rb} +0 -0
  90. data/test/lib/vedeu/cells/borders/{right_vertical_test.rb → edges/right_vertical_test.rb} +0 -0
  91. data/test/lib/vedeu/cells/borders/{top_horizontal_test.rb → edges/top_horizontal_test.rb} +0 -0
  92. data/test/lib/vedeu/cells/borders/horizontal_test.rb +6 -0
  93. data/test/lib/vedeu/cells/borders/vertical_test.rb +6 -0
  94. data/test/lib/vedeu/cells/borders/{bottom_left_test.rb → vertices/bottom_left_test.rb} +6 -0
  95. data/test/lib/vedeu/cells/borders/{bottom_right_test.rb → vertices/bottom_right_test.rb} +6 -0
  96. data/test/lib/vedeu/cells/borders/{top_left_test.rb → vertices/top_left_test.rb} +6 -0
  97. data/test/lib/vedeu/cells/borders/{top_right_test.rb → vertices/top_right_test.rb} +6 -0
  98. data/test/lib/vedeu/cells/char_test.rb +18 -0
  99. data/test/lib/vedeu/cells/clear_test.rb +6 -0
  100. data/test/lib/vedeu/cells/cursor_test.rb +113 -0
  101. data/test/lib/vedeu/cells/empty_test.rb +100 -7
  102. data/test/lib/vedeu/cells/escape_test.rb +29 -13
  103. data/test/lib/vedeu/cells/support/html_test.rb +100 -0
  104. data/test/lib/vedeu/colours/background_test.rb +35 -3
  105. data/test/lib/vedeu/colours/colour_test.rb +66 -0
  106. data/test/lib/vedeu/colours/foreground_test.rb +35 -3
  107. data/test/lib/vedeu/colours/translator_test.rb +0 -34
  108. data/test/lib/vedeu/colours/validator_test.rb +84 -6
  109. data/test/lib/vedeu/cursors/cursor_test.rb +4 -4
  110. data/test/lib/vedeu/cursors/refresh_test.rb +4 -1
  111. data/test/lib/vedeu/dsl/string/text_test.rb +36 -36
  112. data/test/lib/vedeu/editor/cropper_test.rb +15 -15
  113. data/test/lib/vedeu/geometries/position_test.rb +14 -1
  114. data/test/lib/vedeu/models/page_test.rb +10 -10
  115. data/test/lib/vedeu/models/row_test.rb +7 -7
  116. data/test/lib/vedeu/output/compressor_test.rb +63 -50
  117. data/test/lib/vedeu/renderers/file_test.rb +64 -35
  118. data/test/lib/vedeu/renderers/html_test.rb +15 -12
  119. data/test/lib/vedeu/renderers/json_test.rb +79 -56
  120. data/test/lib/vedeu/renderers/options_test.rb +74 -26
  121. data/test/lib/vedeu/renderers/terminal_test.rb +34 -4
  122. data/test/lib/vedeu/renderers/text_test.rb +35 -3
  123. data/test/lib/vedeu/views/chars_test.rb +6 -0
  124. metadata +50 -41
  125. data/examples/views/expected/line.out +0 -1
  126. data/examples/views/expected/lines_alignment.out +0 -1
  127. data/lib/vedeu/cells/html.rb +0 -21
  128. data/lib/vedeu/cells/json.rb +0 -21
  129. data/lib/vedeu/views/char.rb +0 -180
  130. data/lib/vedeu/views/html_char.rb +0 -133
  131. data/test/lib/vedeu/cells/html_test.rb +0 -15
  132. data/test/lib/vedeu/cells/json_test.rb +0 -15
  133. data/test/lib/vedeu/views/char_test.rb +0 -283
  134. data/test/lib/vedeu/views/html_char_test.rb +0 -125
@@ -24,8 +24,8 @@ module Vedeu
24
24
  @background ||= if colour && present?(colour.background)
25
25
  colour.background
26
26
 
27
- elsif self.is_a?(Vedeu::Views::Char) && name
28
- interface.colour.background
27
+ elsif named_colour?
28
+ named_colour.background
29
29
 
30
30
  elsif parent && present?(parent.background)
31
31
  parent.background
@@ -25,10 +25,6 @@ module Vedeu
25
25
  elsif named_colour?
26
26
  Vedeu::Colours::Colour.coerce(named_colour)
27
27
 
28
- elsif self.is_a?(Vedeu::Views::Char) && name
29
- # Currently used by Vedeu::Output::Viewport
30
- Vedeu::Colours::Colour.coerce(interface.colour)
31
-
32
28
  else
33
29
  Vedeu::Colours::Colour.new
34
30
 
@@ -24,8 +24,8 @@ module Vedeu
24
24
  @foreground ||= if colour && present?(colour.foreground)
25
25
  colour.foreground
26
26
 
27
- elsif self.is_a?(Vedeu::Views::Char) && name
28
- interface.colour.foreground
27
+ elsif named_colour?
28
+ named_colour.foreground
29
29
 
30
30
  elsif parent && present?(parent.foreground)
31
31
  parent.foreground
@@ -68,7 +68,7 @@ module Vedeu
68
68
 
69
69
  # An object is equal when its values are the same.
70
70
  #
71
- # @param other [Vedeu::Views::Char]
71
+ # @param other [void]
72
72
  # @return [Boolean]
73
73
  def eql?(other)
74
74
  self.class == other.class && value == other.value
@@ -20,9 +20,6 @@ module Vedeu
20
20
  @_style ||= if @style
21
21
  Vedeu::Presentation::Style.coerce(@style)
22
22
 
23
- elsif self.is_a?(Vedeu::Views::Char) && name
24
- Vedeu::Presentation::Style.coerce(interface.style)
25
-
26
23
  elsif parent && present?(parent.style)
27
24
  Vedeu::Presentation::Style.coerce(parent.style)
28
25
 
@@ -10,90 +10,32 @@ module Vedeu
10
10
 
11
11
  include Vedeu::Renderers::Options
12
12
 
13
- # Returns a new instance of Vedeu::Renderers::File.
14
- #
15
- # @param options [Hash]
16
- # @option options filename [String] Provide a filename for the
17
- # output. Defaults to 'out'.
18
- # @option options timestamp [Boolean] Append a timestamp to the
19
- # filename.
20
- # @option options write_file [Boolean] Whether to write the file
21
- # to the given filename.
22
- # @return [Vedeu::Renderers::File]
23
- def initialize(options = {})
24
- @options = options || {}
13
+ # @return [String]
14
+ def clear
15
+ render('')
25
16
  end
26
17
 
27
18
  # Render the output (either content or clearing) to a file.
28
19
  #
29
- # @param output [Vedeu::Models::Page]
30
- # @param opts [Hash]
31
20
  # @return [String]
32
- def render(output = '', opts = {})
33
- @options = options.merge!(opts)
21
+ def write
22
+ data = content
34
23
 
35
- ::File.write(filename, out(output)) if write_file?
24
+ ::File.write(filename, data)
36
25
 
37
- out(output)
26
+ data
38
27
  end
39
- alias_method :clear, :render
40
28
 
41
29
  private
42
30
 
43
- # Compresses the output depending on configuration.
44
- #
45
- # @param output [Vedeu::Models::Page]
46
- # @return [String]
47
- def out(output)
48
- if compress?
49
- Vedeu::Output::Compressor.render(output, options)
50
-
51
- else
52
- output
53
-
54
- end
55
- end
56
-
57
- # Return the filename given in the options, (or use the
58
- # default), and append a timestamp if the :timestamp option was
59
- # set to true.
60
- #
61
31
  # @return [String]
62
- def filename
63
- options[:filename] + timestamp
32
+ def content
33
+ output
64
34
  end
65
35
 
66
- # Return a timestamp for use as part of the filename if the
67
- # :timestamp option was set to true, otherwise an empty string.
68
- #
69
- # @return [Float]
70
- def timestamp
71
- if options[:timestamp]
72
- "_#{Vedeu.clock_time}"
73
-
74
- else
75
- ''
76
-
77
- end
78
- end
79
-
80
- # Returns a boolean indicating whether a file should be written.
81
- #
82
36
  # @return [Boolean]
83
37
  def write_file?
84
- options[:write_file]
85
- end
86
-
87
- # Returns the default options/attributes for this class.
88
- #
89
- # @return [Hash]
90
- def defaults
91
- {
92
- compression: Vedeu.config.compression?,
93
- filename: 'out',
94
- timestamp: false,
95
- write_file: true,
96
- }
38
+ true
97
39
  end
98
40
 
99
41
  end # File
@@ -9,120 +9,52 @@ module Vedeu
9
9
  #
10
10
  class HTML < Vedeu::Renderers::File
11
11
 
12
- # Returns a new instance of Vedeu::Renderers::HTML.
13
- #
14
- # @param options [Hash]
15
- # @option options content [String] Defaults to an empty string.
16
- # @option options end_tag [String] Defaults to '</td>'.
17
- # @option options end_row_tag [String] Defaults to '</tr>'.
18
- # @option options filename [String] Provide a filename for the
19
- # output. Defaults to 'out'.
20
- # @option options start_tag [String] Defaults to '<td' (note the
21
- # end of the tag is missing, this is so that inline styles can
22
- # be added later).
23
- # @option options start_row_tag [String] Defaults to '<tr>'.
24
- # @option options template [String]
25
- # @option options timestamp [Boolean] Append a timestamp to the
26
- # filename.
27
- # @option options write_file [Boolean] Whether to write the file
28
- # to the given filename.
29
- # @return [Vedeu::Renderers::HTML]
30
- def initialize(options = {})
31
- @options = options || {}
32
- @output = nil
33
- end
12
+ include Vedeu::Renderers::Options
34
13
 
35
- # Render a cleared output.
36
- #
37
14
  # @return [String]
38
- def clear
39
- @output = Vedeu::Cells::Escape.new
40
-
41
- ''
15
+ def html_body
16
+ if valid?
17
+ output.inject([]) do |acc, line|
18
+ acc << "#{start_row_tag}\n"
19
+ line.each do |char|
20
+ acc << char.to_html(options)
21
+ end
22
+ acc << "#{end_row_tag}\n"
23
+ end.join
24
+
25
+ else
26
+ ''
27
+
28
+ end
42
29
  end
43
30
 
44
- # @param output [Vedeu::Models::Page]
31
+ private
32
+
45
33
  # @return [String]
46
- def render(output)
47
- @output = output
34
+ def content
35
+ if valid?
36
+ Vedeu::Templating::Template.parse(self, template)
48
37
 
49
- super(Vedeu::Templating::Template.parse(self, template)) unless escape?
50
- end
38
+ else
39
+ ''
51
40
 
52
- # @return [String]
53
- def html_body
54
- return '' if output.is_a?(Vedeu::Cells::Escape)
55
-
56
- output.inject([]) do |acc, line|
57
- acc << "#{start_row_tag}\n"
58
- line.each do |char|
59
- acc << char.to_html(options)
60
- end
61
- acc << "#{end_row_tag}\n"
62
- end.join
41
+ end
63
42
  end
64
43
 
65
- private
66
-
67
44
  # Returns a boolean indicating whether the output is a
68
45
  # {Vedeu::Cells::Escape}. If it is, it won't be rendered in
69
46
  # HTML.
70
47
  #
71
48
  # @return [Boolean]
72
49
  def escape?
73
- output.is_a?(Vedeu::Cells::Escape)
74
- end
75
-
76
- # @return [Array<Array<Vedeu::Views::Char>>]
77
- def output
78
- @output || options[:output]
79
- end
80
-
81
- # @return [String]
82
- def end_tag
83
- options[:end_tag]
50
+ output.is_a?(Vedeu::Cells::Escape) || output.is_a?(Vedeu::Cells::Cursor)
84
51
  end
85
52
 
86
- # @return [String]
87
- def end_row_tag
88
- options[:end_row_tag]
89
- end
90
-
91
- # @return [String]
92
- def start_tag
93
- options[:start_tag]
94
- end
95
-
96
- # @return [String]
97
- def start_row_tag
98
- options[:start_row_tag]
99
- end
100
-
101
- # @return [String]
102
- def template
103
- options[:template]
104
- end
105
-
106
- # The default values for a new instance of this class.
107
- #
108
- # @return [Hash<Symbol => void>]
109
- def defaults
110
- {
111
- content: '',
112
- end_tag: '</td>',
113
- end_row_tag: '</tr>',
114
- filename: 'out',
115
- start_tag: '<td',
116
- start_row_tag: '<tr>',
117
- template: default_template,
118
- timestamp: false,
119
- write_file: true,
120
- }
121
- end
53
+ # @return [Boolean]
54
+ def valid?
55
+ return false if string?(output) || escape?
122
56
 
123
- # @return [String]
124
- def default_template
125
- ::File.dirname(__FILE__) + '/../templates/html_renderer.vedeu'
57
+ true
126
58
  end
127
59
 
128
60
  end # HTML
@@ -8,49 +8,33 @@ module Vedeu
8
8
  #
9
9
  class JSON < Vedeu::Renderers::File
10
10
 
11
- # Returns a new instance of Vedeu::Renderers::JSON.
12
- #
13
- # @param options [Hash]
14
- # @return [Vedeu::Renderers::JSON]
15
- def initialize(options = {})
16
- @options = options || {}
17
- end
11
+ include Vedeu::Renderers::Options
18
12
 
19
13
  # Render a cleared output.
20
14
  #
21
- # @return [String]
15
+ # @return [void]
22
16
  def clear
23
- json = parse({})
24
-
25
- super(json, { compression: false })
26
-
27
- json
17
+ render({})
28
18
  end
29
19
 
30
- # @param output [Vedeu::Models::Page]
31
- # @return [String]
32
- def render(output)
33
- json = parse(output)
34
-
35
- super(json, { compression: false })
20
+ private
36
21
 
37
- json
22
+ # @return [Array]
23
+ def as_hash
24
+ output.content.map(&:to_h)
38
25
  end
39
26
 
40
- private
41
-
42
- # @param output [Vedeu::Models::Page]
43
27
  # @return [String]
44
- def parse(output)
45
- ::JSON.pretty_generate(as_hash(output))
46
- end
28
+ def content
29
+ if hash?(output)
30
+ ::JSON.pretty_generate(output)
47
31
 
48
- # @param output [Vedeu::Models::Page]
49
- # @return [Array]
50
- def as_hash(output)
51
- return output if output.is_a?(Hash)
32
+ else
33
+ Vedeu.log(type: :render,
34
+ message: "#{self.class.name}#content: #{output.class.name}")
52
35
 
53
- output.content.map(&:to_hash)
36
+ ::JSON.pretty_generate(as_hash)
37
+ end
54
38
  end
55
39
 
56
40
  end # JSON
@@ -8,38 +8,184 @@ module Vedeu
8
8
  #
9
9
  module Options
10
10
 
11
- # :nocov:
11
+ include Vedeu::Common
12
12
 
13
- # @!attribute [w] options
13
+ # @!attribute [rw] options
14
14
  # @return [Hash<Symbol => void>]
15
- attr_writer :options
15
+ attr_accessor :options
16
+
17
+ # Returns a new instance of the class including this module.
18
+ #
19
+ # @param opts [Hash]
20
+ # @return [void]
21
+ def initialize(opts = {})
22
+ @options = defaults.merge!(opts || {})
23
+ end
24
+
25
+ # @return [void]
26
+ def clear
27
+ render('')
28
+ end
29
+
30
+ # @param output [Vedeu::Models::Page]
31
+ # @param opts [Hash]
32
+ # @return [void]
33
+ def render(output = '')
34
+ options.merge!(output: output)
35
+
36
+ write
37
+ end
38
+
39
+ # @raise [Vedeu::Error::NotImplemented] Subclasses of this class
40
+ # must implement this method.
41
+ # @return [Vedeu::Error::NotImplemented]
42
+ def write
43
+ fail Vedeu::Error::NotImplemented, 'Including classes implement this.'
44
+ end
45
+
46
+ private
16
47
 
17
48
  # Returns a boolean indicating whether the content should be
18
49
  # compressed if compression is available.
19
50
  #
20
51
  # @return [Boolean]
21
- def compress?
22
- options[:compression] || Vedeu.config.compression? || false
52
+ def compression?
53
+ boolean(options[:compression])
23
54
  end
24
55
 
25
- private
26
-
27
- # Combines the options provided at instantiation with the
28
- # default values.
56
+ # Compresses the output depending on configuration.
29
57
  #
30
- # @return [Hash<Symbol => void>]
31
- def options
32
- defaults.merge!(@options)
58
+ # @return [String]
59
+ def compression
60
+ if compression?
61
+ Vedeu::Output::Compressor.render(output, options)
62
+
63
+ else
64
+ output
65
+
66
+ end
67
+ end
68
+
69
+ # @return [void]
70
+ def content
71
+ fail Vedeu::Error::NotImplemented, 'Including classes implement this.'
33
72
  end
34
73
 
35
74
  # The default values for a new instance of this class.
36
75
  #
76
+ # @param options [Hash]
77
+ # @option options content [String] Defaults to an empty string.
78
+ # @option options end_tag [String] Defaults to '</td>'.
79
+ # @option options end_row_tag [String] Defaults to '</tr>'.
80
+ # @option options filename [String] Provide a filename for the
81
+ # output. Defaults to 'out'.
82
+ # @option options start_tag [String] Defaults to '<td' (note the
83
+ # end of the tag is missing, this is so that inline styles can
84
+ # be added later).
85
+ # @option options start_row_tag [String] Defaults to '<tr>'.
86
+ # @option options template [String]
87
+ # @option options timestamp [Boolean] Append a timestamp to the
88
+ # filename.
89
+ # @option options write_file [Boolean] Whether to write the file
90
+ # to the given filename.
91
+ #
37
92
  # @return [Hash<Symbol => void>]
38
93
  def defaults
39
- {}
94
+ {
95
+ compression: Vedeu.config.compression?,
96
+ end_tag: '</td>',
97
+ end_row_tag: '</tr>',
98
+ filename: 'out',
99
+ output: '',
100
+ start_tag: '<td',
101
+ start_row_tag: '<tr>',
102
+ template: default_template,
103
+ timestamp: false,
104
+ write_file: false,
105
+ }
106
+ end
107
+
108
+ # @return [String]
109
+ def default_template
110
+ ::File.dirname(__FILE__) + '/./templates/html_renderer.vedeu'
111
+ end
112
+
113
+ # @return [String]
114
+ def end_tag
115
+ options[:end_tag]
40
116
  end
41
117
 
42
- # :nocov:
118
+ # @return [String]
119
+ def end_row_tag
120
+ options[:end_row_tag]
121
+ end
122
+
123
+ # Return the filename given in the options, (or use the
124
+ # default), and append a timestamp if the :timestamp option was
125
+ # set to true.
126
+ #
127
+ # @return [String]
128
+ def filename
129
+ options[:filename] + timestamp
130
+ end
131
+
132
+ # @return [String]
133
+ def start_tag
134
+ options[:start_tag]
135
+ end
136
+
137
+ # @return [String]
138
+ def start_row_tag
139
+ options[:start_row_tag]
140
+ end
141
+
142
+ # @return [void]
143
+ def output
144
+ options[:output]
145
+ end
146
+
147
+ # @return [Boolean]
148
+ def output?
149
+ present?(output)
150
+ end
151
+
152
+ # @return [String]
153
+ def template
154
+ options[:template]
155
+ end
156
+
157
+ # @return [Boolean]
158
+ def timestamp?
159
+ boolean(options[:timestamp])
160
+ end
161
+
162
+ # Return a timestamp for use as part of the filename if the
163
+ # :timestamp option was set to true, otherwise an empty string.
164
+ #
165
+ # @return [String]
166
+ def timestamp
167
+ return "_#{Vedeu.clock_time}" if timestamp?
168
+
169
+ ''
170
+ end
171
+
172
+ # Returns a boolean indicating whether a file should be written.
173
+ #
174
+ # @return [Boolean]
175
+ def write_file?
176
+ boolean(options[:write_file])
177
+ end
178
+
179
+ # Render the output (either content or clearing) to a file.
180
+ #
181
+ # @return [String]
182
+ def write_file
183
+ data = content
184
+
185
+ ::File.write(filename, data)
186
+
187
+ data
188
+ end
43
189
 
44
190
  end # Options
45
191