origen 0.2.6 → 0.3.0

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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/bin/origen +3 -1
  3. data/config/boot.rb +1 -7
  4. data/config/commands.rb +0 -1
  5. data/config/version.rb +2 -2
  6. data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
  7. data/lib/c99/doc_interface.rb +1 -1
  8. data/lib/origen.rb +9 -30
  9. data/lib/origen/application.rb +10 -8
  10. data/lib/origen/application/configuration.rb +13 -26
  11. data/lib/origen/application/plugins.rb +122 -0
  12. data/lib/origen/application/plugins_manager.rb +16 -254
  13. data/lib/origen/application/release.rb +2 -2
  14. data/lib/origen/application/runner.rb +2 -4
  15. data/lib/origen/chips.rb +0 -0
  16. data/lib/origen/chips/chip.rb +0 -0
  17. data/lib/origen/chips/design_entry.rb +0 -0
  18. data/lib/origen/chips/doc_entry.rb +0 -0
  19. data/lib/origen/chips/note.rb +0 -0
  20. data/lib/origen/commands.rb +4 -44
  21. data/lib/origen/commands/compile.rb +1 -2
  22. data/lib/origen/commands/generate.rb +1 -1
  23. data/lib/origen/commands/interactive.rb +1 -2
  24. data/lib/origen/commands/plugin.rb +49 -56
  25. data/lib/origen/commands/program.rb +1 -1
  26. data/lib/origen/commands/rc.rb +2 -2
  27. data/lib/origen/commands/version.rb +2 -17
  28. data/lib/origen/commands_global.rb +3 -0
  29. data/lib/origen/file_handler.rb +10 -10
  30. data/lib/origen/generator.rb +1 -1
  31. data/lib/origen/generator/job.rb +1 -1
  32. data/lib/origen/generator/pattern.rb +2 -2
  33. data/lib/origen/generator/pattern_finder.rb +10 -9
  34. data/lib/origen/pins/pin.rb +0 -0
  35. data/lib/origen/regression_manager.rb +0 -0
  36. data/lib/origen/remote_manager.rb +2 -8
  37. data/lib/origen/revision_control/design_sync.rb +0 -0
  38. data/lib/origen/revision_control/git.rb +0 -0
  39. data/lib/origen/specs.rb +0 -0
  40. data/lib/origen/specs/checkers.rb +0 -0
  41. data/lib/origen/specs/creation_info.rb +0 -0
  42. data/lib/origen/specs/exhibit.rb +0 -0
  43. data/lib/origen/specs/spec.rb +0 -0
  44. data/lib/origen/utility.rb +0 -1
  45. data/lib/origen/utility/diff.rb +0 -0
  46. metadata +42 -119
  47. data/lib/origen/import_manager.rb +0 -596
  48. data/lib/origen/nvm.rb +0 -6
  49. data/lib/origen/nvm/block_array.rb +0 -72
  50. data/lib/origen/tester.rb +0 -56
  51. data/lib/origen/tester/api.rb +0 -277
  52. data/lib/origen/tester/bdm/bdm.rb +0 -25
  53. data/lib/origen/tester/doc/doc.rb +0 -226
  54. data/lib/origen/tester/doc/generator.rb +0 -126
  55. data/lib/origen/tester/doc/generator/flow.rb +0 -71
  56. data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
  57. data/lib/origen/tester/doc/generator/test.rb +0 -68
  58. data/lib/origen/tester/doc/generator/test_group.rb +0 -66
  59. data/lib/origen/tester/doc/generator/tests.rb +0 -47
  60. data/lib/origen/tester/doc/model.rb +0 -162
  61. data/lib/origen/tester/generator.rb +0 -271
  62. data/lib/origen/tester/generator/flow_control_api.rb +0 -606
  63. data/lib/origen/tester/generator/identity_map.rb +0 -25
  64. data/lib/origen/tester/generator/placeholder.rb +0 -13
  65. data/lib/origen/tester/generator/test_numberer.rb +0 -25
  66. data/lib/origen/tester/interface.rb +0 -154
  67. data/lib/origen/tester/j750/files.rb +0 -45
  68. data/lib/origen/tester/j750/generator.rb +0 -203
  69. data/lib/origen/tester/j750/generator/flow.rb +0 -123
  70. data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
  71. data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
  72. data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
  73. data/lib/origen/tester/j750/generator/patset.rb +0 -111
  74. data/lib/origen/tester/j750/generator/patsets.rb +0 -41
  75. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
  76. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
  77. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
  78. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
  79. data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
  80. data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
  81. data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
  82. data/lib/origen/tester/j750/j750.rb +0 -845
  83. data/lib/origen/tester/j750/j750_hpt.rb +0 -35
  84. data/lib/origen/tester/j750/parser.rb +0 -104
  85. data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
  86. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  87. data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
  88. data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
  89. data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
  90. data/lib/origen/tester/j750/parser/flow.rb +0 -111
  91. data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
  92. data/lib/origen/tester/j750/parser/flows.rb +0 -23
  93. data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
  94. data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
  95. data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
  96. data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
  97. data/lib/origen/tester/j750/parser/timeset.rb +0 -15
  98. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  99. data/lib/origen/tester/jlink/jlink.rb +0 -33
  100. data/lib/origen/tester/parser.rb +0 -24
  101. data/lib/origen/tester/parser/description_lookup.rb +0 -64
  102. data/lib/origen/tester/parser/searchable_array.rb +0 -32
  103. data/lib/origen/tester/parser/searchable_hash.rb +0 -32
  104. data/lib/origen/tester/time.rb +0 -338
  105. data/lib/origen/tester/timing.rb +0 -253
  106. data/lib/origen/tester/ultraflex/files.rb +0 -45
  107. data/lib/origen/tester/ultraflex/generator.rb +0 -200
  108. data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
  109. data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
  110. data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
  111. data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
  112. data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
  113. data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
  114. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
  115. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
  116. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
  117. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
  118. data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
  119. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
  120. data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
  121. data/lib/origen/tester/ultraflex/parser.rb +0 -104
  122. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
  123. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  124. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
  125. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
  126. data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
  127. data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
  128. data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
  129. data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
  130. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
  131. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
  132. data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
  133. data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
  134. data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
  135. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  136. data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
  137. data/lib/origen/tester/v93k/generator.rb +0 -80
  138. data/lib/origen/tester/v93k/generator/flow.rb +0 -63
  139. data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
  140. data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
  141. data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
  142. data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
  143. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
  144. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
  145. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
  146. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
  147. data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
  148. data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
  149. data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
  150. data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
  151. data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
  152. data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
  153. data/lib/origen/tester/v93k/v93k.rb +0 -420
  154. data/lib/origen/tester/vector.rb +0 -86
  155. data/lib/origen/tester/vector_generator.rb +0 -637
  156. data/lib/origen/tester/vector_pipeline.rb +0 -150
  157. data/lib/origen/utility/design_sync.rb +0 -494
  158. data/lib/origen/version_checker.rb +0 -117
