On 20.02.2020 23:20, P.O. Jonsson wrote:
> This is just to inform that I have managed to inject Erich Rexx script in my 
> build chain so that
> my built documents should now be 100% the same as yours and the ones built by 
> Erich or Rick. I
> could only test it on rexxref.pdf but that is a beast and if it works there 
> the rest should be ok.
>
> Removing the additional spaces shrunk rexxref.pdf with 10 pages and ooDialog 
> with 182 pages !
> ooDialog.pdf is now „only“ 1898 pages :-)

The following program needs to be run from "oorexx/doc/trunk" and will replace 
leading and trailing
empty lines in the content of "programlisting" elements which are probably the 
cause for the blank
lines.

If you then run the documentation generation, then those blank lines should not 
show up anymore.

Program "stripBlankLinesFromProgramlistingElements.rex" that removes leading 
and trailing CR-LF from
programlistings. Run it in the doc-branch you want to work with, e.g. from 
"oorexx/doc/trunk":

    ---rgf, 2020-02-02: strip CR-LF from ooRexx xml program listings
    start=.dateTime~new
    call sysfiletree "*.xml", "files.", "FOS"
    end =.dateTime~new
    say "SysFileTree duration:" end-start", about to process" files.0 "files"

    len=files.0~length
    do i=1 to files.0
       say i~right(len)":" files.i
       call stripBlankLines files.i
    end
    end =.dateTime~new
    say "processed" .count~counter "<programlisting> elements, duration:" 
end-start

    ::routine stripBlankLines
       parse arg fileName

       inStr=.stream~new(fileName)~~open("read")
       chars=inStr~chars
       allChars=inStr~charin(1,chars)
       inStr~close

       startNeedle="<programlisting>"
       endNeedle  ="</programlisting>"
       crlf       ="0d0a"x
       mbOut=.mutableBuffer~new(,chars)

       do while allChars<>""
          parse var allChars before (startNeedle) program (endNeedle) allChars
          if program="" then
          do
             if allChars="" then  -- arrived at end of file
                mbOut~append(before)
             else  -- maybe a placeholder of whitespace
                mbOut~append(before, startNeedle, program, endNeedle)
          end
          else     -- strip leading and trailing CR-LF characters
          do
             mbOut~append(before, startNeedle, program~strip("both",crlf), 
endNeedle)
             .count~increase
          end
       end

          -- write new file
       .stream~new(fileName)~~open("write replace")~~charout(mbOut~string)~close


    ::class count
    ::attribute counter class

    ::method    init   class
      expose counter
      counter=0

    ::method    increase class
      expose counter
      counter+=1

If something would go wrong, then you could always re-instate the original 
version of the
documentation by issuing an "svn revert" command, so testing the above program 
should be safe from
that respect as well.

Could you try that out and report whether it solved the empty line problem? 
(The program can be run
repeatedly, in the case that new programlisting-code gets added to the 
documentation and there is a
need to remove leading and trailing empty lines again.)

---rony


 

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to