Path: blob/master/src/applications/harbormaster/view/ShellLogView.php
12256 views
<?php12final class ShellLogView extends AphrontView {34private $start = 1;5private $lines;6private $limit;7private $highlights = array();89public function setStart($start) {10$this->start = $start;11return $this;12}1314public function setLimit($limit) {15$this->limit = $limit;16return $this;17}1819public function setLines(array $lines) {20$this->lines = $lines;21return $this;22}2324public function setHighlights(array $highlights) {25$this->highlights = array_fuse($highlights);26return $this;27}2829public function render() {30require_celerity_resource('phabricator-source-code-view-css');31require_celerity_resource('syntax-highlighting-css');3233Javelin::initBehavior('phabricator-oncopy', array());3435$line_number = $this->start;3637$rows = array();38foreach ($this->lines as $line) {39$hit_limit = $this->limit &&40($line_number == $this->limit) &&41(count($this->lines) != $this->limit);4243if ($hit_limit) {44$content_number = '';45$content_line = phutil_tag(46'span',47array(48'class' => 'c',49),50pht('...'));51} else {52$content_number = $line_number;53$content_line = $line;54}5556$row_attributes = array();57if (isset($this->highlights[$line_number])) {58$row_attributes['class'] = 'phabricator-source-highlight';59}6061// TODO: Provide nice links.6263$th = phutil_tag(64'th',65array(66'class' => 'phabricator-source-line',67),68$content_number);6970$td = phutil_tag(71'td',72array('class' => 'phabricator-source-code'),73$content_line);7475$rows[] = phutil_tag(76'tr',77$row_attributes,78array($th, $td));7980if ($hit_limit) {81break;82}8384$line_number++;85}8687$classes = array();88$classes[] = 'phabricator-source-code-view';89$classes[] = 'remarkup-code';90$classes[] = 'PhabricatorMonospaced';9192return phutil_tag(93'div',94array(95'class' => 'phabricator-source-code-container',96),97phutil_tag(98'table',99array(100'class' => implode(' ', $classes),101),102phutil_implode_html('', $rows)));103}104105}106107108