| @@ 510-579 (lines=70) @@ | ||
| 507 | } |
|
| 508 | ||
| 509 | ||
| 510 | protected function doAnchors($text) { |
|
| 511 | # |
|
| 512 | # Turn Markdown link shortcuts into XHTML <a> tags. |
|
| 513 | # |
|
| 514 | if ($this->in_anchor) return $text; |
|
| 515 | $this->in_anchor = true; |
|
| 516 | ||
| 517 | # |
|
| 518 | # First, handle reference-style links: [link text] [id] |
|
| 519 | # |
|
| 520 | $text = preg_replace_callback('{ |
|
| 521 | ( # wrap whole match in $1 |
|
| 522 | \[ |
|
| 523 | ('.$this->nested_brackets_re.') # link text = $2 |
|
| 524 | \] |
|
| 525 | ||
| 526 | [ ]? # one optional space |
|
| 527 | (?:\n[ ]*)? # one optional newline followed by spaces |
|
| 528 | ||
| 529 | \[ |
|
| 530 | (.*?) # id = $3 |
|
| 531 | \] |
|
| 532 | ) |
|
| 533 | }xs', |
|
| 534 | array(&$this, '_doAnchors_reference_callback'), $text); |
|
| 535 | ||
| 536 | # |
|
| 537 | # Next, inline-style links: [link text](url "optional title") |
|
| 538 | # |
|
| 539 | $text = preg_replace_callback('{ |
|
| 540 | ( # wrap whole match in $1 |
|
| 541 | \[ |
|
| 542 | ('.$this->nested_brackets_re.') # link text = $2 |
|
| 543 | \] |
|
| 544 | \( # literal paren |
|
| 545 | [ \n]* |
|
| 546 | (?: |
|
| 547 | <(.+?)> # href = $3 |
|
| 548 | | |
|
| 549 | ('.$this->nested_url_parenthesis_re.') # href = $4 |
|
| 550 | ) |
|
| 551 | [ \n]* |
|
| 552 | ( # $5 |
|
| 553 | ([\'"]) # quote char = $6 |
|
| 554 | (.*?) # Title = $7 |
|
| 555 | \6 # matching quote |
|
| 556 | [ \n]* # ignore any spaces/tabs between closing quote and ) |
|
| 557 | )? # title is optional |
|
| 558 | \) |
|
| 559 | ) |
|
| 560 | }xs', |
|
| 561 | array(&$this, '_doAnchors_inline_callback'), $text); |
|
| 562 | ||
| 563 | # |
|
| 564 | # Last, handle reference-style shortcuts: [link text] |
|
| 565 | # These must come last in case you've also got [link text][1] |
|
| 566 | # or [link text](/foo) |
|
| 567 | # |
|
| 568 | $text = preg_replace_callback('{ |
|
| 569 | ( # wrap whole match in $1 |
|
| 570 | \[ |
|
| 571 | ([^\[\]]+) # link text = $2; can\'t contain [ or ] |
|
| 572 | \] |
|
| 573 | ) |
|
| 574 | }xs', |
|
| 575 | array(&$this, '_doAnchors_reference_callback'), $text); |
|
| 576 | ||
| 577 | $this->in_anchor = false; |
|
| 578 | return $text; |
|
| 579 | } |
|
| 580 | protected function _doAnchors_reference_callback($matches) { |
|
| 581 | $whole_match = $matches[1]; |
|
| 582 | $link_text = $matches[2]; |
|
| @@ 2206-2276 (lines=71) @@ | ||
| 2203 | } |
|
| 2204 | ||
| 2205 | ||
| 2206 | protected function doAnchors($text) { |
|
| 2207 | # |
|
| 2208 | # Turn Markdown link shortcuts into XHTML <a> tags. |
|
| 2209 | # |
|
| 2210 | if ($this->in_anchor) return $text; |
|
| 2211 | $this->in_anchor = true; |
|
| 2212 | ||
| 2213 | # |
|
| 2214 | # First, handle reference-style links: [link text] [id] |
|
| 2215 | # |
|
| 2216 | $text = preg_replace_callback('{ |
|
| 2217 | ( # wrap whole match in $1 |
|
| 2218 | \[ |
|
| 2219 | ('.$this->nested_brackets_re.') # link text = $2 |
|
| 2220 | \] |
|
| 2221 | ||
| 2222 | [ ]? # one optional space |
|
| 2223 | (?:\n[ ]*)? # one optional newline followed by spaces |
|
| 2224 | ||
| 2225 | \[ |
|
| 2226 | (.*?) # id = $3 |
|
| 2227 | \] |
|
| 2228 | ) |
|
| 2229 | }xs', |
|
| 2230 | array(&$this, '_doAnchors_reference_callback'), $text); |
|
| 2231 | ||
| 2232 | # |
|
| 2233 | # Next, inline-style links: [link text](url "optional title") |
|
| 2234 | # |
|
| 2235 | $text = preg_replace_callback('{ |
|
| 2236 | ( # wrap whole match in $1 |
|
| 2237 | \[ |
|
| 2238 | ('.$this->nested_brackets_re.') # link text = $2 |
|
| 2239 | \] |
|
| 2240 | \( # literal paren |
|
| 2241 | [ \n]* |
|
| 2242 | (?: |
|
| 2243 | <(.+?)> # href = $3 |
|
| 2244 | | |
|
| 2245 | ('.$this->nested_url_parenthesis_re.') # href = $4 |
|
| 2246 | ) |
|
| 2247 | [ \n]* |
|
| 2248 | ( # $5 |
|
| 2249 | ([\'"]) # quote char = $6 |
|
| 2250 | (.*?) # Title = $7 |
|
| 2251 | \6 # matching quote |
|
| 2252 | [ \n]* # ignore any spaces/tabs between closing quote and ) |
|
| 2253 | )? # title is optional |
|
| 2254 | \) |
|
| 2255 | (?:[ ]? '.$this->id_class_attr_catch_re.' )? # $8 = id/class attributes |
|
| 2256 | ) |
|
| 2257 | }xs', |
|
| 2258 | array(&$this, '_doAnchors_inline_callback'), $text); |
|
| 2259 | ||
| 2260 | # |
|
| 2261 | # Last, handle reference-style shortcuts: [link text] |
|
| 2262 | # These must come last in case you've also got [link text][1] |
|
| 2263 | # or [link text](/foo) |
|
| 2264 | # |
|
| 2265 | $text = preg_replace_callback('{ |
|
| 2266 | ( # wrap whole match in $1 |
|
| 2267 | \[ |
|
| 2268 | ([^\[\]]+) # link text = $2; can\'t contain [ or ] |
|
| 2269 | \] |
|
| 2270 | ) |
|
| 2271 | }xs', |
|
| 2272 | array(&$this, '_doAnchors_reference_callback'), $text); |
|
| 2273 | ||
| 2274 | $this->in_anchor = false; |
|
| 2275 | return $text; |
|
| 2276 | } |
|
| 2277 | protected function _doAnchors_reference_callback($matches) { |
|
| 2278 | $whole_match = $matches[1]; |
|
| 2279 | $link_text = $matches[2]; |
|