Path: blob/master/src/applications/celerity/management/CelerityManagementSyntaxWorkflow.php
12256 views
<?php12final class CelerityManagementSyntaxWorkflow3extends CelerityManagementWorkflow {45protected function didConstruct() {6$this7->setName('syntax')8->setExamples('**syntax** [options]')9->setSynopsis(pht('Rebuild syntax highlighting CSS.'))10->setArguments(11array());12}1314public function execute(PhutilArgumentParser $args) {15$styles = PhabricatorSyntaxStyle::getAllStyles();1617$root = dirname(phutil_get_library_root('phabricator'));18$root = $root.'/webroot/rsrc/css/syntax/';1920foreach ($styles as $key => $style) {21$content = $this->generateCSS($style);22$path = $root.'/syntax-'.$key.'.css';23Filesystem::writeFile($path, $content);2425echo tsprintf(26"%s\n",27pht(28'Rebuilt "%s" syntax CSS.',29basename($path)));30}3132return 0;33}3435private function generateCSS(PhabricatorSyntaxStyle $style) {36$key = $style->getSyntaxStyleKey();37$provides = "syntax-{$key}-css";38$generated = 'generated';3940$header =41"/**\n".42" * @provides {$provides}\n".43" * @{$generated}\n".44" */\n\n";4546$groups = array();47$map = $style->getStyleMap();48ksort($map);49foreach ($map as $key => $value) {50$groups[$value][] = $key;51}5253$rules = array();54foreach ($groups as $body => $classes) {55$parts = array();56foreach ($classes as $class) {57$parts[] = ".remarkup-code .{$class}";58}59$rules[] = implode(",\n", $parts)." {\n {$body}\n}";60}61$rules = implode("\n\n", $rules);6263return $header.$rules."\n";64}6566}676869