diff options
author | ArthurHoaro <arthur@hoa.ro> | 2021-01-19 17:49:19 +0100 |
---|---|---|
committer | ArthurHoaro <arthur@hoa.ro> | 2021-01-19 17:49:19 +0100 |
commit | 9ef8555ad298668bcb8537ccdd2ab6560f44177f (patch) | |
tree | ba23e5d76d3d1f9eb95231ea6504d283f86d7722 /tests | |
parent | ffa39719a17982e6a6cac9bc3f758aa12fa69973 (diff) | |
download | Shaarli-9ef8555ad298668bcb8537ccdd2ab6560f44177f.tar.gz Shaarli-9ef8555ad298668bcb8537ccdd2ab6560f44177f.tar.zst Shaarli-9ef8555ad298668bcb8537ccdd2ab6560f44177f.zip |
Support search highlights when matching URL content
DefaultFormatter:
- format 'a' tag content and not href attribute
- format hashtags properly
Markdown(Extra)Formatter:
- Extend Parsedown to format highlight properly: https://github.com/erusev/parsedown/wiki/Tutorial:-Create-Extensions
Fixes #1681
Diffstat (limited to 'tests')
-rw-r--r-- | tests/formatter/BookmarkDefaultFormatterTest.php | 11 | ||||
-rw-r--r-- | tests/formatter/BookmarkMarkdownFormatterTest.php | 43 |
2 files changed, 52 insertions, 2 deletions
diff --git a/tests/formatter/BookmarkDefaultFormatterTest.php b/tests/formatter/BookmarkDefaultFormatterTest.php index 4fcc5dd1..983960b6 100644 --- a/tests/formatter/BookmarkDefaultFormatterTest.php +++ b/tests/formatter/BookmarkDefaultFormatterTest.php | |||
@@ -211,13 +211,17 @@ class BookmarkDefaultFormatterTest extends TestCase | |||
211 | $this->formatter = new BookmarkDefaultFormatter($this->conf, false); | 211 | $this->formatter = new BookmarkDefaultFormatter($this->conf, false); |
212 | 212 | ||
213 | $bookmark = new Bookmark(); | 213 | $bookmark = new Bookmark(); |
214 | $bookmark->setDescription('This guide extends and expands on PSR-1, the basic coding standard.'); | 214 | $bookmark->setDescription( |
215 | 'This guide extends and expands on PSR-1, the basic coding standard.' . PHP_EOL . | ||
216 | 'https://www.php-fig.org/psr/psr-1/' | ||
217 | ); | ||
215 | $bookmark->addAdditionalContentEntry( | 218 | $bookmark->addAdditionalContentEntry( |
216 | 'search_highlight', | 219 | 'search_highlight', |
217 | ['description' => [ | 220 | ['description' => [ |
218 | ['start' => 0, 'end' => 10], // "This guide" | 221 | ['start' => 0, 'end' => 10], // "This guide" |
219 | ['start' => 45, 'end' => 50], // basic | 222 | ['start' => 45, 'end' => 50], // basic |
220 | ['start' => 58, 'end' => 67], // standard. | 223 | ['start' => 58, 'end' => 67], // standard. |
224 | ['start' => 84, 'end' => 87], // fig | ||
221 | ]] | 225 | ]] |
222 | ); | 226 | ); |
223 | 227 | ||
@@ -226,7 +230,10 @@ class BookmarkDefaultFormatterTest extends TestCase | |||
226 | $this->assertSame( | 230 | $this->assertSame( |
227 | '<span class="search-highlight">This guide</span> extends and expands on PSR-1, the ' . | 231 | '<span class="search-highlight">This guide</span> extends and expands on PSR-1, the ' . |
228 | '<span class="search-highlight">basic</span> coding ' . | 232 | '<span class="search-highlight">basic</span> coding ' . |
229 | '<span class="search-highlight">standard.</span>', | 233 | '<span class="search-highlight">standard.</span><br />' . PHP_EOL . |
234 | '<a href="https://www.php-fig.org/psr/psr-1/">' . | ||
235 | 'https://www.php-<span class="search-highlight">fig</span>.org/psr/psr-1/' . | ||
236 | '</a>', | ||
230 | $link['description'] | 237 | $link['description'] |
231 | ); | 238 | ); |
232 | } | 239 | } |
diff --git a/tests/formatter/BookmarkMarkdownFormatterTest.php b/tests/formatter/BookmarkMarkdownFormatterTest.php index ab6b4080..32f7b444 100644 --- a/tests/formatter/BookmarkMarkdownFormatterTest.php +++ b/tests/formatter/BookmarkMarkdownFormatterTest.php | |||
@@ -133,6 +133,49 @@ class BookmarkMarkdownFormatterTest extends TestCase | |||
133 | } | 133 | } |
134 | 134 | ||
135 | /** | 135 | /** |
136 | * Make sure that the description is properly formatted by the default formatter. | ||
137 | */ | ||
138 | public function testFormatDescriptionWithSearchHighlight() | ||
139 | { | ||
140 | $description = 'This a <strong>description</strong>'. PHP_EOL; | ||
141 | $description .= 'text https://sub.domain.tld?query=here&for=real#hash more text'. PHP_EOL; | ||
142 | $description .= 'Also, there is an #hashtag added'. PHP_EOL; | ||
143 | $description .= ' A N D KEEP SPACES ! '. PHP_EOL; | ||
144 | $description .= 'And [yet another link](https://other.domain.tld)'. PHP_EOL; | ||
145 | |||
146 | $bookmark = new Bookmark(); | ||
147 | $bookmark->setDescription($description); | ||
148 | $bookmark->addAdditionalContentEntry( | ||
149 | 'search_highlight', | ||
150 | ['description' => [ | ||
151 | ['start' => 18, 'end' => 26], // cription | ||
152 | ['start' => 49, 'end' => 52], // sub | ||
153 | ['start' => 84, 'end' => 88], // hash | ||
154 | ['start' => 118, 'end' => 123], // hasht | ||
155 | ['start' => 203, 'end' => 215], // other.domain | ||
156 | ]] | ||
157 | ); | ||
158 | |||
159 | $link = $this->formatter->format($bookmark); | ||
160 | |||
161 | $description = '<div class="markdown"><p>'; | ||
162 | $description .= 'This a <strong>des<span class="search-highlight">cription</span></strong><br />' . | ||
163 | PHP_EOL; | ||
164 | $url = 'https://sub.domain.tld?query=here&for=real#hash'; | ||
165 | $highlighted = 'https://<span class="search-highlight">sub</span>.domain.tld'; | ||
166 | $highlighted .= '?query=here&for=real#<span class="search-highlight">hash</span>'; | ||
167 | $description .= 'text <a href="'. $url .'">'. $highlighted .'</a> more text<br />'. PHP_EOL; | ||
168 | $description .= 'Also, there is an <a href="./add-tag/hashtag">#<span class="search-highlight">hasht</span>' . | ||
169 | 'ag</a> added<br />'. PHP_EOL; | ||
170 | $description .= 'A N D KEEP SPACES !<br />' . PHP_EOL; | ||
171 | $description .= 'And <a href="https://other.domain.tld">' . | ||
172 | '<span class="search-highlight">yet another link</span></a>'; | ||
173 | $description .= '</p></div>'; | ||
174 | |||
175 | $this->assertEquals($description, $link['description']); | ||
176 | } | ||
177 | |||
178 | /** | ||
136 | * Test formatting URL with an index_url set | 179 | * Test formatting URL with an index_url set |
137 | * It should prepend relative links. | 180 | * It should prepend relative links. |
138 | */ | 181 | */ |