1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | www.openfoam.com
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM 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 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# doxyFilter.awk
#
# Description
# Converts cocoon style sentinel strings into doxygen style strings
#
# Assumes comment strings are formatted as follows
# //- General description
# //- with a continuation of general description
# // Detailed description
# // with more particulars
# This should be re-formatted as the following
# /*!
# * \brief General description
# * with a continuation of general description
# *
# * Detailed description
# * with more particulars
# */
#------------------------------------------------------------------------------
# state: 0=normal, 1=brief, 2=details
# indent: whitespace content prior to the opening "//-"
BEGIN {
state = 0
indent = ""
}
/^\s*\/\/-/ {
if (state == 0)
{
# Changed from normal to brief (start of comment block)
## indent = substr($0, 1, index($0, "/")-1)
indent = $0
sub(/\S.*/, "", indent)
printf indent "/*!\n"
printf indent " * \\brief "
sub(/^\s*\/\/-\s*/, "")
state = 1
}
else
{
# Within brief: replace leading space with proper indent amount
printf indent
sub(/^\s*\/\/-\s*/, " * ")
}
print
next
}
/^\s*\/\// {
if (state == 1)
{
# Change from brief to details. Extra line to start new paragraph.
printf indent " *\n"
state = 2
}
if (state == 2)
{
# Within details
printf indent
# '//' with 4 spaces or more - assume indent is intentional
if (match($0, /^\s*\/\/( )+/))
{
sub(/^\s*\/\/\s/, " *")
}
else
{
sub(/^\s*\/\/\s*/, " * ")
}
}
print
next
}
{
# End comment filtering
if (state)
{
printf indent " */\n"
state = 0
}
print
next
}
#------------------------------------------------------------------------------
|