origen 0.6.6 → 0.6.7

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: eb7e3006eff54d7d70809e8d54b0b976d1ecb01e
4
- data.tar.gz: 1932c4799723ef86e1c7564863b310b0a6c271cf
3
+ metadata.gz: d5524389d795a57f92302534b5350ce902a13967
4
+ data.tar.gz: bb2943010e3ddf48ba8d6b8ba08a9af2d98b7af5
5
5
  SHA512:
6
- metadata.gz: 76e2aaec740bca336ff8de376f0354abdfbbb5706391a5726af8355997fb63a870a84649e75782667d545791f246c032d446e781897ed8ec743182b42bb5bbac
7
- data.tar.gz: dc7e62542c9d488e5b5629f3dd15bfacd51e0a8390c887ae653a61f14a33a3ea5615c4d9fddce5839dad7e59c3de6f39eda9cf046060e1bae1dbcd50b1bab6d5
6
+ metadata.gz: 51000c5a32e20f65504744a1bfc668568dbc2de57ffb8d59322e30f94949decec6d55054efd88d0bb7ddc887f4b5ba4a0c362fdd1360c8da3985189d8d4dcca7
7
+ data.tar.gz: 93649414847c8fbc8a43ea51c0feacc267e05690047959dd31a4a5099401f1c2ae61c90f1a9d569641be94058c9d33070849000c01293c9bd81aa3063dd6fd25
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
3
  MINOR = 6
4
- BUGFIX = 6
4
+ BUGFIX = 7
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -325,9 +325,13 @@ module Origen
325
325
  end
326
326
 
327
327
  def assert(value, options = {})
328
- value = value.data if value.respond_to?('data')
329
328
  each_with_index do |pin, i|
330
- pin.assert(value[size - i - 1], options)
329
+ if !value.respond_to?('is_to_be_read?') || value[size - i - 1].is_to_be_read?
330
+ value = value.data if value.respond_to?('data')
331
+ pin.assert(value[size - i - 1], options)
332
+ else
333
+ pin.dont_care
334
+ end
331
335
  end
332
336
  self
333
337
  end
@@ -10,10 +10,11 @@ module Origen
10
10
  autoload :Version_History, 'origen/specs/version_history.rb'
11
11
  autoload :Creation_Info, 'origen/specs/creation_info.rb'
12
12
  autoload :Spec_Features, 'origen/specs/spec_features.rb'
13
+ autoload :Documentation, 'origen/specs/documentation.rb'
13
14
  require 'origen/specs/checkers'
14
15
  include Checkers
15
16
 
16
- attr_accessor :_specs, :_notes, :_exhibits, :_doc_resources, :_overrides, :_power_supplies, :_mode_selects, :_version_history, :_creation_info, :_spec_features
17
+ attr_accessor :_specs, :_notes, :_exhibits, :_doc_resources, :_overrides, :_power_supplies, :_mode_selects, :_version_history, :_creation_info, :_spec_features, :_documentation
17
18
 
18
19
  # Detailed description for the ip block
19
20
  attr_accessor :description
@@ -129,6 +130,13 @@ module Origen
129
130
  !!show_specs(options)
130
131
  end
131
132
 
133
+ # Adds a new documentation notion to the block
134
+ def documentation(header_info, selection, link)
135
+ _documentation
136
+ # Create a new documenation and place it in the 5-D hash
137
+ @_documentation[header_info[:section]][header_info[:subsection]][selection[:interface]][selection[:type]][selection[:subtype]][selection[:mode]][selection[:audience]] = Documentation.new(header_info, selection, link)
138
+ end
139
+
132
140
  # Adds a new feature to the block
133
141
  def spec_feature(id, attrs, device, text, internal_comment)
134
142
  # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
@@ -324,6 +332,53 @@ module Origen
324
332
  end
325
333
  end
326
334
 
335
+ def documentations(options = {})
336
+ options = {
337
+ section: nil,
338
+ subsection: nil,
339
+ interface: nil,
340
+ mode: nil,
341
+ type: nil,
342
+ sub_type: nil,
343
+ audience: nil
344
+ }.update(options)
345
+ return nil if @_documentation.nil?
346
+ return nil if @_documentation.empty?
347
+ doc_found = Hash.new do |h, k|
348
+ h[k] = Hash.new do |hh, kk|
349
+ hh[kk] = Hash.new do |hhh, kkk|
350
+ hhh[kkk] = Hash.new do |hhhh, kkkk|
351
+ hhhh[kkkk] = Hash.new do |hhhhh, kkkkk|
352
+ hhhhh[kkkkk] = Hash.new do |hhhhhh, kkkkkk|
353
+ hhhhhh[kkkkkk] = {}
354
+ end
355
+ end
356
+ end
357
+ end
358
+ end
359
+ end
360
+ filter_hash(@_documentation, options[:section]).each do |_section, hash|
361
+ filter_hash(hash, options[:subsection]).each do |_subsection, hash_|
362
+ filter_hash(hash_, options[:interface]).each do |_interface, hash__|
363
+ filter_hash(hash__, options[:mode]).each do |_mode, hash___|
364
+ filter_hash(hash___, options[:type]).each do |_type, hash____|
365
+ filter_hash(hash____, options[:sub_type]).each do |_sub_type, hash_____|
366
+ filter_hash(hash_____, options[:audience]).each do |_audience, doc|
367
+ doc_found[_section][_subsection][_interface][_mode][_type][_sub_type][_audience] = doc
368
+ end
369
+ end
370
+ end
371
+ end
372
+ end
373
+ end
374
+ end
375
+ if doc_found.empty?
376
+ return nil
377
+ else
378
+ return doc_found
379
+ end
380
+ end
381
+
327
382
  def overrides(options = {})
