From 9afbd25b64607e68fe6275fb6b743159001ca984 Mon Sep 17 00:00:00 2001 From: peb Date: Wed, 9 Feb 2005 19:45:54 +0000 Subject: "Committed_by_peb" --- src/haddock/haddock-check.perl | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/haddock/haddock-check.perl (limited to 'src/haddock') diff --git a/src/haddock/haddock-check.perl b/src/haddock/haddock-check.perl new file mode 100644 index 000000000..cea2a6cb1 --- /dev/null +++ b/src/haddock/haddock-check.perl @@ -0,0 +1,46 @@ + +# checking that a file is haddocky + +# limitations: +# - does not check that 'type' declarations really are put in the export list +# - there might be some problems with nested comments + +for $file (@ARGV) { + $file =~ s/\.hs//; + + open F, "<$file.hs"; + $_ = join "", ; + close F; + + # print "- $file\n"; + + # removing comments: + s/\{-.*?-\}//gs; + s/--.*?\n/\n/g; + + # export list: + if (/\nmodule\s+(\w+)\s+\((.*?)\)\s+where/s) { + ($module, $exportlist) = ($1, $2); + + # removing modules from exportlist: + $exportlist =~ s/module\s+[A-Z]\w*//gs; + + # type signatures: + while (/\n([a-z]\w*)\s*::/gs) { + $function = $1; + $exportlist =~ s/\b$function\b//; + } + + while ($exportlist =~ /\b(\w+)\b/gs) { + $function = $1; + next if $function =~ /^[A-Z]/; + printf "%-30s | No type signature for '%s'\n", $file, $1; + } + + } else { + printf "%-30s | No export list\n", $file; + } + +} + + -- cgit v1.2.3