Doxygen helper script
authorColin Clark <colin.clark@cclark.uk>
Wed, 24 Mar 2021 12:49:48 +0000 (12:49 +0000)
committerColin Clark <colin.clark@cclark.uk>
Wed, 24 Mar 2021 12:49:48 +0000 (12:49 +0000)
The script may be used to integrate the Doxygen html files into a code
editor.
Set a code editor hot key to pass a variable or function name to the
script. The relevant Doxygen file will be displayed in a browser window.

CODING
scripts/doxygen-help.sh [new file with mode: 0755]

diff --git a/CODING b/CODING
index 51debff..7894751 100644 (file)
--- a/CODING
+++ b/CODING
@@ -213,3 +213,6 @@ can use see http://www.stack.nl/~dimitri/doxygen/commands.html.
 
 But in case just think about that the documentation is for other developers not
 for the end user. So keep the focus.
+
+The file ./scripts/doxygen-help.sh may be used to integrate access to the
+Doxygen files into a code editor.
diff --git a/scripts/doxygen-help.sh b/scripts/doxygen-help.sh
new file mode 100755 (executable)
index 0000000..85db88b
--- /dev/null
@@ -0,0 +1,101 @@
+#!/bin/bash
+
+#**********************************************************************
+# Copyright (C) 2021 - The Geeqie Team
+#
+# Author: Colin Clark
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#**********************************************************************
+#
+# Facilitate the integration of the Doxygen html files
+# into a code editor.
+#
+# doxygen-help.sh <parameter to be searched for>
+#
+# The environment variable DOCDIR must be set to point to the
+# Doxygen html files location.
+# The environment variable PROJECT must be set to the value used
+# when creating the Doxygen files.
+#
+# Set a hot key in the code editor to call this script with
+# the highlighted variable or function name as a parameter.
+#
+# The file $DOCDIR/$PROJECT.tag contains an index of all documented
+# items and is scanned to locate the relevant html section.
+#
+# xdg-open is used to call the html browser to display the document.
+#
+#**********************************************************************
+#
+# To generate the Doxygen html files set the following
+# environment variables:
+# DOCDIR (destination folder)
+# SRCDIR (must point to the level above the source code)
+# PROJECT
+# VERSION
+#
+# Then run 'doxygen doxygen.conf'
+
+if [[ -z "${DOCDIR}" ]]
+then
+       echo "Environment variable DOCDIR not set"
+       zenity --title="Geeqie" --width=200 --warning --text="Environment variable DOCDIR not set"
+elif [[ -z "${PROJECT}" ]]
+then
+       echo "Environment variable PROJECT not set"
+       zenity --title="Geeqie" --width=200 --warning --text="Environment variable PROJECT not set"
+else
+       awk  -v search_param="$1" -v docdir="$DOCDIR" '
+               {
+               if ($1 ==  "<name>_"search_param"</name>")
+                       {
+                       found=0
+                       while (found == 0)
+                               {
+                               getline
+                               n=split($1, anchorfile, /[<>]/)
+                               if (anchorfile[2] == "anchorfile")
+                                       {
+                                       found=1
+                                       }
+                               }
+                       data_result="file://"docdir"/html/" anchorfile[3]
+                       }
+               else
+                       {
+                       if ($1 == "<name>"search_param"</name>")
+                               {
+                               getline
+                               n=split($1, anchorfile, /[<>]/)
+
+                               getline
+                               n=split($1, anchor, /[<>]/)
+                               function_result="file://"docdir"/html/" anchorfile[3] "#" anchor[3]
+                               }
+                       }
+               }
+               END {
+                       if (data_result != "")
+                               {
+                               print data_result
+                               }
+                       else if (function_result != "")
+                               {
+                               print function_result
+                               }
+                       }
+               ' $DOCDIR/$PROJECT.tag | while read -r file; do xdg-open "$file"; done
+fi