diff options
author | emkael <emkael@tlen.pl> | 2018-01-29 23:23:32 +0100 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2018-01-29 23:23:32 +0100 |
commit | 4031d439708b38d4e431242f3fbf5d18bbcbfa16 (patch) | |
tree | 8fb288eb43cf26a437ec079c6511c086f8cf441b | |
parent | 890dfe23560d32199a311560e867c7c576d201bb (diff) |
Anchors and anchored links to specified tables
-rw-r--r-- | tdd-bootstrap.php | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/tdd-bootstrap.php b/tdd-bootstrap.php index f85a786..2af5ac1 100644 --- a/tdd-bootstrap.php +++ b/tdd-bootstrap.php @@ -13,11 +13,11 @@ class Protocol { throw new Exception('file not found: ' . $this->get_filename()); } } - + function get_filename() { return $this->prefix . $this->round . 'b-' . $this->board . '.html'; } - + function set_deal($table, $deal) { $this->deals_by_tables[$table] = $deal; } @@ -43,10 +43,10 @@ class Protocol { // if is played on both tables of a match // note that the contract field for arbitral scores starts with 'A' (e.g. 'ARB' or 'AAA') - if(($score1 !== '' || strpos($contract1, 'A') === 0) + if(($score1 !== '' || strpos($contract1, 'A') === 0) && ($score2 !== '' || strpos($contract2, 'A') === 0)) { $deal = $this->deals_by_tables[$table]; - $insert = "<h4>Stół $table – Rozdanie {$deal->deal_num}</h4>" . $deal->html(); + $insert = "<a href=\"#table-$table\"><h4 id=\"table-$table\">Stół $table – Rozdanie {$deal->deal_num}</h4></a>" . $deal->html(); $modified = 1; } else { $insert = '<p>...</p>'; @@ -56,17 +56,17 @@ class Protocol { } $tr = @$tr->next_sibling(); } - + if($modified) { $header_tr2 = $header_tr->next_sibling(); $header_tr->outertext = ''; $header_tr2->outertext = ''; $dom->find('/html/body/table/tr', 0)->outertext = ''; } - + print $dom->outertext; } - + } class NoSuchDealNumber extends Exception { @@ -78,23 +78,23 @@ class Deal { $this->deal_num = $num_in_pbn; $this->_parse($filename, $num_in_pbn); } - + function _parse($filename, $num_in_pbn) { $pbn = file_get_contents($filename); $start = strpos($pbn, '[Board "' . $num_in_pbn . '"]'); if($start === false) { throw new NoSuchDealNumber($num_in_pbn); } - + $pbn = substr($pbn, $start + 5); $stop = strpos($pbn,'[Board "'); if($stop != false) { $pbn = substr($pbn, 0, $stop); } - + preg_match('|Dealer "([NESW])"|', $pbn, $m); $this->dealer = $m[1]; - + preg_match('|Vulnerable "([^"]+)"|', $pbn, $m); $this->vuln = $m[1]; if($this->vuln == 'None') { @@ -102,25 +102,25 @@ class Deal { } else if($this->vuln == 'All') { $this->vuln = 'Obie'; } - + preg_match('|Ability "([^"]+)"|', $pbn, $m); if($m[1]) { $this->ability = explode(' ',$m[1]); } - + preg_match('|Minimax "([^"]+)"|', $pbn, $m); $this->minimax = $m[1]; - + preg_match('|Deal "(N:)?([^"]+)"|', $pbn, $m); $this->hands = explode(' ',$m[2]); } - + function html() { ob_start(); include('tdd-handrecord-tpl.php'); return ob_get_clean(); } - + function format_hand($hand_num) { $hand = $this->hands[$hand_num]; $hand = str_replace('T','10',$hand); @@ -150,7 +150,7 @@ class Deal { <td class='an1'>{$ab[4]}</td> <td class='an1'>{$ab[5]}</td>"; } - + function format_minimax() { $minimax = $this->minimax; $minimax = preg_replace('|^(..)D(.+)|','$1x$2', $minimax); @@ -164,17 +164,17 @@ class Deal { function load_deals_for_tables($prefix, $round, $board_in_teamy) { $deals_by_tables = array(); - + $prefix = preg_quote($prefix); $filename_regex = "/$prefix-r$round-t(\d+)-b(\d+).pbn/"; foreach(scandir('.') as $filename) { if(preg_match($filename_regex, $filename, $match)) { $file_table = $match[1]; $file_start_board = $match[2]; - + // 1 in teamy -> 1 in pbn; 24 in teamy -> 1 in pbn; 25 in teamy -> 1 in pbn $num_in_pbn = $board_in_teamy - $file_start_board + 1; - + try { $deal = new Deal($filename, $num_in_pbn); $deals_by_tables[$file_table] = $deal; |