Code Duplication    Length = 15-34 lines in 3 locations

lib/markdown/markdown.php 1 location

@@ 372-405 (lines=34) @@
369
		"doBlockQuotes"     => 60,
370
	);
371
372
	function stripLinkDefinitions($text) {
373
	#
374
	# Strips link definitions from text, stores the URLs and titles in
375
	# hash references.
376
	#
377
		$less_than_tab = $this->tab_width - 1;
378
379
		# Link defs are in the form: ^[id]: url "optional title"
380
		$text = preg_replace_callback('{
381
							^[ ]{0,'.$less_than_tab.'}\[(.+)\][ ]?:	# id = $1
382
							  [ ]*
383
							  \n?				# maybe *one* newline
384
							  [ ]*
385
							(?:
386
							  <(.+?)>			# url = $2
387
							|
388
							  (\S+?)			# url = $3
389
							)
390
							  [ ]*
391
							  \n?				# maybe one newline
392
							  [ ]*
393
							(?:
394
								(?<=\s)			# lookbehind for whitespace
395
								["(]
396
								(.*?)			# title = $4
397
								[")]
398
								[ ]*
399
							)?	# title is optional
400
							(?:\n+|\Z)
401
			}xm',
402
			array(&$this, '_stripLinkDefinitions_callback'),
403
			$text);
404
		return $text;
405
	}
406
	function _stripLinkDefinitions_callback($matches) {
407
		$link_id = strtolower($matches[1]);
408
		$url = $matches[2] == '' ? $matches[3] : $matches[2];

lib/markdown/markdown_extras.php 2 locations

@@ 1005-1031 (lines=27) @@
1002
1003
	### Footnotes
1004
1005
	function stripFootnotes($text) {
1006
	#
1007
	# Strips link definitions from text, stores the URLs and titles in
1008
	# hash references.
1009
	#
1010
		$less_than_tab = $this->tab_width - 1;
1011
1012
		# Link defs are in the form: [^id]: url "optional title"
1013
		$text = preg_replace_callback('{
1014
			^[ ]{0,'.$less_than_tab.'}\[\^(.+?)\][ ]?:	# note_id = $1
1015
			  [ ]*
1016
			  \n?					# maybe *one* newline
1017
			(						# text = $2 (no blank lines allowed)
1018
				(?:
1019
					.+				# actual text
1020
				|
1021
					\n				# newlines but
1022
					(?!\[\^.+?\]:\s)# negative lookahead for footnote marker.
1023
					(?!\n+[ ]{0,3}\S)# ensure line is not blank and followed
1024
									# by non-indented content
1025
				)*
1026
			)
1027
			}xm',
1028
			array(&$this, '_stripFootnotes_callback'),
1029
			$text);
1030
		return $text;
1031
	}
1032
	function _stripFootnotes_callback($matches) {
1033
		$note_id = $this->fn_id_prefix . $matches[1];
1034
		$this->footnotes[$note_id] = $this->outdent($matches[2]);
@@ 1146-1160 (lines=15) @@
1143
1144
	### Abbreviations ###
1145
1146
	function stripAbbreviations($text) {
1147
	#
1148
	# Strips abbreviations from text, stores titles in hash references.
1149
	#
1150
		$less_than_tab = $this->tab_width - 1;
1151
1152
		# Link defs are in the form: [id]*: url "optional title"
1153
		$text = preg_replace_callback('{
1154
			^[ ]{0,'.$less_than_tab.'}\*\[(.+?)\][ ]?:	# abbr_id = $1
1155
			(.*)					# text = $2 (no blank lines allowed)
1156
			}xm',
1157
			array(&$this, '_stripAbbreviations_callback'),
1158
			$text);
1159
		return $text;
1160
	}
1161
	function _stripAbbreviations_callback($matches) {
1162
		$abbr_word = $matches[1];
1163
		$abbr_desc = $matches[2];