[Libreoffice] Test script patch review request (1)

Yifan Jiang yfjiang at novell.com
Mon Jan 3 22:01:39 PST 2011


Hi Tor,

Thanks a lot for reviewing and the comments, I haven't even known the
'(un)expand' until you told :) To make it concise, do you think it is enough
to replace 'Inital' Tabs with 4 space characters, while change other tabs with
1 space character. In addition the trailing spaces could be removed at the
same time as the final step.

Here is the method I intend to update the patch, your further comments are
appreciated, thank you!

step 1. Replace Initial tabs with 4 space characters:

    $ cat /tmp/tabfile | while read fn ; do expand -i -t 4 $fn > /tmp/no_initabfile; mv /tmp/no_initabfile $fn; done

step 2. Replace all tabs in the middle/at the end of code with 1 space character:

    $ cat /tmp/tabfile | while read fn; do expand -t 1 $fn > /tmp/no_tabfile; mv /tmp/no_tabfile $fn; done

step 3. Remove all trailing spaces stepping through inc and bas files:

    $ find | grep -e bas$  -e inc$ | while read fn; do sed -r 's/ +$//' $fn > /tmp/no_trailingspaces ; mv /tmp/no_trailingspaces $fn; done

Best wishes,
Yifan
    

On Mon, Jan 03, 2011 at 04:51:28AM -0700, Tor Lillqvist wrote:
> >         cat /tmp/tabfile | sed 's/	/    /' > /tmp/notabfile;
> 
> Sorry, but just replacing every TAB character with a fixed number (in this case, four) of SPACE characters is incorrect. To properly expand TAB characters, each TAB needs to be replaced with a variable number of SPACE characters, depending on which column the TAB is in.
> 
> For instance if you have a line:
> 
> foo	bar
> 
> (i.e. "foo", a TAB, and "bar"), the TAB should be replaced with just one SPACE. (Assuming the intended tab width is four columns, as it is in OOo/LO. Note that traditionally the tab width is eight columns.) 
> 
> (Also, you would want to use the "g" modifier in the sed 's' command to replace every TAB on each line, not just the first.)
> 
> Anyway, the "expand" command is the right tool to expand tabs.
> 
> P.S. Your script can be written much simpler, no need to use "cat" so much:
> 
> while read fn </tmp/tabs.auto.filelist.txt; do
>     sed 's/	/    /g' < $fn > /tmp/notabfile
>     mv /tmp/notabfile $fn
> done
> 
> (Here still incorrectly using "sed" and not "expand".) 
> 
> --tml
> 


More information about the LibreOffice mailing list