@@ -1,126 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module Origen
4
- module Tester
5
- class Doc
6
- module Generator
7
- extend ActiveSupport::Concern
8
-
9
- autoload :Test, 'origen/tester/doc/generator/test'
10
- autoload :TestGroup, 'origen/tester/doc/generator/test_group'
11
- autoload :Tests, 'origen/tester/doc/generator/tests'
12
- autoload :Flow, 'origen/tester/doc/generator/flow'
13
- autoload :FlowLine, 'origen/tester/doc/generator/flow_line'
14
- autoload :Placeholder, 'origen/tester/generator/placeholder'
15
-
16
- included do
17
- include Origen::Tester::Interface # adds the interface helpers/Origen hook-up
18
- include Origen::Tester::Generator::FlowControlAPI::Interface
19
- PLATFORM = Origen::Tester::Doc
20
- end
21
-
22
- # Returns the current flow (as defined by the name of the current top
23
- # level flow source file).
24
- #
25
- # Pass in a filename argument to have a specific flow returned instead.
26
- #
27
- # If the flow does not exist yet it will be created.
28
- def flow(filename = nil)
29
- unless filename
30
- if Origen.file_handler.current_file
31
- filename = Origen.file_handler.current_file.basename('.rb').to_s
32
- else
33
- filename = 'anonymous'
34
- end
35
- end
36
- f = filename.to_sym
37
- return flows[f] if flows[f]
38
- p = Flow.new
39
- p.inhibit_output if Origen.interface.resources_mode?
40
- p.filename = f
41
- flows[f] = p
42
- end
43
-
44
- # @api private
45
- def at_flow_start
46
- end
47
-
48
- # @api private
49
- def at_run_start
50
- flow.at_run_start
51
- @@tests = nil
52
- @@flows = nil
53
- end
54
- alias_method :reset_globals, :at_run_start
55
-
56
- # Returns a container for all generated tests.
57
- def tests
58
- @@tests ||= Tests.new
59
- end
60
- alias_method :test_instances, :tests
61
-
62
- # Returns a hash containing all flows
63
- def flows
64
- @@flows ||= {}
65
- end
66
-
67
- # Returns an array containing all sheet generators where a sheet generator is a flow,
68
- # test instance, patset or pat group sheet.
69
- # All Origen program generators must implement this method
70
- def sheet_generators # :nodoc:
71
- g = []
72
- [flows].each do |sheets|
73
- sheets.each do |_name, sheet|
74
- g << sheet
75
- end
76
- end
77
- g
78
- end
79
-
80
- # Returns an array containing all flow generators.
81
- # All Origen program generators must implement this method
82
- def flow_generators
83
- g = []
84
- flows.each do |_name, sheet|
85
- g << sheet
86
- end
87
- g
88
- end
89
-
90
- # The source of all program files is passed in here before executing.
91
- # This will replace all comments with a method call containing the comment so that
92
- # they can be captured.
93
- def filter_source(source) # :nodoc:
94
- src = ''
95
- source.split(/\r?\n/).each do |line|
96
- if line !~ /^\s*#-/ && line =~ /^\s*#(.*)/
97
- comment = Regexp.last_match[1].gsub("'", "\\\\'")
98
- src << "Origen.interface.doc_comments_capture('#{comment}')\n"
99
- else
100
- src << "#{line}\n"
101
- end
102
- end
103
- src
104
- end
105
-
106
- def doc_comments_capture(comment)
107
- doc_comments << "#{comment}"
108
- end
109
-
110
- def doc_comments
111
- @doc_comments ||= []
112
- end
113
-
114
- def doc_comments_consume
115
- c = doc_comments
116
- doc_comments_discard
117
- c
118
- end
119
-
120
- def doc_comments_discard
121
- @doc_comments = []
122
- end
123
- end
124
- end
125
- end
126
- end
@@ -1,71 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Doc
4
- module Generator
5
- class Flow
6
- include Origen::Tester::Generator
7
- include Origen::Tester::Generator::FlowControlAPI
8
-
9
- OUTPUT_POSTFIX = 'flow'
10
- OUTPUT_EXTENSION = 'yaml'
11
-
12
- def add(type, options = {})
13
- preserve_comments = options.delete(:preserve_comments)
14
- line = track_relationships(options) do |options|
15
- FlowLine.new(type, options)
16
- end
17
- collection << line unless Origen.interface.resources_mode?
18
- if preserve_comments
19
- line.description = Origen.interface.doc_comments
20
- else
21
- line.description = Origen.interface.doc_comments_consume
22
- end
23
- line
24
- end
25
-
26
- def start_section(options = {})
27
- l = FlowLine.new(:section_start, options)
28
- if options[:name]
29
- desc = [options[:name]]
30
- else
31
- desc = []
32
- end
33
- l.description = desc + Origen.interface.doc_comments_consume
34
- collection << l
35
- end
36
-
37
- def stop_section(options = {})
38
- collection << FlowLine.new(:section_stop, options)
39
- end
40
-
41
- def test(instance, options = {})
42
- options = save_context(options)
43
- add(:test, { test: instance }.merge(options))
44
- end
45
-
46
- def set_device(options = {})
47
- add(:set_device, options)
48
- end
49
-
50
- def to_yaml(options = {})
51
- collection.map { |l| l.to_yaml(options) }
52
- end
53
-
54
- def render(file, options = {})
55
- options[:file] = file
56
- add(:render, options)
57
- end
58
-
59
- def skip(identifier = nil, options = {})
60
- identifier, options = nil, identifier if identifier.is_a?(Hash)
61
- identifier = generate_unique_label(identifier)
62
- options[:test] = identifier
63
- add(:branch, options)
64
- yield
65
- add(:label, test: identifier)
66
- end
67
- end
68
- end
69
- end
70
- end
71
- end
@@ -1,203 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Doc
4
- module Generator
5
- class FlowLine
6
- attr_accessor :type, :id, :test, :context, :attributes, :description
7
-
8
- def initialize(type, attrs = {})
9
- @type = type
10
- @test = attrs.delete(:test)
11
- @context = {}
12
- @attributes = {}
13
- flow_control_options = Origen.interface.extract_flow_control_options!(attrs)
14
- flow_control_options.each do |opt, val|
15
- send("#{opt}=", val)
16
- end
17
- attrs.each do |attribute, val|
18
- @attributes[attribute] = val
19
- end
20
- end
21
-
22
- def to_yaml(options = {})
23
- options = {
24
- include_descriptions: true
25
- }.merge(options)
26
- y = {
27
- 'type' => @type,
28
- 'description' => description,
29
- 'instance' => test_to_yaml(options),
30
- 'flow' => {
31
- 'attributes' => attributes_to_yaml(options),
32
- 'context' => context_to_yaml(options)
33
- }
34
- }
35
- y.delete('description') unless options[:include_descriptions]
36
- y
37
- end
38
-
39
- def attributes_to_yaml(_options = {})
40
- a = {}
41
- @attributes.each do |name, val|
42
- a[name.to_s] = val if val
43
- end
44
- a
45
- end
46
-
47
- def context_to_yaml(_options = {})
48
- # Turn attribute keys into strings for prettier yaml, this includes all
49
- # relationship meta data
50
- c = @context.reduce({}) { |memo, (k, v)| memo[k.to_s] = v; memo }
51
- # Now add job/enable word data
52
- if @enable
53
- c['if_enable'] = @enable
54
- end
55
- if @unless_enable
56
- c['unless_enable'] = @unless_enable
57
- end
58
- unless if_jobs.empty?
59
- c['if_jobs'] = if_jobs
60
- end
61
- unless unless_jobs.empty?
62
- c['unless_jobs'] = unless_jobs
63
- end
64
- c
65
- end
66
-
67
- def test_to_yaml(options = {})
68
- if @test
69
- if @test.is_a?(String) || @test.is_a?(Symbol)
70
- {
71
- 'attributes' => {
72
- 'name' => @test.to_s
73
- }
74
- }
75
- else
76
- @test.to_yaml(options)
77
- end
78
- end
79
- end
80
-
81
- def method_missing(method, *args, &_block)
82
- method = method.to_s
83
- if method.gsub!('=', '')
84
- @attributes[method] = args.first
85
- else
86
- @attributes[method]
87
- end
88
- end
89
-
90
- def job
91
- if !if_jobs.empty? && !unless_jobs.empty?
92
- fail "Both if and unless jobs have been defined for test: #{parameter}"
93
- elsif !if_jobs.empty?
94
- if_jobs.join(',')
95
- elsif !unless_jobs.empty?
96
- unless_jobs.map { |j| "!#{j}" }.join(',')
97
- else
98
- ''
99
- end
100
- end
101
- alias_method :jobs, :job
102
-
103
- def if_jobs
104
- @if_jobs ||= []
105
- end
106
-
107
- def unless_jobs
108
- @unless_jobs ||= []
109
- end
110
-
111
- def if_enable=(val)
112
- @enable = val
113
- end
114
- alias_method :enable=, :if_enable=
115
- alias_method :if_enabled=, :if_enable=
116
-
117
- def unless_enable=(val)
118
- @unless_enable = val
119
- end
120
- alias_method :unless_enabled=, :unless_enable=
121
-
122
- def if_job=(jobs)
123
- [jobs].flatten.compact.each do |job|
124
- job = job.to_s.upcase
125
- if job =~ /!/
126
- self.unless_job = job
127
- else
128
- if_jobs << job unless if_jobs.include?(job)
129
- end
130
- end
131
- end
132
- alias_method :if_jobs=, :if_job=
133
- alias_method :add_if_jobs, :if_job=
134
- alias_method :add_if_job, :if_job=
135
-
136
- def unless_job=(jobs)
137
- [jobs].flatten.compact.each do |job|
138
- job = job.to_s.upcase
139
- job.gsub!('!', '')
140
- unless_jobs << job unless unless_jobs.include?(job)
141
- end
142
- end
143
- alias_method :unless_jobs=, :unless_job=
144
- alias_method :add_unless_jobs, :unless_job=
145
- alias_method :add_unless_job, :unless_job=
146
-
147
- def run_if_failed(id)
148
- @context[:if_failed] = id
149
- end
150
-
151
- def run_if_passed(id)
152
- @context[:if_passed] = id
153
- end
154
-
155
- def run_if_ran(id)
156
- @context[:if_ran] = id
157
- end
158
-
159
- def run_unless_ran(id)
160
- @context[:unless_ran] = id
161
- end
162
-
163
- def run_if_any_passed(parent)
164
- @context[:if_any_passed] = parent.id
165
- end
166
-
167
- def run_if_all_passed(parent)
168
- @context[:if_all_passed] = parent.id
169
- end
170
-
171
- def run_if_any_failed(parent)
172
- @context[:if_any_failed] = parent.id
173
- end
174
-
175
- def run_if_all_failed(parent)
176
- @context[:if_all_failed] = parent.id
177
- end
178
-
179
- def continue_on_fail
180
- @attributes[:continue] = true
181
- end
182
-
183
- def id
184
- @id || "#{parameter}_#{unique_counter}"
185
- end
186
-
187
- def unique_counter
188
- @unique_counter ||= self.class.unique_counter
189
- end
190
-
191
- def self.unique_counter
192
- @ix ||= -1
193
- @ix += 1
194
- end
195
-
196
- def test?
197
- @type == :test
198
- end
199
- end
200
- end
201
- end
202
- end
203
- end
@@ -1,68 +0,0 @@
1
- module Origen
2
- module Tester
3
- class Doc
4
- module Generator
5
- class Test
6
- attr_accessor :name, :index, :version, :append_version, :attributes
7
-
8
- def initialize(name, attrs = {})
9
- attrs = {}.merge(attrs) # Important to keep this to clone the original options
10
- # so that the caller's copy if not affected by stripping
11
- # out the flow/relation options
12
- @attributes = {}
13
- @append_version = true
14
- self.name = name
15
- Origen.interface.extract_relation_options!(attrs)
16
- Origen.interface.extract_flow_control_options!(attrs)
17
- attrs.each do |attribute, val|
18
- @attributes[attribute] = val
19
- end
20
- end
21
-
22
- def to_yaml(options = {})
23
- {
24
- 'attributes' => attributes_to_yaml(options)
25
- }
26
- end
27
-
28
- def attributes_to_yaml(_options = {})
29
- a = {}
30
- @attributes.each do |name, val|
31
- a[name.to_s] = val if val
32
- end
33
- a['name'] = name
34
- a
35
- end
36
-
37
- def method_missing(method, *args, &_block)
38
- method = method.to_s
39
- if method.gsub!('=', '')
40
- @attributes[method] = args.first
41
- else
42
- @attributes[method]
43
- end
44
- end
45
-
46
- def ==(other_test)
47
- self.class == other_test.class &&
48
- unversioned_name.to_s == other_test.unversioned_name.to_s &&
49
- attributes.size == other_test.attributes.size &&
50
- attributes.all? { |name, val| other_test.attributes[name] == val }
51
- end
52
-
53
- def name
54
- if version && @append_version
55
- "#{@name}_v#{version}"
56
- else
57
- @name.to_s
58
- end
59
- end
60
-
61
- def unversioned_name
62
- @name.to_s
63
- end
64
- end
65
- end
66
- end
67
- end
68
- end