private function buildCorpus($selected, DiffusionFileContentQuery $file_query, $needs_blame, DiffusionRequest $drequest, $path, $data)
 {
     if (ArcanistDiffUtils::isHeuristicBinaryFile($data)) {
         $file = $this->loadFileForData($path, $data);
         $file_uri = $file->getBestURI();
         if ($file->isViewableImage()) {
             $this->corpusType = 'image';
             return $this->buildImageCorpus($file_uri);
         } else {
             $this->corpusType = 'binary';
             return $this->buildBinaryCorpus($file_uri, $data);
         }
     }
     switch ($selected) {
         case 'plain':
             $style = "margin: 1em 2em; width: 90%; height: 80em; font-family: monospace";
             $corpus = phutil_render_tag('textarea', array('style' => $style), phutil_escape_html($file_query->getRawData()));
             break;
         case 'plainblame':
             $style = "margin: 1em 2em; width: 90%; height: 80em; font-family: monospace";
             list($text_list, $rev_list, $blame_dict) = $file_query->getBlameData();
             $rows = array();
             foreach ($text_list as $k => $line) {
                 $rev = $rev_list[$k];
                 if (isset($blame_dict[$rev]['handle'])) {
                     $author = $blame_dict[$rev]['handle']->getName();
                 } else {
                     $author = $blame_dict[$rev]['author'];
                 }
                 $rows[] = sprintf("%-10s %-20s %s", substr($rev, 0, 7), $author, $line);
             }
             $corpus = phutil_render_tag('textarea', array('style' => $style), phutil_escape_html(implode("\n", $rows)));
             break;
         case 'highlighted':
         case 'blame':
         default:
             require_celerity_resource('syntax-highlighting-css');
             list($text_list, $rev_list, $blame_dict) = $file_query->getBlameData();
             $text_list = implode("\n", $text_list);
             $text_list = PhabricatorSyntaxHighlighter::highlightWithFilename($path, $text_list);
             $text_list = explode("\n", $text_list);
             $rows = $this->buildDisplayRows($text_list, $rev_list, $blame_dict, $needs_blame, $drequest, $file_query, $selected);
             $corpus_table = phutil_render_tag('table', array('class' => "diffusion-source remarkup-code PhabricatorMonospaced"), implode("\n", $rows));
             $corpus = phutil_render_tag('div', array('style' => 'padding: 0 2em;'), $corpus_table);
             break;
     }
     return $corpus;
 }
 private function buildCorpus($selected, DiffusionFileContentQuery $file_query, $needs_blame, DiffusionRequest $drequest, $path, $data)
 {
     if (ArcanistDiffUtils::isHeuristicBinaryFile($data)) {
         $file = $this->loadFileForData($path, $data);
         $file_uri = $file->getBestURI();
         if ($file->isViewableImage()) {
             $this->corpusType = 'image';
             return $this->buildImageCorpus($file_uri);
         } else {
             $this->corpusType = 'binary';
             return $this->buildBinaryCorpus($file_uri, $data);
         }
     }
     switch ($selected) {
         case 'plain':
             $style = "margin: 1em 2em; width: 90%; height: 80em; font-family: monospace";
             $corpus = phutil_render_tag('textarea', array('style' => $style), phutil_escape_html($file_query->getRawData()));
             break;
         case 'plainblame':
             $style = "margin: 1em 2em; width: 90%; height: 80em; font-family: monospace";
             list($text_list, $rev_list, $blame_dict) = $file_query->getBlameData();
             $rows = array();
             foreach ($text_list as $k => $line) {
                 $rev = $rev_list[$k];
                 if (isset($blame_dict[$rev]['handle'])) {
                     $author = $blame_dict[$rev]['handle']->getName();
                 } else {
                     $author = $blame_dict[$rev]['author'];
                 }
                 $rows[] = sprintf("%-10s %-20s %s", substr($rev, 0, 7), $author, $line);
             }
             $corpus = phutil_render_tag('textarea', array('style' => $style), phutil_escape_html(implode("\n", $rows)));
             break;
         case 'highlighted':
         case 'blame':
         default:
             require_celerity_resource('syntax-highlighting-css');
             list($text_list, $rev_list, $blame_dict) = $file_query->getBlameData();
             $text_list = implode("\n", $text_list);
             $text_list = PhabricatorSyntaxHighlighter::highlightWithFilename($path, $text_list);
             $text_list = explode("\n", $text_list);
             $rows = $this->buildDisplayRows($text_list, $rev_list, $blame_dict, $needs_blame, $drequest, $file_query, $selected);
             $id = celerity_generate_unique_node_id();
             $projects = $drequest->loadArcanistProjects();
             $langs = array();
             foreach ($projects as $project) {
                 $ls = $project->getSymbolIndexLanguages();
                 if (!$ls) {
                     continue;
                 }
                 $dep_projects = $project->getSymbolIndexProjects();
                 $dep_projects[] = $project->getPHID();
                 foreach ($ls as $lang) {
                     if (!isset($langs[$lang])) {
                         $langs[$lang] = array();
                     }
                     $langs[$lang] += $dep_projects + array($project);
                 }
             }
             $lang = last(explode('.', $drequest->getPath()));
             $prefs = $this->getRequest()->getUser()->loadPreferences();
             $pref_symbols = $prefs->getPreference(PhabricatorUserPreferences::PREFERENCE_DIFFUSION_SYMBOLS);
             if (isset($langs[$lang]) && $pref_symbols != 'disabled') {
                 Javelin::initBehavior('repository-crossreference', array('container' => $id, 'lang' => $lang, 'projects' => $langs[$lang]));
             }
             $corpus_table = javelin_render_tag('table', array('class' => "diffusion-source remarkup-code PhabricatorMonospaced", 'sigil' => 'diffusion-source'), implode("\n", $rows));
             $corpus = phutil_render_tag('div', array('style' => 'padding: 0 2em;', 'id' => $id), $corpus_table);
             break;
     }
     return $corpus;
 }