Class: AcpcDealerData::HandResults
- Inherits:
-
Object
- Object
- AcpcDealerData::HandResults
- Defined in:
- lib/acpc_dealer_data/hand_results.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#final_score ⇒ Object
readonly
Returns the value of attribute final_score.
-
#match_def ⇒ Object
readonly
Returns the value of attribute match_def.
Class Method Summary collapse
- .parse_file(acpc_log_file_path, player_names, game_def_directory, num_hands = nil) ⇒ Object
- .parse_score(score_string) ⇒ Object
- .parse_state(state_string) ⇒ Object
Instance Method Summary collapse
-
#initialize(acpc_log_statements, player_names, game_def_directory, num_hands = nil) ⇒ HandResults
constructor
A new instance of HandResults.
Constructor Details
#initialize(acpc_log_statements, player_names, game_def_directory, num_hands = nil) ⇒ HandResults
Returns a new instance of HandResults.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/acpc_dealer_data/hand_results.rb', line 57 def initialize(acpc_log_statements, player_names, game_def_directory, num_hands=nil) @final_score = nil @match_def = nil @data = acpc_log_statements.inject([]) do |accumulating_data, log_line| if @match_def.nil? @match_def = AcpcDealerData::MatchDefinition.parse(log_line, player_names, game_def_directory) else = AcpcDealerData::HandResults.parse_state(log_line) if accumulating_data << break accumulating_data if accumulating_data.length == num_hands else @final_score = AcpcDealerData::HandResults.parse_score(log_line) unless @final_score end end accumulating_data end end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
8 9 10 |
# File 'lib/acpc_dealer_data/hand_results.rb', line 8 def data @data end |
#final_score ⇒ Object (readonly)
Returns the value of attribute final_score.
8 9 10 |
# File 'lib/acpc_dealer_data/hand_results.rb', line 8 def final_score @final_score end |
#match_def ⇒ Object (readonly)
Returns the value of attribute match_def.
8 9 10 |
# File 'lib/acpc_dealer_data/hand_results.rb', line 8 def match_def @match_def end |
Class Method Details
.parse_file(acpc_log_file_path, player_names, game_def_directory, num_hands = nil) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/acpc_dealer_data/hand_results.rb', line 44 def self.parse_file( acpc_log_file_path, player_names, game_def_directory, num_hands=nil ) AcpcDealerData::LogFile.open(acpc_log_file_path, 'r') do |file| AcpcDealerData::HandResults.parse file, player_names, game_def_directory, num_hands end end |
.parse_score(score_string) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/acpc_dealer_data/hand_results.rb', line 27 def self.parse_score(score_string) if score_string.strip.match( /^SCORE:([\d\-\.|]+):([\w|]+)$/ ) stack_changes = $1.split '|' players = $2.split '|' players.each_index.inject({}) do |player_results, j| player_results[players[j].to_sym] = stack_changes[j].to_r player_results end else nil end end |
.parse_state(state_string) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/acpc_dealer_data/hand_results.rb', line 10 def self.parse_state(state_string) if state_string.strip.match( /^STATE:\d+:[cfr\d\/]+:[^:]+:([\d\-\.|]+):([\w|]+)$/ ) stack_changes = $1.split '|' players = $2.split '|' players.each_index.inject({}) do |player_results, j| player_results[players[j].to_sym] = stack_changes[j].to_r player_results end else nil end end |