Class: Fbtxt::Model::Lineup
- Inherits:
-
Object
- Object
- Fbtxt::Model::Lineup
- Defined in:
- lib/fbtxt/document/models/lineup.rb
Overview
note - lineup incl. starter & (optional) bench & sub(stituion)s
Class Method Summary collapse
- ._collect_bench(lineup) ⇒ Object
- ._collect_starter(lineup) ⇒ Object
- ._collect_subs(lineup) ⇒ Object
- .build(lineup) ⇒ Object
Instance Method Summary collapse
- #as_json ⇒ Object
- #bench ⇒ Object
- #find_player(name) ⇒ Object
-
#initialize(starter:, bench: [], subs: []) ⇒ Lineup
constructor
A new instance of Lineup.
- #starter ⇒ Object
- #subs ⇒ Object
Constructor Details
#initialize(starter:, bench: [], subs: []) ⇒ Lineup
Returns a new instance of Lineup.
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/fbtxt/document/models/lineup.rb', line 108 def initialize( starter:, bench: [], subs: [] ) @starter = {} ## note - indexed by (player) name starter.each do |player| @starter[player.name] = player end @bench = {} ## note - indexed by (player) name bench.each do |player| @bench[player.name] = player end @subs = subs end |
Class Method Details
._collect_bench(lineup) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/fbtxt/document/models/lineup.rb', line 63 def self._collect_bench( lineup ) recs = [] lineup.each do |item| current = item while current && current.sub rec = Player.new( name: current.sub.sub.name, captain: current.sub.sub.captain ) recs << rec current = current.sub.sub end end recs end |
._collect_starter(lineup) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/fbtxt/document/models/lineup.rb', line 50 def self._collect_starter( lineup ) recs = [] lineup.each do |item| ## puts " lineup.each item:" ## pp item rec = Player.new( name: item.name, captain: item.captain ) recs << rec end recs end |
._collect_subs(lineup) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/fbtxt/document/models/lineup.rb', line 78 def self._collect_subs( lineup ) recs = [] lineup.each do |item| current = item while current && current.sub ## fix-fix-fix - use player-ref for off/on rec = EventSub.new( off: current.name, on: current.sub.sub.name, minute: current.sub.minute ) recs << rec current = current.sub.sub end end ## note - (auto-)sort by minute if present ### fix-fix-fix move sort to EventSub <=> - why? why not? recs = recs.sort do |l,r| if l.minute && r.minute l.minute <=> r.minute else 0 ## keep as is (no minutes available) end end recs end |
.build(lineup) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/fbtxt/document/models/lineup.rb', line 38 def self.build( lineup ) ## add starter & bench (via substitutions) starter = _collect_starter( lineup ) bench = _collect_bench( lineup ) subs = _collect_subs( lineup ) new( starter: starter, bench: bench, subs: subs ) end |
Instance Method Details
#as_json ⇒ Object
135 136 137 138 139 140 141 142 |
# File 'lib/fbtxt/document/models/lineup.rb', line 135 def as_json(*) h = { 'starter' => @starter.values.as_json } h['bench'] = @bench.values.as_json if @bench.size > 0 h['subs'] = @subs.as_json if @subs.size > 0 h end |
#bench ⇒ Object
125 |
# File 'lib/fbtxt/document/models/lineup.rb', line 125 def bench() @bnech.values; end |
#find_player(name) ⇒ Object
129 130 131 |
# File 'lib/fbtxt/document/models/lineup.rb', line 129 def find_player( name ) player = @starter[name] || @bench[name] end |
#starter ⇒ Object
124 |
# File 'lib/fbtxt/document/models/lineup.rb', line 124 def starter() @starter.values; end |
#subs ⇒ Object
126 |
# File 'lib/fbtxt/document/models/lineup.rb', line 126 def subs() @subs; end |