Class: TechRadar::Radar
- Inherits:
-
Object
- Object
- TechRadar::Radar
- Defined in:
- app/models/tech_radar/radar.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
Instance Method Summary collapse
-
#initialize ⇒ Radar
constructor
A new instance of Radar.
- #quadrant(quadrant_name) ⇒ Object
- #quadrants ⇒ Object
- #ring(ring_name) ⇒ Object
- #rings ⇒ Object
- #technologies ⇒ Object
- #technology(name) ⇒ Object
Constructor Details
#initialize ⇒ Radar
Returns a new instance of Radar.
4 5 6 |
# File 'app/models/tech_radar/radar.rb', line 4 def initialize @data = YAML.load_file(Rails.root + "config" + "tech-radar.yml") end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
3 4 5 |
# File 'app/models/tech_radar/radar.rb', line 3 def data @data end |
Instance Method Details
#quadrant(quadrant_name) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/models/tech_radar/radar.rb', line 14 def quadrant(quadrant_name) quadrant = @data.fetch(quadrant_name) by_ring = {} quadrant.each do |(ring,technologies)| by_ring[ring] ||= [] (technologies || {}).each do |(name,data)| by_ring[ring] << Technology.new(name: name, ring: ring, quadrant: quadrant_name, purpose: data["purpose"], more_details_url: data["more_details_url"], more_details_summary: data["more_details_summary"], why_url: data["why_url"], why_summary: data["why_summary"]) end end TechRadar::Quadrant.new( name: quadrant_name, rings: by_ring.map { |ring_name,technologies| TechRadar::Ring.new(name: ring_name, technologies: technologies.sort_by { |tech| tech.name.downcase }) } ) end |
#quadrants ⇒ Object
8 9 10 11 12 |
# File 'app/models/tech_radar/radar.rb', line 8 def quadrants @data.keys.map { |quadrant_name| quadrant(quadrant_name) } end |
#ring(ring_name) ⇒ Object
44 45 46 |
# File 'app/models/tech_radar/radar.rb', line 44 def ring(ring_name) rings.detect { |ring| ring.name == ring_name } end |
#rings ⇒ Object
38 39 40 41 42 |
# File 'app/models/tech_radar/radar.rb', line 38 def rings quadrants.map(&:rings).flatten.group_by(&:name).map { |(ring_name,rings)| TechRadar::Ring.new(name: ring_name,technologies: rings.map(&:technologies).flatten.sort_by { |tech| tech.name.downcase }) } end |
#technologies ⇒ Object
48 49 50 |
# File 'app/models/tech_radar/radar.rb', line 48 def technologies quadrants.map(&:rings).flatten.map(&:technologies).flatten.sort_by { |technology| technology.name.downcase } end |
#technology(name) ⇒ Object
52 53 54 |
# File 'app/models/tech_radar/radar.rb', line 52 def technology(name) technologies.detect { |technology| technology.name == name } end |