Page MenuHomePhabricator

D7995.diff
No OneTemporary

D7995.diff

Index: src/__phutil_library_map__.php
===================================================================
--- src/__phutil_library_map__.php
+++ src/__phutil_library_map__.php
@@ -264,6 +264,7 @@
'PhutilRemarkupRuleItalic' => 'markup/engine/remarkup/markuprule/PhutilRemarkupRuleItalic.php',
'PhutilRemarkupRuleLinebreaks' => 'markup/engine/remarkup/markuprule/PhutilRemarkupRuleLinebreaks.php',
'PhutilRemarkupRuleMonospace' => 'markup/engine/remarkup/markuprule/PhutilRemarkupRuleMonospace.php',
+ 'PhutilRemarkupRuleUnderline' => 'markup/engine/remarkup/markuprule/PhutilRemarkupRuleUnderline.php',
'PhutilRope' => 'utils/PhutilRope.php',
'PhutilRopeTestCase' => 'utils/__tests__/PhutilRopeTestCase.php',
'PhutilSafeHTML' => 'markup/PhutilSafeHTML.php',
@@ -621,6 +622,7 @@
'PhutilRemarkupRuleItalic' => 'PhutilRemarkupRule',
'PhutilRemarkupRuleLinebreaks' => 'PhutilRemarkupRule',
'PhutilRemarkupRuleMonospace' => 'PhutilRemarkupRule',
+ 'PhutilRemarkupRuleUnderline' => 'PhutilRemarkupRule',
'PhutilRope' => 'Phobject',
'PhutilRopeTestCase' => 'PhutilTestCase',
'PhutilSafeHTMLTestCase' => 'PhutilTestCase',
Index: src/markup/engine/__tests__/PhutilRemarkupEngineTestCase.php
===================================================================
--- src/markup/engine/__tests__/PhutilRemarkupEngineTestCase.php
+++ src/markup/engine/__tests__/PhutilRemarkupEngineTestCase.php
@@ -85,6 +85,7 @@
$rules[] = new PhutilRemarkupRuleBold();
$rules[] = new PhutilRemarkupRuleItalic();
$rules[] = new PhutilRemarkupRuleDel();
+ $rules[] = new PhutilRemarkupRuleUnderline();
$blocks = array();
$blocks[] = new PhutilRemarkupEngineRemarkupQuotesBlockRule();
Index: src/markup/engine/__tests__/remarkup/underline.txt
===================================================================
--- /dev/null
+++ src/markup/engine/__tests__/remarkup/underline.txt
@@ -0,0 +1,11 @@
+omg__ wtf_____ bbq___ lol__
+__underlined text__
+__This is a great idea___ die forever please
+__
+~~~~~~~~~~
+<p>omg__ wtf_____ bbq___ lol__
+<u>underlined text</u>
+<u>This is a great idea_</u> die forever please
+__</p>
+~~~~~~~~~~
+omg__ wtf_____ bbq___ lol__ __underlined text__ __This is a great idea___ die forever please __
Index: src/markup/engine/remarkup/markuprule/PhutilRemarkupRuleUnderline.php
===================================================================
--- /dev/null
+++ src/markup/engine/remarkup/markuprule/PhutilRemarkupRuleUnderline.php
@@ -0,0 +1,25 @@
+<?php
+
+final class PhutilRemarkupRuleUnderline
+ extends PhutilRemarkupRule {
+
+ public function getPriority() {
+ return 1000.0;
+ }
+
+ public function apply($text) {
+ if ($this->getEngine()->isTextMode()) {
+ return $text;
+ }
+
+ return $this->replaceHTML(
+ '@(?<!_)__([^\s_].*?_*)__@s',
+ array($this, 'applyCallback'),
+ $text);
+ }
+
+ protected function applyCallback($matches) {
+ return hsprintf('<u>%s</u>', $matches[1]);
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 6:06 PM (3 w, 7 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6285096
Default Alt Text
D7995.diff (2 KB)

Event Timeline