Class: Fbtxt::Model::Lineup

Inherits:
Object
  • Object
show all
Defined in:
lib/fbtxt/document/models/lineup.rb

Overview

note - lineup incl. starter & (optional) bench & sub(stituion)s

Class Method Summary collapse

Instance Method Summary collapse

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_jsonObject



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

#benchObject



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

#starterObject



124
# File 'lib/fbtxt/document/models/lineup.rb', line 124

def starter()  @starter.values; end

#subsObject



126
# File 'lib/fbtxt/document/models/lineup.rb', line 126

def subs()     @subs; end