55 lines
1.4 KiB
Sed
Executable File
55 lines
1.4 KiB
Sed
Executable File
#!/bin/sed -nsf
|
|
|
|
# begin of file, declare file
|
|
1{
|
|
/@file/!{ # no file definition yet, add it
|
|
x
|
|
s,^, @file\n,
|
|
x
|
|
}
|
|
}
|
|
|
|
# line with doxygen comment (defined as ## at begin of line)
|
|
/^##\( \|$\)/{
|
|
s/##\( \|$\)/ / # replace ## comments by 4 spaces indent
|
|
H; d # hold, evaluate later
|
|
}
|
|
|
|
# variable definition
|
|
/^set/{
|
|
x
|
|
s,$, */, # append end of comment
|
|
x
|
|
s,^set \+\([^ =]\+\) *\=\? *\(.*\)\?,void \1;\n,
|
|
H
|
|
s,^void ,/** @var , # prepend function decl
|
|
s,;$,,
|
|
G # append hold buffer
|
|
p; z; x; d # clear buffer, next line
|
|
}
|
|
|
|
# function definition
|
|
/^function/{
|
|
x
|
|
s,$, */, # append end of comment
|
|
x
|
|
s,^function \+\([^ ]\+\) *\(.*\)\?,void \1(\2);\n,
|
|
H
|
|
s,^void ,/** @def , # prepend function decl
|
|
s,;$,,
|
|
G # append hold buffer
|
|
p; z; x; d # clear buffer, next line
|
|
}
|
|
|
|
# default for non matching lines - print buffer
|
|
{
|
|
z; x; # get and clear buffer
|
|
/^$/!{ # only if buffer is not empty
|
|
s,^\n,, # remove first newline
|
|
s,^\( \)\?,/** , # prepend doxygen comment start
|
|
s,$, */\n, # append end of comment
|
|
p; d
|
|
}
|
|
}
|
|
|