<?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;
}