<?php if (!defined('PmWiki')) exit(); /* Hlink: Create hierarchical link * @author Michael Eager <eager at eagercon dot com> * @license http://www.gnu.org/licenses/gpl.html GNU General Public License * * Requirements: UTF-8 must be enabled. */ $RecipeInfo['Hlink']['Version'] = '2020-04-27'; SDV($HlinkSeparator, "\u{00bb}"); // Right-pointing double angle quote global $GUIButtons; $GUIButtons['rightangle'] = array(660, "\u{00bb}", '', '', '$GUIButtonDirUrlFmt/rightangle.gif"$[Hierarchical seperator]"'); Markup('hlink', '<links', "/\[\[\*([^\]]*)\]\]/", "Hlink"); function Hlink($m) { extract($GLOBALS['MarkupToHTML']); global $HlinkSeparator; $target = $m[1]; preg_match('/^(.*)\.([^.]+)$/', $pagename, $match); $thispage = $match[2]; if (preg_match('/^([^|]*)\h*\|\h*(.*)$/', $target, $match)) { $target = $match[1]; $gloss = $match[2]; } else { $gloss = $target; } $newpage = "$thispage$HlinkSeparator$target"; $newpagename = MakePageName($pagename, $newpage); $out = "[[$newpage | $gloss]]"; return $out; } Markup('hbreadcrumb', '<{$var}', '/\\(:hbreadcrumbs?:\\)/i', 'hBreadCrumb'); function hBreadCrumb($m) { extract($GLOBALS['MarkupToHTML']); global $HlinkSeparator; $match = preg_split('/\./', $pagename); $group = $match[0]; $page = $match[1]; preg_match_all("/([^$HlinkSeparator]+)/u", $page, $matches); $out = "[[$group/|$group]]"; $cum = ""; foreach ($matches[0] as $seg) { $out .= '>' . "[[$group.$cum$seg|$seg]]"; $cum .= $seg . $HlinkSeparator; } return $out; }