commandref_split.pl 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my @lang = ("EN", "DE");
  5. my @modDir = ("FHEM");
  6. my %mods;
  7. foreach my $modDir (@modDir) {
  8. opendir(DH, $modDir) || die "Cant open $modDir: $!\n";
  9. while(my $l = readdir DH) {
  10. next if($l !~ m/^\d\d_.*\.pm$/);
  11. my $of = $l;
  12. $l =~ s/.pm$//;
  13. $l =~ s/^[0-9][0-9]_//;
  14. $mods{lc($l)} = "$modDir/$of" if(!$mods{lc($l)});
  15. }
  16. }
  17. my %doc;
  18. my %fnd;
  19. my $modFileName;
  20. foreach my $lang (@lang) {
  21. my $suffix = ($lang eq "EN" ? "" : "_$lang");
  22. my $docIn = "docs/commandref$suffix.html";
  23. my $docOut = "docs/commandref_frame$suffix.html";
  24. #my @modDir = ("FHEM", "contrib", "webfrontend/pgm5");
  25. open(IN, "$docIn") || die "Cant open $docIn: $!\n";
  26. open(OUT, ">$docOut") || die "Cant open $docOut: $!\n";
  27. my $content = "";
  28. my $skipping;
  29. while(my $l = <IN>) {
  30. $l =~ s/[\r\n]//g;
  31. if($l =~ m,^<a name="(.*)"></a>$,) {
  32. if($modFileName) {
  33. $doc{$modFileName}{$lang} = $content;
  34. $content = "";
  35. }
  36. my $mod = lc($1);
  37. if($mods{$mod}) {
  38. print "Double-Fnd: $mod\n" if($fnd{$mod});
  39. $fnd{$mod} = 1;
  40. $modFileName = $mods{$mod};
  41. } else {
  42. print "Not a module: $mod\n" if($lang eq "EN");
  43. $modFileName = "";
  44. }
  45. }
  46. if($l =~ m,href="#global",) {
  47. print OUT "$l\n";
  48. $skipping = 1;
  49. next;
  50. }
  51. $skipping = 0 if($skipping && $l =~ m,</ul>,);
  52. next if($skipping);
  53. if($modFileName){
  54. $content .= "$l\n";
  55. } else {
  56. print OUT "$l\n";
  57. }
  58. }
  59. }
  60. foreach my $mod (sort {$mods{$a} cmp $mods{$b}} keys %mods) {
  61. print "Missing doc for $mods{$mod}\n" if(!$fnd{$mod});
  62. $modFileName = $mods{$mod};
  63. open(IN, "$modFileName") || die("$modFileName: $!\n");
  64. open(OUT, ">$modFileName.NEW") || die("$modFileName.NEW: $!\n");
  65. while(my $l = <IN>) {
  66. print OUT $l;
  67. if($l =~ m/^1;/) {
  68. if($doc{$modFileName}) {
  69. print OUT "\n=pod\n\n";
  70. foreach my $lang (@lang) {
  71. next if(!$doc{$modFileName}{$lang});
  72. my $suffix = ($lang eq "EN" ? "" : "_$lang");
  73. print OUT "=begin html$suffix\n\n";
  74. print OUT $doc{$modFileName}{$lang};
  75. print OUT "=end html$suffix\n\n";
  76. }
  77. print OUT "=cut\n";
  78. }
  79. last;
  80. }
  81. }
  82. close(IN);
  83. close(OUT);
  84. rename("$modFileName.NEW", $modFileName);
  85. }