Class: OrigenTesters::Doc
- Inherits:
-
Object
- Object
- OrigenTesters::Doc
show all
- Includes:
- VectorBasedTester
- Defined in:
- lib/origen_testers/doc.rb,
lib/origen_testers/doc/model.rb,
lib/origen_testers/doc/generator.rb,
lib/origen_testers/doc/generator/flow.rb,
lib/origen_testers/doc/generator/test.rb,
lib/origen_testers/doc/generator/tests.rb,
lib/origen_testers/doc/generator/flow_line.rb,
lib/origen_testers/doc/generator/test_group.rb
Overview
Tester model to generate test program documentation from your pattern sources. This is intended to be a drop in replacement for existing testers and instead of generating patterns or test program sheets it will generate a document object which you can then render out via a template or manually.
Defined Under Namespace
Modules: Generator
Classes: Model
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#register_tester
Constructor Details
#initialize(*_args) ⇒ Doc
Returns a new instance of Doc.
18
19
20
21
22
|
# File 'lib/origen_testers/doc.rb', line 18
def initialize(*_args)
@pat_extension = 'md'
@indent = 0
@snip_counters = []
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(_method, *_args, &_block) ⇒ Object
Ignore any tester-specific methods
218
219
220
221
222
|
# File 'lib/origen_testers/doc.rb', line 218
def method_missing(_method, *_args, &_block)
if block_given?
yield
end
end
|
Instance Attribute Details
#html_mode ⇒ Object
Returns the value of attribute html_mode.
12
13
14
|
# File 'lib/origen_testers/doc.rb', line 12
def html_mode
@html_mode
end
|
Class Method Details
.generate_program_model(files, options = {}) ⇒ Object
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
# File 'lib/origen_testers/doc.rb', line 187
def self.generate_program_model(files, options = {})
options = {
action: :program,
return_model: true,
skip_diff: true
}.merge(options)
Origen.app.with_doc_tester do
Origen.target.temporary = options[:target] if options[:target]
Origen.app.load_target!
Origen.interface.reset_globals
options[:files] = files
Origen.file_handler.preserve_and_clear_state do
Origen.app.runner.launch(options)
end
end
model.target = Origen.target.name
model
end
|
.model ⇒ Object
206
207
208
|
# File 'lib/origen_testers/doc.rb', line 206
def self.model
@model ||= Model.new
end
|
Instance Method Details
#annotate(msg, _options) ⇒ Object
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/origen_testers/doc.rb', line 85
def annotate(msg, _options)
unless @inhibit_comments
if html_mode
pc ''
lines = msg.split("\n")
leading_spaces = lines.first[/\A */].size
lines.each do |line|
pc line.gsub(/^.{#{leading_spaces}}/, '')
end
pc ''
end
end
end
|
#c1(msg, options = {}) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/origen_testers/doc.rb', line 51
def c1(msg, options = {})
if generating_program?
Origen.interface.(msg)
else
unless @inhibit_comments
options = {
prefix: true
}.merge(options)
if @step_comment_on
open_text_block
if options[:prefix]
pc "# #{msg}"
else
pc "#{msg}"
end
end
end
end
end
|
#c2(msg, options = {}) ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/origen_testers/doc.rb', line 71
def c2(msg, options = {})
unless @inhibit_comments
options = {
prefix: true
}.merge(options)
open_text_block
if options[:prefix]
pc "# #{msg}"
else
pc "#{msg}"
end
end
end
|
#close_text_block ⇒ Object
109
110
111
112
113
114
115
116
117
|
# File 'lib/origen_testers/doc.rb', line 109
def close_text_block
if html_mode
if @text_block_open
pc '~~~'
pc ''
@text_block_open = false
end
end
end
|
#cycle(_options = {}) ⇒ Object
214
215
|
# File 'lib/origen_testers/doc.rb', line 214
def cycle(_options = {})
end
|
#doc? ⇒ Boolean
210
211
212
|
# File 'lib/origen_testers/doc.rb', line 210
def doc?
true
end
|
#generate? ⇒ Boolean
14
15
16
|
# File 'lib/origen_testers/doc.rb', line 14
def generate?
html_mode
end
|
#next_accordion_counter ⇒ Object
170
171
172
173
|
# File 'lib/origen_testers/doc.rb', line 170
def next_accordion_counter
@accordion_counter ||= 0
@accordion_counter += 1
end
|
#open_text_block ⇒ Object
99
100
101
102
103
104
105
106
107
|
# File 'lib/origen_testers/doc.rb', line 99
def open_text_block
if html_mode
unless @text_block_open
pc ''
pc '~~~text'
@text_block_open = true
end
end
end
|
#pattern_name ⇒ Object
119
120
121
|
# File 'lib/origen_testers/doc.rb', line 119
def pattern_name
Origen.app.current_job.output_pattern_filename.gsub('.md', '')
end
|
#pattern_section(msg) ⇒ Object
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/origen_testers/doc.rb', line 134
def pattern_section(msg)
unless @inhibit_comments
if generating_program?
Origen.interface.flow.start_section(name: msg)
yield
Origen.interface.flow.stop_section
else
if html_mode
counter = next_accordion_counter
close_text_block
pc ''
pc "<div class=\"accordion-group\">"
pc "<div class=\"accordion-heading\">"
pc "<a class=\"accordion-toggle\" data-toggle=\"collapse\" data-parent=\"#accordion2\" href=\"#collapseComment#{counter}\">"
pc "#{msg}"
pc '</a>'
pc '</div>'
pc "<div id=\"collapseComment#{counter}\" class=\"accordion-body collapse\">"
pc "<div class=\"accordion-inner\" markdown=\"1\">"
yield
close_text_block
pc '</div>'
pc '</div>'
pc '</div>'
else
pc ''
pc "#{msg}"
pc ''
@indent += 4
yield
@indent -= 4
end
end
end
end
|
#pc(msg) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/origen_testers/doc.rb', line 33
def pc(msg)
if @snip_counters.last
if @snip_counters.last == 1
@snip_counters[@snip_counters.size - 1] = 0
msg = ' ...snipped'
elsif @snip_counters.last == 0
return
else
@snip_counters[@snip_counters.size - 1] -= 1
end
end
if html_mode
(msg)
else
Origen.log.info((' ' * @indent) + msg)
end
end
|
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/origen_testers/doc.rb', line 123
def
end
|
#snip(number, _options = {}) ⇒ Object
Snip the number of comment lines generated by the contained block to the number given, this is useful for keeping files sizes down and is typically used to snip sections like downloading LRE code.
27
28
29
30
31
|
# File 'lib/origen_testers/doc.rb', line 27
def snip(number, _options = {})
@snip_counters.push number + 1
yield
@snip_counters.pop
end
|
#ss(msg = nil) ⇒ Object
175
176
177
178
179
180
181
182
183
184
185
|
# File 'lib/origen_testers/doc.rb', line 175
def ss(msg = nil)
unless @inhibit_comments
@step_comment_on = true
if block_given?
yield
else
c2(msg)
end
@step_comment_on = false
end
end
|