HomePhabricator

Move object monogram rules later in the parse order

Description

Move object monogram rules later in the parse order

Summary:
Fixes T5837. The problem is that the hash is being recognized as a commit hash. We currently fire the object monogram rules fairly early, but there's no real reason to do this. Move them after all of the hyperlink rules:

  0 PhutilRemarkupEscapeRemarkupRule
  100 PhutilRemarkupMonospaceRule
  150 PhutilRemarkupDocumentLinkRule
  175 PhrictionRemarkupRule

<<< OLD OBJECT RULE POSITION

  200 PhabricatorIconRemarkupRule
  200 PhabricatorMemeRemarkupRule
  200 DivinerSymbolRemarkupRule
  350 DoorkeeperRemarkupRuleJIRA
  350 PhabricatorYoutubeRemarkupRule
  350 DoorkeeperRemarkupRuleAsana
  400 PhutilRemarkupHyperlinkRule

>>> NEW OBJECT RULE POSITION

  500 PhabricatorImageMacroRemarkupRule
  500 CustomInlineJIRA5Rule
  500 PhabricatorMentionRemarkupRule
  500 CustomInlineCodeRule
  1000 PhutilRemarkupDelRule
  1000 PhutilRemarkupBoldRule
  1000 PhutilRemarkupItalicRule
  1000 PhutilRemarkupUnderlineRule

- The disadvantage of this approach is that `{F123, alt=go look at http://lol.com/ omg}` will parse the URL first, and then fail to resolve the object embed. This seems very rare / unusual.
- The advantage is that all URLs which happen to have monograms in them work.

In the future, we could refine this by separating the rules, so the embed ({...}) versions fired at priority 200, while the normal versions fired at priority 450. We can wait for use cases, though. This is a little messy because the same code implements both rules.

Test Plan:

  • Verified example in T5837.
  • Marked up object rules like F123 (works), [[ asdf | F123 ]] (works), {F123, alt=http://example.com} (does not work).

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T5837

Differential Revision: https://secure.phabricator.com/D10212