@@ -32,6 +32,12 @@ pub enum Position {
3232 TE ,
3333 DEF ,
3434 K ,
35+ P , // Punter
36+ DT , // Defensive Tackle
37+ DE , // Defensive End
38+ LB , // Linebacker
39+ DB , // Defensive Back/Cornerback
40+ S , // Safety
3541 FLEX ,
3642 BE ,
3743 IR ,
@@ -50,9 +56,15 @@ impl Position {
5056 Position :: TE => vec ! [ 4 , 6 ] , // TE can be position 4 or 6 in ESPN
5157 Position :: DEF => vec ! [ 16 ] ,
5258 Position :: K => vec ! [ 5 , 17 ] , // K can be position 5 or 17
59+ Position :: P => vec ! [ 7 ] ,
60+ Position :: DT => vec ! [ 9 ] ,
61+ Position :: DE => vec ! [ 10 ] ,
62+ Position :: LB => vec ! [ 11 ] ,
63+ Position :: DB => vec ! [ 12 ] ,
64+ Position :: S => vec ! [ 13 ] ,
5365 Position :: FLEX => vec ! [ 2 , 3 , 4 , 6 ] , // RB, WR, TE
54- Position :: BE => vec ! [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 , 17 ] , // All positions
55- Position :: IR => vec ! [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 , 17 ] , // All positions
66+ Position :: BE => vec ! [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 10 , 11 , 12 , 13 , 16 , 17 ] , // All positions
67+ Position :: IR => vec ! [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 10 , 11 , 12 , 13 , 16 , 17 ] , // All positions
5668 }
5769 }
5870
@@ -66,7 +78,17 @@ impl Position {
6678 3 => Ok ( Position :: WR ) ,
6779 4 | 6 => Ok ( Position :: TE ) ,
6880 5 | 17 => Ok ( Position :: K ) ,
81+ 7 => Ok ( Position :: P ) ,
82+ 9 => Ok ( Position :: DT ) ,
83+ 10 => Ok ( Position :: DE ) ,
84+ 11 => Ok ( Position :: LB ) ,
85+ 12 => Ok ( Position :: DB ) ,
86+ 13 => Ok ( Position :: S ) ,
6987 16 => Ok ( Position :: DEF ) ,
88+ // Reject coaches and other non-player positions
89+ 14 => Err ( EspnError :: InvalidPosition {
90+ position : format ! ( "COACH (id: {})" , id) ,
91+ } ) ,
7092 _ => Err ( EspnError :: InvalidPosition {
7193 position : ( id as u32 ) . to_string ( ) ,
7294 } ) ,
@@ -84,6 +106,12 @@ impl Position {
84106 Position :: TE => 4 ,
85107 Position :: DEF => 16 ,
86108 Position :: K => 5 ,
109+ Position :: P => 7 ,
110+ Position :: DT => 9 ,
111+ Position :: DE => 10 ,
112+ Position :: LB => 11 ,
113+ Position :: DB => 12 ,
114+ Position :: S => 13 ,
87115 Position :: FLEX => 23 , // ESPN's FLEX position ID
88116 Position :: BE => 20 , // ESPN's Bench position ID
89117 Position :: IR => 21 , // ESPN's IR position ID
@@ -100,6 +128,12 @@ impl fmt::Display for Position {
100128 Position :: TE => "TE" ,
101129 Position :: DEF => "D/ST" ,
102130 Position :: K => "K" ,
131+ Position :: P => "P" ,
132+ Position :: DT => "DT" ,
133+ Position :: DE => "DE" ,
134+ Position :: LB => "LB" ,
135+ Position :: DB => "DB" ,
136+ Position :: S => "S" ,
103137 Position :: FLEX => "FLEX" ,
104138 Position :: BE => "BE" ,
105139 Position :: IR => "IR" ,
@@ -119,6 +153,12 @@ impl FromStr for Position {
119153 "TE" => Ok ( Position :: TE ) ,
120154 "DEF" | "D/ST" | "DST" => Ok ( Position :: DEF ) ,
121155 "K" => Ok ( Position :: K ) ,
156+ "P" => Ok ( Position :: P ) ,
157+ "DT" => Ok ( Position :: DT ) ,
158+ "DE" => Ok ( Position :: DE ) ,
159+ "LB" => Ok ( Position :: LB ) ,
160+ "DB" => Ok ( Position :: DB ) ,
161+ "S" => Ok ( Position :: S ) ,
122162 "FLEX" => Ok ( Position :: FLEX ) ,
123163 "BE" | "BENCH" => Ok ( Position :: BE ) ,
124164 "IR" => Ok ( Position :: IR ) ,
0 commit comments