[ewiki] Re: Custom link formats

Ok, I've almost got it. I'm having a problem, though. The Wiki source below 
returns the output, further below. The first item is fine, the second item is 
doubled, the third item is tripled & the fourth... I obviously don't quite 
get what's going on here. If I got it right (obviously I didn't!) the regex's 
go from most strict to least, so each option should only match once. Once 
they match, the [! ] markup will be replaced, so I don't get why things are 
being duplicated. Can anyone spot where I went wrong?


The Wiki source:
*[!http://www.amazon.com | Amazon]
*[!Wikiness | Wiki Details]
*[!http://www.dawgdayz.com]
*[!Wikiness]


The output:
<li><a href="www.amazon.com" target="_SELF">Amazon</a></li>
<li><a href="Wikiness" target="_SELF">Wiki Details</a><a 
href="index.php?page=Wikiness" target="_SELF">Wiki Details</a></li>
<li><a href="www.dawgdayz.com" target="_SELF"></a><a 
href="index.php?page=www.dawgdayz.com" target="_SELF"></a><a 
href="www.dawgdayz.com" target="_SELF">www.dawgdayz.com</a></li>
<li><a href="Wikiness" target="_SELF"></a><a href="index.php?page=Wikiness" 
target="_SELF"></a><a href="Wikiness" target="_SELF">Wikiness</a><a 
href="index.php?page=Wikiness" Target="_SELF">Wikiness</a>  </li>


And, the php code:
<?php
$ewiki_plugins["format_source"][] = "ewiki_format_source_selflinks";

function ewiki_format_source_selflinks (&$src) {
# http url with title
        $rx = "/\[!http:\/\/(.*?) \| (.*?)]/";
        $rep .=  "<a href=\"$1\" target=\"_SELF\">$2</a>";
        $src = preg_replace( $rx, $rep, $src);  
# Wikiword with specified title 
        $rx = "/\[!(.*?) \| (.*?)]/";
        $rep .=  "<a href=\"index.php?page=$1\" target=\"_SELF\">$2</a>";
        $src = preg_replace( $rx, $rep, $src);
# http url without title
        $rx = "/\[!http:\/\/(.*?)]/";
        $rep .=  "<a href=\"$1\" target=\"_SELF\">$1</a>";
        $src = preg_replace( $rx, $rep, $src);
# Wikiword without specified title      
        $rx = "/\[!(.*?)]/";
        $rep .=  "<a href=\"index.php?page=$1\" Target=\"_SELF\">$1</a>";
        $src = preg_replace( $rx, $rep, $src);
}
?>

On Saturday 27 November 2004 4:47 pm, Mike Payson wrote:
> I'm working on a wiki that will be used in the browser sidebar as a
> cross-platform, multi-computer bookmark & notekeeping tool. To make this
> work, I need to add two custom link formats.
>
> First, I need to be able to specify that certain links will include a
> 'target="_SELF"' attribute. My plan is to use a syntax such as [!WikiWord]
> for these links (these will usually be wikiwords, but may occasionally be
> external links). The second format would tell the wiki to retrieve the site
> icon for external links and display it.
>
> I can code these, but I'm somewhat baffled as to where to begin. Are there
> any plugins that do anything similar that I can use as an example of how to
> do this? If not, can someone give me any pointers?
>
> Thanks!

Other related posts: