From dbe3818d8c90562fd21cec44e61e23eb549dc081 Mon Sep 17 00:00:00 2001 From: John Watson Date: Fri, 14 Feb 2014 13:14:11 -0800 Subject: [PATCH] Add ability to pass `width` arg to dot remarkup interpeter Summary: Allows to keep really wide graphs inside the div: dot (width=100%) {{{ }}} Test Plan: Created a graph that is wider than a phriction page. Added `(width=100%)` and now the images stays within the div. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley CC: Korvin, epriestley, aran Differential Revision: https://secure.phabricator.com/D8235 --- ...PhabricatorRemarkupBlockInterpreterGraphviz.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php b/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php index e165f17532..af0f885727 100644 --- a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php +++ b/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php @@ -13,6 +13,8 @@ final class PhabricatorRemarkupBlockInterpreterGraphviz pht('Unable to locate the `dot` binary. Install Graphviz.')); } + $width = $this->parseDimension(idx($argv, 'width')); + $future = id(new ExecFuture('dot -T%s', 'png')) ->setTimeout(15) ->write(trim($content)); @@ -41,7 +43,19 @@ final class PhabricatorRemarkupBlockInterpreterGraphviz 'img', array( 'src' => $file->getBestURI(), + 'width' => nonempty($width, null), )); } + // TODO: This is duplicated from PhabricatorRemarkupRuleEmbedFile since they + // do not share a base class. + private function parseDimension($string) { + $string = trim($string); + + if (preg_match('/^(?:\d*\\.)?\d+%?$/', $string)) { + return $string; + } + + return null; + } }