Пример #1
0
 /**
  * @return object .rows , .header
  */
 public function scrape()
 {
     extract($this->help());
     $rows = array();
     $header = $this->header;
     foreach ($this->table->find('tr') as $key => $tr) {
         $tr = $jq($tr);
         // filter?
         foreach ($this->rowFilters as $rowFilter) {
             if ($rowFilter($tr, $key, $header !== NULL) === FALSE) {
                 continue 2;
             }
         }
         // scrape the header (wenn er gesetzt ist parsen wir nicht, wenn er leer ist auch nicht)
         if ($header === NULL) {
             $header = array();
             foreach ($tr->find('td,th') as $key => $th) {
                 $value = $thConverter($jq($th), $key);
                 $header[$key] = $value;
             }
         } else {
             // scrape a row
             $row = array();
             foreach ($tr->find('td') as $key => $td) {
                 $value = $tdConverter($jq($td), $key, array_key_exists($key, $header) ? $header[$key] : NULL);
                 // somit geht sogar dass &$key benutzt wird
                 $row[$key] = $value;
             }
             if ($this->useHeader) {
                 $rows[] = array_combine($header, $row);
             } else {
                 $rows[] = $row;
             }
         }
     }
     $table = (object) array('header' => $header, 'rows' => $rows);
     return $table;
 }
 public static function parse(\DOMElement $package)
 {
     $jq = new jQuery($package);
     $package = new static($jq->attr('package_name'));
     $package->setLinksTotal((int) $jq->attr('package_linkstotal'));
     $package->setPercent((double) $jq->attr('package_percent'));
     $package->setSize($jq->attr('package_size'));
     $package->setLoaded($jq->attr('package_loaded'));
     $files = array();
     foreach ($jq->find('file') as $file) {
         $files[] = JDownloaderFile::parse($file);
     }
     $package->setFiles($files);
     return $package;
 }
Пример #3
0
 public function testRowHTML()
 {
     $this->gridPanel->addRow(array('row1:col1', 'row1:col2', 'row1:col3'));
     $this->gridPanel->addRow(array('row2:col1', 'row2:col2', 'row2:col3'));
     $this->gridPanel->addRow(array('row3:col1', 'row3:col2', 'row3:col3'));
     $trs = $this->test->css('table tr', $this->html = $this->gridPanel->html())->getJQuery();
     foreach ($trs as $row => $tr) {
         if ($row === 0) {
             continue;
         }
         // skip header
         $tr = new jQuery($tr);
         $col = 1;
         foreach ($tr->find('td') as $td) {
             $td = new jQuery($td);
             // everything i right place?
             $this->assertEquals(sprintf('row%d:col%d', $row, $col), $td->text());
             $col++;
         }
         $row++;
     }
 }