Commit 6bb9ee4f authored by Dimitri van Heesch's avatar Dimitri van Heesch
Browse files

Allow @ref to unlabeled markdown page by name, i.e. @ref mypage.md

parent 57f1a23a
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -445,6 +445,12 @@ when processed by doxygen:

    Documentation that will appear on the main page

If a page has a label you can link to it using \ref cmdref "\@ref" as 
is shown above. To refer to a markdown page without
such label you can simple use the file name of the page, e.g.

    See [the other page](@ref other.md) for more info.

\subsection md_html_blocks Treatment of HTML blocks

Markdown is quite strict in the way it processes block-level HTML:
+6 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@
#include "formula.h"
#include "config.h"
#include "growbuf.h"
#include "markdown.h"

// debug off
#define DBG(x) do {} while(0)
@@ -2417,8 +2418,13 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) :
  QCString     anchor;
  //printf("DocRef::DocRef(target=%s,context=%s)\n",target.data(),context.data());
  ASSERT(!target.isEmpty());
  SrcLangExt lang = getLanguageFromFileName(target);
  m_relPath = g_relPath;
  SectionInfo *sec = Doxygen::sectionDict->find(target);
  if (sec==0 && lang==SrcLangExt_Markdown) // lookup as markdown file
  {
    sec = Doxygen::sectionDict->find(markdownFileNameToId(target));
  }
  if (sec) // ref to section or anchor
  {
    PageDef *pd = 0;
+10 −6
Original line number Diff line number Diff line
@@ -2249,6 +2249,15 @@ QCString processMarkdown(const QCString &fileName,Entry *e,const QCString &input

//---------------------------------------------------------------------------

QCString markdownFileNameToId(const QCString &fileName)
{
  QCString baseFn  = stripFromPath(QFileInfo(fileName).absFilePath().utf8());
  int i = baseFn.findRev('.');
  if (i!=-1) baseFn = baseFn.left(i);
  QCString baseName = substitute(substitute(baseFn," ","_"),"/","_");
  return "md_"+baseName;
}

void MarkdownFileParser::parseInput(const char *fileName, 
                const char *fileBuf, 
                Entry *root,
@@ -2270,15 +2279,10 @@ void MarkdownFileParser::parseInput(const char *fileName,
  QCString docs = output.data();
  QCString id;
  QCString title=extractPageTitle(docs,id).stripWhiteSpace();
  //g_correctSectionLevel = !title.isEmpty();
  QCString baseFn  = stripFromPath(QFileInfo(fileName).absFilePath().utf8());
  int i = baseFn.findRev('.');
  if (i!=-1) baseFn = baseFn.left(i);
  QCString titleFn = QFileInfo(fileName).baseName().utf8();
  QCString fn      = QFileInfo(fileName).fileName().utf8();
  QCString baseName = substitute(substitute(baseFn," ","_"),"/","_");
  static QCString mdfileAsMainPage = Config_getString("USE_MDFILE_AS_MAINPAGE");
  if (id.isEmpty()) id = "md_"+baseName;
  if (id.isEmpty()) id = markdownFileNameToId(fileName); 
  if (title.isEmpty()) title = titleFn;
  if (fn==mdfileAsMainPage)
  {
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ class Entry;

/** processes string \a s and converts markdown into doxygen/html commands. */
QCString processMarkdown(const QCString &fileName,Entry *e,const QCString &s);
QCString markdownFileNameToId(const QCString &fileName);

class MarkdownFileParser : public ParserInterface
{