328
383
  options = {
329
384
  block: nil,
@@ -456,6 +511,10 @@ module Origen
456
511
  @_spec_features = nil
457
512
  end
458
513
 
514
+ def delete_all_documentation
515
+ @_documentation = nil
516
+ end
517
+
459
518
  private
460
519
 
461
520
  def _specs
@@ -500,6 +559,22 @@ module Origen
500
559
  end
501
560
  end
502
561
 
562
+ def _documentation
563
+ @_documentation ||= Hash.new do |h, k|
564
+ h[k] = Hash.new do |hh, kk|
565
+ hh[kk] = Hash.new do |hhh, kkk|
566
+ hhh[kkk] = Hash.new do |hhhh, kkkk|
567
+ hhhh[kkkk] = Hash.new do |hhhhh, kkkkk|
568
+ hhhhh[kkkkk] = Hash.new do |hhhhhh, kkkkkk|
569
+ hhhhhh[kkkkkk] = {}
570
+ end
571
+ end
572
+ end
573
+ end
574
+ end
575
+ end
576
+ end
577
+
503
578
  def _overrides
504
579
  @_overrides ||= Hash.new do |h, k|
505
580
  h[k] = Hash.new do |hh, kk|
@@ -535,11 +610,11 @@ module Origen
535
610
  end
536
611
 
537
612
  # Return a hash based on the filter provided
538
- def filter_hash(hash, filter)
613
+ def filter_hash(hash, filter, debug = false)
539
614
  fail 'Hash argument is not a Hash!' unless hash.is_a? Hash
540
615
  filtered_hash = {}
541
616
  select_logic = case filter
542
- when String then 'k[Regexp.new(filter)] && k.length == filter.length'
617
+ when String then 'k.nil? ? false : k[Regexp.new(filter)] && k.length == filter.length'
543
618
  when (Fixnum || Integer || Float || Numeric) then "k[Regexp.new('#{filter}')]"
544
619
  when Regexp then 'k[filter]'
545
620
  when Symbol then
@@ -549,6 +624,7 @@ module Origen
549
624
  end
550
625
  # rubocop:disable UnusedBlockArgument
551
626
  filtered_hash = hash.select do |k, v|
627
+ # binding.pry if filter == 'SubSection A'
552
628
  [TrueClass, FalseClass].include?(select_logic.class) ? select_logic : eval(select_logic)
553
629
  end
554
630
  filtered_hash
@@ -0,0 +1,57 @@
1
+ module Origen
2
+ module Specs
3
+ # This class is used to store documentation map that the user can change
4
+ class Documentation
5
+ # This is the Section Header for the Documentation Map. Usually these are main headers
6
+ # Examples:
7
+ # I. Overall DC Electricals
8
+ # II. General AC Charactertistics
9
+ # III. Power Sequencing
10
+ attr_accessor :section
11
+
12
+ # This is the subsection header for the Documentation Map. These are found under main headers
13
+ # Examples
14
+ # I. Overall DC electrical
15
+ # A. Absolute Maximum Ratings
16
+ # B. Recommend Operating Conditions
17
+ # C. Output Driver
18
+ attr_accessor :subsection
19
+
20
+ # Exhibit References that should be referenced within the table title
21
+ attr_accessor :interface
22
+
23
+ # Mode is part of the 4-D Hash for the Tables. Corresponds to Spec 4-D Hash
24
+ attr_accessor :mode
25
+
26
+ # Type is part of the 4-D Hash for the Tables. Corresponds to Spec 4-D Hash
27
+ # Usual values
28
+ #
29
+ # * DC -> Direct Current
30
+ # * AC -> Alternate Current
31
+ # * Temp -> Temperature
32
+ # * Supply -> Supply
33
+ attr_accessor :type
34
+
35
+ # SubType is part of the 4-D Hash for the Tables. Corresponds to Spec 4-D Hash
36
+ attr_accessor :sub_type
37
+
38
+ # Audience is part of the 4-D Hash for the Tables. Corresponds to Spec 4-D Hash
39
+ attr_accessor :audience
40
+
41
+ # DITA Formatted Text that appears before the table
42
+ attr_accessor :link
43
+
44
+ # Initialize the Class
45
+ def initialize(header_info = {}, selection = {}, link = nil)
46
+ @section = header_info[:section]
47
+ @subsection = header_info[:subsection]
48
+ @interface = selection[:interface]
49
+ @mode = selection[:mode]
50
+ @type = selection[:type]
51
+ @sub_type = selection[:sub_type]
52
+ @audience = selection[:audience]
53
+ @link = link
54
+ end
55
+ end
56
+ end
57
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-02 00:00:00.000000000 Z
11
+ date: 2016-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -577,6 +577,7 @@ files:
577
577
  - lib/origen/specs/checkers.rb
578
578
  - lib/origen/specs/creation_info.rb
579
579
  - lib/origen/specs/doc_resource.rb
580
+ - lib/origen/specs/documentation.rb
580
581
  - lib/origen/specs/exhibit.rb
581
582
  - lib/origen/specs/mode_select.rb
582
583
  - lib/origen/specs/note.rb