diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 28688674c8..627558ae2b 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -159,7 +159,6 @@ phutil_register_library_map(array( 'DifferentialInlineCommentView' => 'applications/differential/view/inlinecomment', 'DifferentialLintStatus' => 'applications/differential/constants/lintstatus', 'DifferentialMail' => 'applications/differential/mail/base', - 'DifferentialMarkupEngineFactory' => 'applications/differential/parser/markup', 'DifferentialNewDiffMail' => 'applications/differential/mail/newdiff', 'DifferentialPrimaryPaneView' => 'applications/differential/view/primarypane', 'DifferentialReplyHandler' => 'applications/differential/replyhandler', @@ -392,6 +391,7 @@ phutil_register_library_map(array( 'PhabricatorMailImplementationSendGridAdapter' => 'applications/metamta/adapter/sendgrid', 'PhabricatorMailImplementationTestAdapter' => 'applications/metamta/adapter/test', 'PhabricatorMailReplyHandler' => 'applications/metamta/replyhandler/base', + 'PhabricatorMarkupEngine' => 'applications/markup/engine', 'PhabricatorMetaMTAController' => 'applications/metamta/controller/base', 'PhabricatorMetaMTADAO' => 'applications/metamta/storage/base', 'PhabricatorMetaMTADaemon' => 'applications/metamta/daemon/mta', diff --git a/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php b/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php index d85059d0e1..29084e5228 100644 --- a/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php +++ b/src/applications/differential/controller/changesetview/DifferentialChangesetViewController.php @@ -179,8 +179,7 @@ class DifferentialChangesetViewController extends DifferentialController { ->loadHandles(); $parser->setHandles($handles); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine(); $parser->setMarkupEngine($engine); if ($request->isAjax()) { diff --git a/src/applications/differential/controller/changesetview/__init__.php b/src/applications/differential/controller/changesetview/__init__.php index 1dee351113..828ede30d3 100644 --- a/src/applications/differential/controller/changesetview/__init__.php +++ b/src/applications/differential/controller/changesetview/__init__.php @@ -14,12 +14,12 @@ phutil_require_module('phabricator', 'aphront/response/ajax'); phutil_require_module('phabricator', 'aphront/response/file'); phutil_require_module('phabricator', 'applications/differential/controller/base'); phutil_require_module('phabricator', 'applications/differential/parser/changeset'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/storage/changeset'); phutil_require_module('phabricator', 'applications/differential/storage/diff'); phutil_require_module('phabricator', 'applications/differential/storage/inlinecomment'); phutil_require_module('phabricator', 'applications/differential/view/changesetdetailview'); phutil_require_module('phabricator', 'applications/differential/view/primarypane'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'infrastructure/javelin/api'); diff --git a/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php b/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php index 74b57a6211..e6a3cfcaa7 100644 --- a/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php +++ b/src/applications/differential/controller/commentpreview/DifferentialCommentPreviewController.php @@ -33,8 +33,7 @@ class DifferentialCommentPreviewController extends DifferentialController { $handles = id(new PhabricatorObjectHandleData(array($author_phid))) ->loadHandles(); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine(); $comment = new DifferentialComment(); $comment->setContent($request->getStr('content')); diff --git a/src/applications/differential/controller/commentpreview/__init__.php b/src/applications/differential/controller/commentpreview/__init__.php index 344ca478f3..b628f1d579 100644 --- a/src/applications/differential/controller/commentpreview/__init__.php +++ b/src/applications/differential/controller/commentpreview/__init__.php @@ -8,10 +8,10 @@ phutil_require_module('phabricator', 'aphront/response/ajax'); phutil_require_module('phabricator', 'applications/differential/controller/base'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/storage/comment'); phutil_require_module('phabricator', 'applications/differential/view/revisioncomment'); phutil_require_module('phabricator', 'applications/draft/storage/draft'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/differential/controller/inlinecommentedit/DifferentialInlineCommentEditController.php b/src/applications/differential/controller/inlinecommentedit/DifferentialInlineCommentEditController.php index 8bd919e124..eb968856cc 100644 --- a/src/applications/differential/controller/inlinecommentedit/DifferentialInlineCommentEditController.php +++ b/src/applications/differential/controller/inlinecommentedit/DifferentialInlineCommentEditController.php @@ -152,8 +152,7 @@ class DifferentialInlineCommentEditController extends DifferentialController { $request = $this->getRequest(); $user = $request->getUser(); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine(); $phids = array($user->getPHID()); diff --git a/src/applications/differential/controller/inlinecommentedit/__init__.php b/src/applications/differential/controller/inlinecommentedit/__init__.php index 8cb908d5a2..553cef5304 100644 --- a/src/applications/differential/controller/inlinecommentedit/__init__.php +++ b/src/applications/differential/controller/inlinecommentedit/__init__.php @@ -9,11 +9,11 @@ phutil_require_module('phabricator', 'aphront/response/ajax'); phutil_require_module('phabricator', 'aphront/response/dialog'); phutil_require_module('phabricator', 'applications/differential/controller/base'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/storage/changeset'); phutil_require_module('phabricator', 'applications/differential/storage/inlinecomment'); phutil_require_module('phabricator', 'applications/differential/storage/revision'); phutil_require_module('phabricator', 'applications/differential/view/inlinecomment'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'infrastructure/javelin/markup'); phutil_require_module('phabricator', 'view/dialog'); diff --git a/src/applications/differential/controller/inlinecommentpreview/DifferentialInlineCommentPreviewController.php b/src/applications/differential/controller/inlinecommentpreview/DifferentialInlineCommentPreviewController.php index ef558dda50..056b7e3c68 100644 --- a/src/applications/differential/controller/inlinecommentpreview/DifferentialInlineCommentPreviewController.php +++ b/src/applications/differential/controller/inlinecommentpreview/DifferentialInlineCommentPreviewController.php @@ -39,8 +39,7 @@ class DifferentialInlineCommentPreviewController $user->getPHID(), $this->revisionID); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine(); $phids = array($user->getPHID()); $handles = id(new PhabricatorObjectHandleData($phids)) diff --git a/src/applications/differential/controller/inlinecommentpreview/__init__.php b/src/applications/differential/controller/inlinecommentpreview/__init__.php index 900156b3d4..f78a764fb7 100644 --- a/src/applications/differential/controller/inlinecommentpreview/__init__.php +++ b/src/applications/differential/controller/inlinecommentpreview/__init__.php @@ -8,9 +8,9 @@ phutil_require_module('phabricator', 'aphront/response/ajax'); phutil_require_module('phabricator', 'applications/differential/controller/base'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/storage/inlinecomment'); phutil_require_module('phabricator', 'applications/differential/view/inlinecomment'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/differential/editor/comment/DifferentialCommentEditor.php b/src/applications/differential/editor/comment/DifferentialCommentEditor.php index 1834b4c9ef..d213fcf76a 100644 --- a/src/applications/differential/editor/comment/DifferentialCommentEditor.php +++ b/src/applications/differential/editor/comment/DifferentialCommentEditor.php @@ -343,7 +343,7 @@ class DifferentialCommentEditor { foreach ($inline_comments as $inline) { $content_blocks[] = $inline->getContent(); } - $mention_ccs = DifferentialMarkupEngineFactory::extractPHIDsFromMentions( + $mention_ccs = PhabricatorMarkupEngine::extractPHIDsFromMentions( $content_blocks); if ($mention_ccs) { $current_ccs = $revision->getCCPHIDs(); diff --git a/src/applications/differential/editor/comment/__init__.php b/src/applications/differential/editor/comment/__init__.php index 6dcae1bae7..c60ff05e83 100644 --- a/src/applications/differential/editor/comment/__init__.php +++ b/src/applications/differential/editor/comment/__init__.php @@ -10,13 +10,13 @@ phutil_require_module('phabricator', 'applications/differential/constants/action phutil_require_module('phabricator', 'applications/differential/constants/revisionstatus'); phutil_require_module('phabricator', 'applications/differential/editor/revision'); phutil_require_module('phabricator', 'applications/differential/mail/comment'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/storage/changeset'); phutil_require_module('phabricator', 'applications/differential/storage/comment'); phutil_require_module('phabricator', 'applications/differential/storage/inlinecomment'); phutil_require_module('phabricator', 'applications/feed/constants/story'); phutil_require_module('phabricator', 'applications/feed/publisher'); phutil_require_module('phabricator', 'applications/herald/storage/transcript/base'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'applications/search/index/indexer/differential'); phutil_require_module('phabricator', 'infrastructure/daemon/timeline/storage/event'); diff --git a/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php b/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php index 4ca1901a58..7ccbcb66f0 100644 --- a/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php +++ b/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php @@ -58,8 +58,7 @@ final class DifferentialRevisionCommentListView extends AphrontView { require_celerity_resource('differential-revision-comment-list-css'); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine(); $inlines = mgroup($this->inlines, 'getCommentID'); diff --git a/src/applications/differential/view/revisioncommentlist/__init__.php b/src/applications/differential/view/revisioncommentlist/__init__.php index 8655d18f09..c92b2aa36f 100644 --- a/src/applications/differential/view/revisioncommentlist/__init__.php +++ b/src/applications/differential/view/revisioncommentlist/__init__.php @@ -6,8 +6,8 @@ -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/view/revisioncomment'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'infrastructure/celerity/api'); phutil_require_module('phabricator', 'infrastructure/javelin/api'); phutil_require_module('phabricator', 'infrastructure/javelin/markup'); diff --git a/src/applications/diffusion/controller/commit/DiffusionCommitController.php b/src/applications/diffusion/controller/commit/DiffusionCommitController.php index 7958195639..4b7e80178c 100644 --- a/src/applications/diffusion/controller/commit/DiffusionCommitController.php +++ b/src/applications/diffusion/controller/commit/DiffusionCommitController.php @@ -44,8 +44,7 @@ class DiffusionCommitController extends DiffusionController { $commit_data = $drequest->loadCommitData(); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine(); require_celerity_resource('diffusion-commit-view-css'); require_celerity_resource('phabricator-remarkup-css'); diff --git a/src/applications/diffusion/controller/commit/__init__.php b/src/applications/diffusion/controller/commit/__init__.php index 70cfe04c4c..1462f1b18e 100644 --- a/src/applications/diffusion/controller/commit/__init__.php +++ b/src/applications/diffusion/controller/commit/__init__.php @@ -7,12 +7,12 @@ phutil_require_module('phabricator', 'applications/differential/constants/changetype'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/differential/view/changesetlistview'); phutil_require_module('phabricator', 'applications/diffusion/controller/base'); phutil_require_module('phabricator', 'applications/diffusion/data/pathchange'); phutil_require_module('phabricator', 'applications/diffusion/query/pathchange/base'); phutil_require_module('phabricator', 'applications/diffusion/view/commitchangetable'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'applications/repository/constants/repositorytype'); phutil_require_module('phabricator', 'applications/repository/storage/repository'); diff --git a/src/applications/maniphest/controller/descriptionchange/ManiphestTaskDescriptionChangeController.php b/src/applications/maniphest/controller/descriptionchange/ManiphestTaskDescriptionChangeController.php index d1b73fdba6..9965cb44f9 100644 --- a/src/applications/maniphest/controller/descriptionchange/ManiphestTaskDescriptionChangeController.php +++ b/src/applications/maniphest/controller/descriptionchange/ManiphestTaskDescriptionChangeController.php @@ -47,8 +47,7 @@ class ManiphestTaskDescriptionChangeController extends ManiphestController { } $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newManiphestMarkupEngine(); $view = new ManiphestTransactionDetailView(); $view->setTransactionGroup($transactions); diff --git a/src/applications/maniphest/controller/descriptionchange/__init__.php b/src/applications/maniphest/controller/descriptionchange/__init__.php index fd7bbc1534..a03857423c 100644 --- a/src/applications/maniphest/controller/descriptionchange/__init__.php +++ b/src/applications/maniphest/controller/descriptionchange/__init__.php @@ -8,10 +8,10 @@ phutil_require_module('phabricator', 'aphront/response/404'); phutil_require_module('phabricator', 'aphront/response/ajax'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/maniphest/controller/base'); phutil_require_module('phabricator', 'applications/maniphest/storage/transaction'); phutil_require_module('phabricator', 'applications/maniphest/view/transactiondetail'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/maniphest/controller/taskdetail/ManiphestTaskDetailController.php b/src/applications/maniphest/controller/taskdetail/ManiphestTaskDetailController.php index 99eb7408f9..3029af60eb 100644 --- a/src/applications/maniphest/controller/taskdetail/ManiphestTaskDetailController.php +++ b/src/applications/maniphest/controller/taskdetail/ManiphestTaskDetailController.php @@ -73,8 +73,7 @@ class ManiphestTaskDetailController extends ManiphestController { $handles = id(new PhabricatorObjectHandleData($phids)) ->loadHandles(); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newManiphestMarkupEngine(); $dict = array(); $dict['Status'] = diff --git a/src/applications/maniphest/controller/taskdetail/__init__.php b/src/applications/maniphest/controller/taskdetail/__init__.php index 811e7c59df..10e31e2ce4 100644 --- a/src/applications/maniphest/controller/taskdetail/__init__.php +++ b/src/applications/maniphest/controller/taskdetail/__init__.php @@ -7,7 +7,6 @@ phutil_require_module('phabricator', 'aphront/response/404'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/draft/storage/draft'); phutil_require_module('phabricator', 'applications/files/storage/file'); phutil_require_module('phabricator', 'applications/maniphest/constants/priority'); @@ -17,6 +16,7 @@ phutil_require_module('phabricator', 'applications/maniphest/controller/base'); phutil_require_module('phabricator', 'applications/maniphest/storage/task'); phutil_require_module('phabricator', 'applications/maniphest/storage/transaction'); phutil_require_module('phabricator', 'applications/maniphest/view/transactionlist'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/constants'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'infrastructure/celerity/api'); diff --git a/src/applications/maniphest/controller/transactionpreview/ManiphestTransactionPreviewController.php b/src/applications/maniphest/controller/transactionpreview/ManiphestTransactionPreviewController.php index a830d5f0cc..190892bbf3 100644 --- a/src/applications/maniphest/controller/transactionpreview/ManiphestTransactionPreviewController.php +++ b/src/applications/maniphest/controller/transactionpreview/ManiphestTransactionPreviewController.php @@ -80,8 +80,7 @@ class ManiphestTransactionPreviewController extends ManiphestController { $transactions = array(); $transactions[] = $transaction; - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newManiphestMarkupEngine(); $transaction_view = new ManiphestTransactionListView(); $transaction_view->setTransactions($transactions); diff --git a/src/applications/maniphest/controller/transactionpreview/__init__.php b/src/applications/maniphest/controller/transactionpreview/__init__.php index f228cbff40..82f98e28be 100644 --- a/src/applications/maniphest/controller/transactionpreview/__init__.php +++ b/src/applications/maniphest/controller/transactionpreview/__init__.php @@ -8,13 +8,13 @@ phutil_require_module('phabricator', 'aphront/response/404'); phutil_require_module('phabricator', 'aphront/response/ajax'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/draft/storage/draft'); phutil_require_module('phabricator', 'applications/maniphest/constants/transactiontype'); phutil_require_module('phabricator', 'applications/maniphest/controller/base'); phutil_require_module('phabricator', 'applications/maniphest/storage/task'); phutil_require_module('phabricator', 'applications/maniphest/storage/transaction'); phutil_require_module('phabricator', 'applications/maniphest/view/transactionlist'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/maniphest/controller/transactionsave/ManiphestTransactionSaveController.php b/src/applications/maniphest/controller/transactionsave/ManiphestTransactionSaveController.php index 1b3706cc02..34924a0e3a 100644 --- a/src/applications/maniphest/controller/transactionsave/ManiphestTransactionSaveController.php +++ b/src/applications/maniphest/controller/transactionsave/ManiphestTransactionSaveController.php @@ -87,7 +87,7 @@ class ManiphestTransactionSaveController extends ManiphestController { // Compute new CCs added by @mentions. We're going to try to add them to // another CC transaction if we can. If there aren't any CC transactions, // we'll create a new CC transaction after we handle everything else. - $mention_ccs = DifferentialMarkupEngineFactory::extractPHIDsFromMentions( + $mention_ccs = PhabricatorMarkupEngine::extractPHIDsFromMentions( array( $request->getStr('comments'), )); diff --git a/src/applications/maniphest/controller/transactionsave/__init__.php b/src/applications/maniphest/controller/transactionsave/__init__.php index fc69d9bba9..2967a0a491 100644 --- a/src/applications/maniphest/controller/transactionsave/__init__.php +++ b/src/applications/maniphest/controller/transactionsave/__init__.php @@ -8,7 +8,6 @@ phutil_require_module('phabricator', 'aphront/response/404'); phutil_require_module('phabricator', 'aphront/response/redirect'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/draft/storage/draft'); phutil_require_module('phabricator', 'applications/files/storage/file'); phutil_require_module('phabricator', 'applications/maniphest/constants/status'); @@ -17,6 +16,7 @@ phutil_require_module('phabricator', 'applications/maniphest/controller/base'); phutil_require_module('phabricator', 'applications/maniphest/editor/transaction'); phutil_require_module('phabricator', 'applications/maniphest/storage/task'); phutil_require_module('phabricator', 'applications/maniphest/storage/transaction'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/constants'); phutil_require_module('phutil', 'utils'); diff --git a/src/applications/differential/parser/markup/DifferentialMarkupEngineFactory.php b/src/applications/markup/engine/PhabricatorMarkupEngine.php similarity index 64% rename from src/applications/differential/parser/markup/DifferentialMarkupEngineFactory.php rename to src/applications/markup/engine/PhabricatorMarkupEngine.php index bb6e221b85..eeaa4a6616 100644 --- a/src/applications/differential/parser/markup/DifferentialMarkupEngineFactory.php +++ b/src/applications/markup/engine/PhabricatorMarkupEngine.php @@ -16,13 +16,12 @@ * limitations under the License. */ -class DifferentialMarkupEngineFactory { +class PhabricatorMarkupEngine { public static function extractPHIDsFromMentions(array $content_blocks) { $mentions = array(); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = self::newDifferentialMarkupEngine(); foreach ($content_blocks as $content_block) { $engine->markupText($content_block); @@ -35,21 +34,62 @@ class DifferentialMarkupEngineFactory { return $mentions; } - public function newDifferentialCommentMarkupEngine() { + public static function newManiphestMarkupEngine() { + return self::newMarkupEngine(array( + )); + } + + public static function newPhrictionMarkupEngine() { + return self::newMarkupEngine(array( + )); + } + + public static function newDifferentialMarkupEngine() { + return self::newMarkupEngine(array( + 'custom-inline' => PhabricatorEnv::getEnvConfig( + 'differential.custom-remarkup-rules'), + 'custom-block' => PhabricatorEnv::getEnvConfig( + 'differential.custom-remarkup-block-rules'), + )); + } + + public static function newProfileMarkupEngine() { + return self::newMarkupEngine(array( + )); + } + + public static function newSlowvoteMarkupEngine() { + return self::newMarkupEngine(array( + )); + } + + private static function getMarkupEngineDefaultConfiguration() { + return array( + 'pygments' => PhabricatorEnv::getEnvConfig('pygments.enabled'), + 'fileproxy' => PhabricatorEnv::getEnvConfig('files.enable-proxy'), + 'youtube' => PhabricatorEnv::getEnvConfig( + 'remarkup.enable-embedded-youtube'), + 'custom-inline' => array(), + 'custom-block' => array(), + ); + } + + private static function newMarkupEngine(array $options) { + + $options += self::getMarkupEngineDefaultConfiguration(); + $engine = new PhutilRemarkupEngine(); $engine->setConfig('preserve-linebreaks', true); - $engine->setConfig( - 'pygments.enabled', - PhabricatorEnv::getEnvConfig('pygments.enabled')); + $engine->setConfig('pygments.enabled', $options['pygments']); $rules = array(); $rules[] = new PhutilRemarkupRuleEscapeRemarkup(); - if (PhabricatorEnv::getEnvConfig('files.enable-proxy')) { + if ($options['fileproxy']) { $rules[] = new PhabricatorRemarkupRuleProxyImage(); } - if (PhabricatorEnv::getEnvConfig('remarkup.enable-embedded-youtube')) { + if ($options['youtube']) { $rules[] = new PhabricatorRemarkupRuleYoutube(); } @@ -62,8 +102,7 @@ class DifferentialMarkupEngineFactory { $rules[] = new PhabricatorRemarkupRuleImageMacro(); $rules[] = new PhabricatorRemarkupRuleMention(); - $custom_rule_classes = - PhabricatorEnv::getEnvConfig('differential.custom-remarkup-rules'); + $custom_rule_classes = $options['custom-inline']; if ($custom_rule_classes) { foreach ($custom_rule_classes as $custom_rule_class) { PhutilSymbolLoader::loadClass($custom_rule_class); @@ -76,7 +115,6 @@ class DifferentialMarkupEngineFactory { $rules[] = new PhutilRemarkupRuleBold(); $rules[] = new PhutilRemarkupRuleItalic(); - $blocks = array(); $blocks[] = new PhutilRemarkupEngineRemarkupQuotesBlockRule(); $blocks[] = new PhutilRemarkupEngineRemarkupHeaderBlockRule(); @@ -84,8 +122,7 @@ class DifferentialMarkupEngineFactory { $blocks[] = new PhutilRemarkupEngineRemarkupCodeBlockRule(); $blocks[] = new PhutilRemarkupEngineRemarkupDefaultBlockRule(); - $custom_block_rule_classes = - PhabricatorEnv::getEnvConfig('differential.custom-remarkup-block-rules'); + $custom_block_rule_classes = $options['custom-block']; if ($custom_block_rule_classes) { foreach ($custom_block_rule_classes as $custom_block_rule_class) { PhutilSymbolLoader::loadClass($custom_block_rule_class); diff --git a/src/applications/differential/parser/markup/__init__.php b/src/applications/markup/engine/__init__.php similarity index 96% rename from src/applications/differential/parser/markup/__init__.php rename to src/applications/markup/engine/__init__.php index 876e77f38b..27712754fd 100644 --- a/src/applications/differential/parser/markup/__init__.php +++ b/src/applications/markup/engine/__init__.php @@ -32,4 +32,4 @@ phutil_require_module('phutil', 'symbols'); phutil_require_module('phutil', 'utils'); -phutil_require_source('DifferentialMarkupEngineFactory.php'); +phutil_require_source('PhabricatorMarkupEngine.php'); diff --git a/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php b/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php index 8c6d68ab5e..ca2e2c51de 100644 --- a/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php +++ b/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php @@ -139,8 +139,7 @@ class PhabricatorPeopleProfileController extends PhabricatorPeopleController { $profile->getBlurb(), '//Nothing is known about this rare specimen.//'); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newProfileMarkupEngine(); $blurb = $engine->markupText($blurb); $content = diff --git a/src/applications/people/controller/profile/__init__.php b/src/applications/people/controller/profile/__init__.php index 005d726611..9f271cdce8 100644 --- a/src/applications/people/controller/profile/__init__.php +++ b/src/applications/people/controller/profile/__init__.php @@ -8,8 +8,8 @@ phutil_require_module('phabricator', 'aphront/response/404'); phutil_require_module('phabricator', 'applications/auth/oauth/provider/base'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/files/uri'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/people/controller/base'); phutil_require_module('phabricator', 'applications/people/storage/profile'); phutil_require_module('phabricator', 'applications/people/storage/user'); diff --git a/src/applications/project/controller/profile/PhabricatorProjectProfileController.php b/src/applications/project/controller/profile/PhabricatorProjectProfileController.php index b8931e1d61..01d336326c 100644 --- a/src/applications/project/controller/profile/PhabricatorProjectProfileController.php +++ b/src/applications/project/controller/profile/PhabricatorProjectProfileController.php @@ -111,8 +111,7 @@ class PhabricatorProjectProfileController $profile->getBlurb(), '//Nothing is known about this elusive project.//'); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newProfileMarkupEngine(); $blurb = $engine->markupText($blurb); $affiliations = $project->loadAffiliations(); diff --git a/src/applications/project/controller/profile/__init__.php b/src/applications/project/controller/profile/__init__.php index dd824451e2..0a31f17672 100644 --- a/src/applications/project/controller/profile/__init__.php +++ b/src/applications/project/controller/profile/__init__.php @@ -7,10 +7,10 @@ phutil_require_module('phabricator', 'aphront/response/404'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/files/uri'); phutil_require_module('phabricator', 'applications/maniphest/query'); phutil_require_module('phabricator', 'applications/maniphest/view/tasksummary'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'applications/project/constants/status'); phutil_require_module('phabricator', 'applications/project/controller/base'); diff --git a/src/applications/slowvote/controller/poll/PhabricatorSlowvotePollController.php b/src/applications/slowvote/controller/poll/PhabricatorSlowvotePollController.php index e1fc0d62d8..cb01e01133 100644 --- a/src/applications/slowvote/controller/poll/PhabricatorSlowvotePollController.php +++ b/src/applications/slowvote/controller/poll/PhabricatorSlowvotePollController.php @@ -207,8 +207,7 @@ class PhabricatorSlowvotePollController private function renderComments(array $comments, array $handles) { $viewer = $this->getRequest()->getUser(); - $factory = new DifferentialMarkupEngineFactory(); - $engine = $factory->newDifferentialCommentMarkupEngine(); + $engine = PhabricatorMarkupEngine::newSlowvoteMarkupEngine(); $comment_markup = array(); foreach ($comments as $comment) { diff --git a/src/applications/slowvote/controller/poll/__init__.php b/src/applications/slowvote/controller/poll/__init__.php index 53f8518c49..a463cd819b 100644 --- a/src/applications/slowvote/controller/poll/__init__.php +++ b/src/applications/slowvote/controller/poll/__init__.php @@ -8,8 +8,8 @@ phutil_require_module('phabricator', 'aphront/response/404'); phutil_require_module('phabricator', 'aphront/response/redirect'); -phutil_require_module('phabricator', 'applications/differential/parser/markup'); phutil_require_module('phabricator', 'applications/files/uri'); +phutil_require_module('phabricator', 'applications/markup/engine'); phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'applications/slowvote/controller/base'); phutil_require_module('phabricator', 'applications/slowvote/storage/choice');