origen_doc_helpers 0.7.1 → 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.
- checksums.yaml +5 -5
- data/config/application.rb +1 -1
- data/config/version.rb +2 -3
- data/lib/origen_doc_helpers/guide_index.rb +1 -1
- data/lib/origen_doc_helpers/helpers.rb +5 -1
- data/lib/origen_doc_helpers/html_flow_formatter.rb +6 -2
- data/lib/origen_doc_helpers/list_flow_formatter.rb +6 -2
- data/lib/origen_doc_helpers_dev/dut.rb +20 -0
- data/templates/model_index.md.erb +1 -1
- data/templates/model_page.md.erb +1 -1
- data/templates/shared/_register.html.erb +34 -6
- data/templates/web/helpers.md.erb +1 -1
- data/templates/web/helpers/model.md.erb +2 -2
- data/templates/web/helpers/register.md.erb +1 -1
- metadata +4 -6
- data/bin/fix_my_workspace +0 -100
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 86607573815de7e69eb55f1fb1afc8798ff50ba92a4b3a230b1b6cb3627f1365
|
4
|
+
data.tar.gz: a230731ac9a2d6049c2432d496260174ff93cc448f3a9b3ed2ec4cc1abc866e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c06e83e7c9aab01cb997d2845ebb6d14822ad69ffffd3c22cd7b36c5aa9cb83ecd42241b51dad2c6e3d8b2c94de931c270a94b4bb1094169abdd19aa374d8a3
|
7
|
+
data.tar.gz: ddcdb9f112688745f8503094fe83defdcf3c5fb2ca855cc48c7138cc0175e286291a8d2f936a173bba28e5a9a19b97daeaf95412e94fe47533deab2c7740c133
|
data/config/application.rb
CHANGED
@@ -8,7 +8,7 @@ class OrigenDocHelpersApplication < Origen::Application
|
|
8
8
|
# To enable deployment of your documentation to a web server (via the 'origen web'
|
9
9
|
# command) fill in these attributes.
|
10
10
|
config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/doc_helpers"
|
11
|
-
config.web_domain = "
|
11
|
+
config.web_domain = "https://origen-sdk.org/doc_helpers"
|
12
12
|
config.disqus_shortname = "origen-sdk"
|
13
13
|
|
14
14
|
config.semantically_version = true
|
data/config/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module OrigenDocHelpers
|
2
2
|
# Provides an API to programatically construct an index hash as used
|
3
3
|
# by the Searchable Documents helper -
|
4
|
-
#
|
4
|
+
# https://origen-sdk.org/doc_helpers/helpers/searchable/intro/#The_Document_Index
|
5
5
|
class GuideIndex
|
6
6
|
def initialize
|
7
7
|
@index = {}
|
@@ -272,7 +272,11 @@ END
|
|
272
272
|
if options[:tab]
|
273
273
|
options[:tab]
|
274
274
|
else
|
275
|
-
rel =
|
275
|
+
rel = begin
|
276
|
+
options[:top_level_file].relative_path_from(_doc_root_dir(options)).sub_ext('').sub_ext('').to_s
|
277
|
+
rescue
|
278
|
+
'..'
|
279
|
+
end
|
276
280
|
# If the file lives outside of the current app (e.g. it comes from a plugin), then the above approach
|
277
281
|
# doesn't work, so let's just take the last dirname and the filename
|
278
282
|
if rel =~ /\.\./
|
@@ -1,7 +1,11 @@
|
|
1
|
-
|
1
|
+
begin
|
2
|
+
require 'origen_testers/atp'
|
3
|
+
rescue LoadError
|
4
|
+
require 'atp'
|
5
|
+
end
|
2
6
|
require 'kramdown'
|
3
7
|
module OrigenDocHelpers
|
4
|
-
class HtmlFlowFormatter < ATP::Formatter
|
8
|
+
class HtmlFlowFormatter < (defined?(OrigenTesters::ATP) ? OrigenTesters::ATP::Formatter : ATP::Formatter)
|
5
9
|
include Origen::Generator::Compiler::DocHelpers::TestFlowHelpers
|
6
10
|
|
7
11
|
attr_reader :html
|
@@ -1,6 +1,10 @@
|
|
1
|
-
|
1
|
+
begin
|
2
|
+
require 'origen_testers/atp'
|
3
|
+
rescue LoadError
|
4
|
+
require 'atp'
|
5
|
+
end
|
2
6
|
module OrigenDocHelpers
|
3
|
-
class ListFlowFormatter < ATP::Formatter
|
7
|
+
class ListFlowFormatter < (defined?(OrigenTesters::ATP) ? OrigenTesters::ATP::Formatter : ATP::Formatter)
|
4
8
|
attr_reader :html
|
5
9
|
|
6
10
|
def format(node, options = {})
|
@@ -78,6 +78,26 @@ module OrigenDocHelpersDev
|
|
78
78
|
reg :debug_22, 0xf54, 32, bit_order: 'lsb0', ip_base_address: 0x1080000, description: '' do
|
79
79
|
bit 31..0, :placeholder, reset: 0b0, access: :rw
|
80
80
|
end
|
81
|
+
reg :msb0_debug, 0xf58, 32, bit_order: 'msb0', ip_base_address: 0x1080000, description: '' do
|
82
|
+
# placeholder field description
|
83
|
+
bit 31..1, :placeholder, reset: 0b0, access: :rw
|
84
|
+
# single bit
|
85
|
+
bit 0, :single_bit, reset: 1, access: :rw
|
86
|
+
end
|
87
|
+
reg :lsb0_non_byte_aligned, 0xf5c, 9, bit_order: 'lsb0', ip_base_address: 0x1080000, description: '' do
|
88
|
+
bit 8..0, :placeholder, reset: 0b0, access: :rw
|
89
|
+
end
|
90
|
+
reg :msb0_non_byte_aligned, 0xf60, 9, bit_order: :msb0, ip_base_address: 0x1080000, description: '' do
|
91
|
+
# placeholder field description
|
92
|
+
bit 8..0, :placeholder, reset: 0b0, access: :rw
|
93
|
+
end
|
94
|
+
reg :lsb0_tiny, 0xf64, 3, bit_order: :lsb0, ip_base_address: 0x1080000, description: '' do
|
95
|
+
bit 2..0, :placeholder, reset: 0b0, access: :rw
|
96
|
+
end
|
97
|
+
reg :msb0_tiny, 0xf68, 3, bit_order: :msb0, ip_base_address: 0x1080000, description: '' do
|
98
|
+
# placeholder field description
|
99
|
+
bit 2..0, :placeholder, reset: 0b0, access: :rw
|
100
|
+
end
|
81
101
|
end
|
82
102
|
end
|
83
103
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
<div class="row" style="margin-top: 10px; margin-bottom: 15px;">
|
5
5
|
<div class="col-md-9">
|
6
|
-
<img src="
|
6
|
+
<img src="https://origen-sdk.org/img/origen-device.png" style="float: left; height:50px; width: 50px; margin-top: 14px;">
|
7
7
|
<h1 style="float: left; margin-left: 10px;">Models</h1>
|
8
8
|
</div>
|
9
9
|
</div>
|
data/templates/model_page.md.erb
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
<div class="row" style="margin-top: 10px; margin-bottom: 15px;">
|
22
22
|
<div class="col-md-9">
|
23
|
-
<img src="
|
23
|
+
<img src="https://origen-sdk.org/img/origen-device.png" style="float: left; height:50px; width: 50px; margin-top: 14px;">
|
24
24
|
<h1 style="float: left; margin-left: 10px;"><%= opts[:heading] %></h1>
|
25
25
|
</div>
|
26
26
|
% if opts[:search_box]
|
@@ -1,4 +1,6 @@
|
|
1
1
|
% reg = options[:reg]
|
2
|
+
% order_is_lsb0 = true
|
3
|
+
% order_is_lsb0 = false if reg.bit_order == :msb0 || reg.bit_order == 'msb0'
|
2
4
|
% include_data = false
|
3
5
|
|
4
6
|
<div class="register">
|
@@ -17,6 +19,7 @@
|
|
17
19
|
<h4>0x<%= reg.address.to_s(16).upcase %> - <%= reg_path %></h4>
|
18
20
|
% end
|
19
21
|
</a>
|
22
|
+
|
20
23
|
% if options[:current_value]
|
21
24
|
% if reg.size <= 8
|
22
25
|
<h4><font style="background-color: #66FF66">Current Value: <%= sprintf("0x%02X",reg.value) %></font></h4>
|
@@ -39,23 +42,43 @@
|
|
39
42
|
</div>
|
40
43
|
% end
|
41
44
|
|
45
|
+
% if !order_is_lsb0
|
46
|
+
<table class="reg table table-condensed ljust" style="margin-bottom: 0; table-layout: fixed;">
|
47
|
+
<thead>
|
48
|
+
<tr class="bit-positions">
|
49
|
+
<b><tr class = "heading"><%= reg_path%> <span class="msb0_specific" style="color:gray;">(<%= reg_path %>.with_msb0)</span></tr></b>
|
50
|
+
</tr>
|
51
|
+
</thead>
|
52
|
+
</table>
|
53
|
+
% end
|
54
|
+
|
42
55
|
% num_bytes = (reg.size / 8.0).ceil
|
43
56
|
% num_bytes.times do |byte_index|
|
44
57
|
% # Need to add support for little endian regs here?
|
45
58
|
% byte_number = num_bytes - byte_index
|
46
59
|
% max_bit = (byte_number * 8) - 1
|
47
60
|
% min_bit = max_bit - 8 + 1
|
61
|
+
% partial_byte = max_bit > (reg.size - 1)
|
48
62
|
|
49
|
-
<table class="reg table table-condensed" style="margin-bottom: 0; table-layout: fixed;">
|
63
|
+
<table class="reg table table-condensed <%= 'rjust' %><%= partial_byte ? ' partial' : '' %>" style="margin-bottom: 0; table-layout: fixed;">
|
50
64
|
<thead>
|
51
65
|
<tr class="bit-positions">
|
66
|
+
% if order_is_lsb0
|
52
67
|
<th class="spacer"></th>
|
68
|
+
% else
|
69
|
+
<td class="heading">LSB0<span class="msb0_specific" style="color:gray;"> (MSB0)</span></td>
|
70
|
+
% end
|
71
|
+
|
53
72
|
% 8.times do |i|
|
54
73
|
% bit_num = (byte_number * 8) - i - 1
|
55
74
|
% if bit_num > reg.size - 1
|
56
75
|
<th class="spacer"></th>
|
57
76
|
% else
|
77
|
+
% if order_is_lsb0
|
58
78
|
<th class="bit-position"><%= bit_num %></th>
|
79
|
+
% else
|
80
|
+
<th class="bit-position"><%= bit_num %><span class="msb0_specific" style="color:gray;"> (<%= reg.size - bit_num -1%>)</span></th>
|
81
|
+
% end
|
59
82
|
% end
|
60
83
|
% end
|
61
84
|
</tr>
|
@@ -66,13 +89,18 @@
|
|
66
89
|
%# Read Row
|
67
90
|
%#############################################
|
68
91
|
<tr class="read">
|
92
|
+
% if order_is_lsb0
|
69
93
|
<td class="heading">R</td>
|
94
|
+
% else
|
95
|
+
<td class="heading"><span class="msb0_specific" style="color:gray;">[LSB0] </span>R</td>
|
96
|
+
% end
|
97
|
+
|
70
98
|
% alignment_done = false
|
71
99
|
% reg.named_bits :include_spacers => true do |name, bit|
|
72
100
|
% if _bit_in_range?(bit, max_bit, min_bit)
|
73
101
|
% if max_bit > (reg.size - 1) && !alignment_done
|
74
102
|
% (max_bit - (reg.size - 1)).times do
|
75
|
-
|
103
|
+
<td class="spacer"></td>
|
76
104
|
% end
|
77
105
|
% alignment_done = true
|
78
106
|
% end
|
@@ -191,7 +219,7 @@
|
|
191
219
|
% if options[:current_value]
|
192
220
|
<tr class="current_value">
|
193
221
|
<td class="heading">Current Value (Hex)</td>
|
194
|
-
% alignment_done =
|
222
|
+
% alignment_done = !order_is_lsb0
|
195
223
|
% reg.named_bits :include_spacers => true do |name, bit|
|
196
224
|
% if _bit_in_range?(bit, max_bit, min_bit)
|
197
225
|
% if max_bit > (reg.size - 1) && !alignment_done
|
@@ -292,16 +320,16 @@
|
|
292
320
|
<p>
|
293
321
|
<a class="anchor" name="<%= "#{reg.name}_#{name}_#{bits.position}" %>"></a>
|
294
322
|
% if bits.size == 1
|
295
|
-
<%= bits.position %>
|
323
|
+
<%= bits.position %><%= order_is_lsb0 ? '' : "<span class=\"msb0_specific\" style=\"color:gray;\"> (#{reg.size - bits.position - 1})</span>" %>
|
296
324
|
% else
|
297
|
-
<%= bits.position + bits.size - 1 %>-<%= bits.position %>
|
325
|
+
<%= bits.position + bits.size - 1 %>-<%= bits.position %><%= order_is_lsb0 ? '' : "<span class=\"msb0_specific\" style=\"color:gray;\"> (#{reg.size - bits.position - bits.size}-#{reg.size - bits.position - 1})</span>" %>
|
298
326
|
% end
|
299
327
|
</p>
|
300
328
|
<p>
|
301
329
|
% if bits.size == 1
|
302
330
|
<%= name %>
|
303
331
|
% else
|
304
|
-
<%= name %>[<%= bits.size - 1 %>:0]
|
332
|
+
<%= name %>[<%= bits.size - 1 %>:0]<%= order_is_lsb0 ? '' : "<span class=\"msb0_specific\" style=\"color:gray;\"> ([0:#{bits.size - 1}])</span>" %>
|
305
333
|
% end
|
306
334
|
</p>
|
307
335
|
</td>
|
@@ -16,7 +16,7 @@ These helpers will generate complete web pages for you.
|
|
16
16
|
|
17
17
|
The following are components that you can embed within your own web pages.
|
18
18
|
|
19
|
-
| [Searchable Documents](<%= path "/helpers/searchable/intro" %>) | Provides a layout for a guides section of your website, complete with search box (the [Origen Guides](
|
19
|
+
| [Searchable Documents](<%= path "/helpers/searchable/intro" %>) | Provides a layout for a guides section of your website, complete with search box (the [Origen Guides](https://origen-sdk.org/guides) uses this)
|
20
20
|
| [Register Descriptions](<%= path "/helpers/register" %>) | Create a tabular register view, similar to that used in device reference manuals
|
21
21
|
| [Yammer Comments](<%= path "/helpers/yammer" %>) | Embed a comments section at the bottom of your page using Yammer
|
22
22
|
| [Disqus Comments](<%= path "/helpers/disqus" %>) | Embed a comments section at the bottom of your page using Disqus
|
@@ -5,9 +5,9 @@
|
|
5
5
|
This helper will build a collection of web pages that document a model's attributes,
|
6
6
|
currently this includes its sub-blocks and registers.
|
7
7
|
|
8
|
-
[Here is an example](
|
8
|
+
[Here is an example](https://origen-sdk.org/link_demo/models/linkdemo_toplevel/).
|
9
9
|
|
10
|
-
Multiple models can be supplied and an [index page like this](
|
10
|
+
Multiple models can be supplied and an [index page like this](https://origen-sdk.org/link_demo/models)
|
11
11
|
is generated to help locate the documentation for a given model.
|
12
12
|
|
13
13
|
The collection of pages associated with a particular model is also fully searchable via
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# Register Helpers
|
4
4
|
|
5
|
-
Use the [Origen register API](
|
5
|
+
Use the [Origen register API](https://origen-sdk.org/origen/guides/models/registers)
|
6
6
|
to define registers in the normal way,
|
7
7
|
all of the examples are here are based on this register definition:
|
8
8
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_doc_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -31,7 +31,6 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
-
- bin/fix_my_workspace
|
35
34
|
- config/application.rb
|
36
35
|
- config/boot.rb
|
37
36
|
- config/commands.rb
|
@@ -77,7 +76,7 @@ files:
|
|
77
76
|
- templates/web/layouts/_helpers.html.erb
|
78
77
|
- templates/web/partials/_navbar.html.erb
|
79
78
|
- templates/web/release_notes.md.erb
|
80
|
-
homepage:
|
79
|
+
homepage: https://origen-sdk.org/doc_helpers
|
81
80
|
licenses:
|
82
81
|
- MIT
|
83
82
|
metadata: {}
|
@@ -96,8 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
95
|
- !ruby/object:Gem::Version
|
97
96
|
version: 1.8.11
|
98
97
|
requirements: []
|
99
|
-
|
100
|
-
rubygems_version: 2.6.14.1
|
98
|
+
rubygems_version: 3.1.4
|
101
99
|
signing_key:
|
102
100
|
specification_version: 4
|
103
101
|
summary: Snippets and helpers for creating Origen web documents
|
data/bin/fix_my_workspace
DELETED
@@ -1,100 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
$VERBOSE = nil # Don't care about world writable dir warnings and the like
|
3
|
-
|
4
|
-
if $_fix_my_workspace_version_check
|
5
|
-
$_fix_my_workspace_version = '0.7.0'
|
6
|
-
else
|
7
|
-
if File.exist?(File.expand_path('../../lib/origen.rb', __FILE__))
|
8
|
-
# If this script is being run from within an origen-core workspace, use that Origen-core,
|
9
|
-
# not the system-installed origen-core version.
|
10
|
-
$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
|
11
|
-
require 'origen'
|
12
|
-
else
|
13
|
-
# Use system-installed Origen (the gem in system Ruby)
|
14
|
-
require 'origen'
|
15
|
-
end
|
16
|
-
|
17
|
-
if !Origen.site_config.gem_manage_bundler
|
18
|
-
puts 'Sorry but you have opted to manage Bundler yourself via your Origen site config, and this means'
|
19
|
-
puts 'that I cannot make certain assumptions about how your workspace is configured.'
|
20
|
-
puts 'You will need to either resolve this problem yourself, or else change the value of'
|
21
|
-
puts 'gem_mange_bundler to true.'
|
22
|
-
puts 'See here for more details on how to do that: http://origen-sdk.org/origen/guides/starting/company/'
|
23
|
-
|
24
|
-
else
|
25
|
-
ENV['BUNDLE_GEMFILE'] = File.join(Origen.root, 'Gemfile')
|
26
|
-
ENV['BUNDLE_PATH'] = File.expand_path(Origen.site_config.gem_install_dir)
|
27
|
-
ENV['BUNDLE_BIN'] = File.join(Origen.root, 'lbin')
|
28
|
-
|
29
|
-
# Force copy system gems to local gems
|
30
|
-
if Origen.site_config.gem_use_from_system
|
31
|
-
local_gem_dir = "#{ENV['BUNDLE_PATH']}/ruby/#{Pathname.new(Gem.dir).basename}"
|
32
|
-
gem_dir = Pathname.new(Gem.dir)
|
33
|
-
|
34
|
-
Origen.site_config.gem_use_from_system.each do |gem, version|
|
35
|
-
begin
|
36
|
-
# This will raise an error if the system doesn't have this gem installed, that
|
37
|
-
# will be rescued below
|
38
|
-
spec = Gem::Specification.find_by_name(gem, version)
|
39
|
-
|
40
|
-
local_dir = File.join(local_gem_dir, Pathname.new(spec.gem_dir).relative_path_from(gem_dir))
|
41
|
-
FileUtils.mkdir_p local_dir
|
42
|
-
FileUtils.cp_r("#{spec.gem_dir}/.", local_dir)
|
43
|
-
|
44
|
-
local_file = Pathname.new(File.join(local_gem_dir, Pathname.new(spec.cache_file).relative_path_from(gem_dir)))
|
45
|
-
FileUtils.mkdir_p local_file.dirname
|
46
|
-
FileUtils.cp(spec.cache_file, local_file)
|
47
|
-
|
48
|
-
if spec.extension_dir && File.exist?(spec.extension_dir)
|
49
|
-
local_dir = File.join(local_gem_dir, Pathname.new(spec.extension_dir).relative_path_from(gem_dir))
|
50
|
-
FileUtils.mkdir_p local_dir
|
51
|
-
FileUtils.cp_r("#{spec.extension_dir}/.", local_dir)
|
52
|
-
end
|
53
|
-
|
54
|
-
local_file = Pathname.new(File.join(local_gem_dir, Pathname.new(spec.spec_file).relative_path_from(gem_dir)))
|
55
|
-
FileUtils.mkdir_p local_file.dirname
|
56
|
-
FileUtils.cp(spec.spec_file, local_file)
|
57
|
-
|
58
|
-
rescue Gem::LoadError
|
59
|
-
# This just means that one of the gems that should be copied from the system
|
60
|
-
# was not actually installed in the system, so nothing we can do about that here
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
# Delete lbin
|
66
|
-
FileUtils.rm_rf(ENV['BUNDLE_BIN']) if File.exist?(ENV['BUNDLE_BIN'])
|
67
|
-
|
68
|
-
# Run bundler with correct switches
|
69
|
-
cmd = "bundle install --gemfile #{ENV['BUNDLE_GEMFILE']} --binstubs #{ENV['BUNDLE_BIN']} --path #{ENV['BUNDLE_PATH']}"
|
70
|
-
`chmod o-w #{Origen.root}` # Stops some annoying world writable warnings during install
|
71
|
-
`chmod o-w #{Origen.root}/bin` if File.exist?("#{Origen.root}/bin")
|
72
|
-
`chmod o-w #{Origen.root}/.bin` if File.exist?("#{Origen.root}/.bin")
|
73
|
-
|
74
|
-
# Try again, this time updating the bundle
|
75
|
-
if system(cmd)
|
76
|
-
fixed = true
|
77
|
-
elsif system 'bundle update'
|
78
|
-
fixed = true
|
79
|
-
end
|
80
|
-
|
81
|
-
if File.exist?(ENV['BUNDLE_BIN'])
|
82
|
-
`chmod o-w #{ENV['BUNDLE_BIN']}`
|
83
|
-
|
84
|
-
# Make .bat versions of all executables, Bundler should really be doing this when running
|
85
|
-
# on windows
|
86
|
-
if Origen.os.windows?
|
87
|
-
Dir.glob("#{ENV['BUNDLE_BIN']}/*").each do |bin|
|
88
|
-
unless bin =~ /.bat$/
|
89
|
-
bat = "#{bin}.bat"
|
90
|
-
unless File.exist?(bat)
|
91
|
-
File.open(bat, 'w') { |f| f.write('@"ruby.exe" "%~dpn0" %*') }
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
system 'origen -v' if fixed
|
99
|
-
end
|
100
|
-
end
|