Class: Fbtxt::Model::Score

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ht: nil, ft: nil, et: nil, p: nil, agg: nil, reported: nil, score: nil) ⇒ Score

Returns a new instance of Score.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/fbtxt/document/models/score.rb', line 50

def initialize( ht: nil, ft: nil, et: nil, p: nil,
                agg: nil,
               reported: nil,
               score: nil )
   @ht, @ft, @et, @p = ht, ft, et, p
   @agg = agg

   ##
   ## note: use reported for "generic" score where
   ##             period is not known (might be  full-time or aet)
   ##          or undefined e.g. for  abandoned or awarded (administered) score
   @reported = reported

   if score
      puts "!! DEPRECATED - score got score keyword (use reported):"
      pp [ ht, ft, et, p, agg, reported, score]
      @reported = score
   end
end

Instance Attribute Details

#aggObject (readonly)

Returns the value of attribute agg.



46
47
48
# File 'lib/fbtxt/document/models/score.rb', line 46

def agg
  @agg
end

#etObject (readonly)

Returns the value of attribute et.



46
47
48
# File 'lib/fbtxt/document/models/score.rb', line 46

def et
  @et
end

#ftObject (readonly)

Returns the value of attribute ft.



46
47
48
# File 'lib/fbtxt/document/models/score.rb', line 46

def ft
  @ft
end

#htObject (readonly)

Returns the value of attribute ht.



46
47
48
# File 'lib/fbtxt/document/models/score.rb', line 46

def ht
  @ht
end

#pObject (readonly)

Returns the value of attribute p.



46
47
48
# File 'lib/fbtxt/document/models/score.rb', line 46

def p
  @p
end

#reportedObject (readonly)

Returns the value of attribute reported.



46
47
48
# File 'lib/fbtxt/document/models/score.rb', line 46

def reported
  @reported
end

Class Method Details

.build(score) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/fbtxt/document/models/score.rb', line 32

def self.build( score )
  if score.nil?
        raise ArgumentError, "Score.build - expected Hash or Array; got nil"
  elsif score.is_a?(Hash)
      new( **score.transform_keys(&:to_sym) )
  elsif score.is_a?(Array)
       new( reported: score )
  else
       raise ArgumentError, "Score.build - expected Hash or Array; got type #{score} #{score.class.name}"
  end
end

Instance Method Details

#as_jsonObject



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/fbtxt/document/models/score.rb', line 124

def as_json(*)
    if @reported
        ## return array only - why? why not?
        ##   or use hash with  reported or _ - key - why? why not?
        @reported
    else
        h = {}
        h['ht']  = @ht     if @ht
        h['ft']  = @ft     if @ft
        h['et']  = @et     if @et
        h['p']   = @p      if @p
        h['agg'] = @agg    if @agg
        h
    end
end

#et?Boolean

Returns:

  • (Boolean)


76
# File 'lib/fbtxt/document/models/score.rb', line 76

def et?()  @et.is_a?( Array ) && @et.size == 2; end

#ft?Boolean

Returns:

  • (Boolean)


75
# File 'lib/fbtxt/document/models/score.rb', line 75

def ft?()  @ft.is_a?( Array ) && @ft.size == 2; end

#p?Boolean

Returns:

  • (Boolean)


77
# File 'lib/fbtxt/document/models/score.rb', line 77

def p?()   @p.is_a?( Array ) && @p.size == 2; end

#reported?Boolean

only know reported "vanilla" score (might be full-time? extra-time? etc.)

Returns:

  • (Boolean)


72
# File 'lib/fbtxt/document/models/score.rb', line 72

def reported?()  @reported.is_a?( Array ) && @reported.size == 2; end

#to_sObject



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/fbtxt/document/models/score.rb', line 81

def to_s
    if @reported
        ## check for ary empty - why? why not?
        "#{@reported[0]}-#{@reported[1]}"
    else
      if @et && @p
             if @ft && @ht
               "#{@et[0]}-#{@et[1]} a.e.t." +
               " (#{@ft[0]}-#{@ft[1]}, #{@ht[0]}-#{@ht[1]}), " +
               "#{@p[0]}-#{@p[1]} pen."
             elsif @ft
               "#{@et[0]}-#{@et[1]} a.e.t." +
               " (#{@ft[0]}-#{@ft[1]}), " +
               "#{@p[0]}-#{@p[1]} pen."
            else
               "#{@et[0]}-#{@et[1]} a.e.t., " +
               "#{@p[0]}-#{@p[1]} pen."
             end
      elsif @et && @p.nil?
             if @ft && @ht
                "#{@et[0]}-#{@et[1]} a.e.t."+
                " (#{@ft[0]}-#{@ft[1]}, #{@ht[0]}-#{@ht[1]})"
             elsif @ft
                "#{@et[0]}-#{@et[1]} a.e.t."+
                " (#{@ft[0]}-#{@ft[1]})"
             else
                "#{@et[0]}-#{@et[1]} a.e.t."
             end
      elsif  @ft &&  @et.nil? && @p.nil?
              if @ht
                "#{@ft[0]}-#{@ft[1]} (#{@ht[0]}-#{@ht[1]})"
              else
               "#{@ft[0]}-#{@ft[1]}"
              end
      else
           ## raise error/warn - about unknown (or empty) score type - why? why not?
            ''
      end
    end
end