Eskil

Check-in [c7a4f0afc3]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Autodetect table separator earlier
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: c7a4f0afc31f4bef1d8b03e40daee1b465a76b3c
User & Date: peter 2015-11-22 21:42:42.416
Context
2015-11-22
21:49
More info in About win check-in: c5f31c6de2 user: peter tags: trunk
21:42
Autodetect table separator earlier check-in: c7a4f0afc3 user: peter tags: trunk
21:24
Documented new plugin features. Adapted plugins. check-in: 51257da3b3 user: peter tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to htdocs/table.wiki.
14
15
16
17
18
19
20
21
22
<verbatim>
eskil -table -sep '\t' apa1.csv apa2.csv
</verbatim>

Eskil has a built in plugin, csv, than can preprocess table files. This example clears the "Short" and "Long" columns before comparison:

<verbatim>
eskil -table apa1.csv apa2.csv -block -sep '\t' -plugin csv -plugininfo "-ignore {Short Long}"
</verbatim>







|

14
15
16
17
18
19
20
21
22
<verbatim>
eskil -table -sep '\t' apa1.csv apa2.csv
</verbatim>

Eskil has a built in plugin, csv, than can preprocess table files. This example clears the "Short" and "Long" columns before comparison:

<verbatim>
eskil -table apa1.csv apa2.csv -block -sep '\t' -plugin csv -csvignore "Short Long"
</verbatim>
Changes to src/eskil.tcl.
1493
1494
1495
1496
1497
1498
1499















1500
1501
1502
1503
1504
1505
1506
    set ::eskil($top,cleanup) {}
    if {$::eskil($top,mode) eq "rev"} {
        prepareRev $top
        lappend ::eskil($top,cleanup) "rev"
    } elseif {$::eskil($top,mode) eq "conflict"} {
        prepareConflict $top
        lappend ::eskil($top,cleanup) "conflict"















    }
    if {$::eskil($top,plugin) ne "" && \
                [dict get $::eskil($top,pluginpinfo) file]} {
        preparePlugin $top
        set ::eskil($top,cleanup) "plugin $::eskil($top,cleanup)"
    }
}







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
    set ::eskil($top,cleanup) {}
    if {$::eskil($top,mode) eq "rev"} {
        prepareRev $top
        lappend ::eskil($top,cleanup) "rev"
    } elseif {$::eskil($top,mode) eq "conflict"} {
        prepareConflict $top
        lappend ::eskil($top,cleanup) "conflict"
    }
    # Autodetect separator before any plugin processing
    if {$::eskil($top,view) eq "table" && $::eskil($top,separator) eq ""} {
        set ch1 [open $::eskil($top,leftFile)]
        gets $ch1 line1
        close $ch1
        # Any tab or comma?
        if {[regsub -all "\t" $line1 "\t" _] >= 2} {
            set ::eskil($top,separator) "\t"
            # Make it look like it came from command line
            lappend ::eskil(argv) -sep "\t"
        } elseif {[regsub -all "," $line1 "," _] >= 2} {
            set ::eskil($top,separator) ","
            lappend ::eskil(argv) -sep ","
        }
    }
    if {$::eskil($top,plugin) ne "" && \
                [dict get $::eskil($top,pluginpinfo) file]} {
        preparePlugin $top
        set ::eskil($top,cleanup) "plugin $::eskil($top,cleanup)"
    }
}
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
        } else {
            # First lines are equal, treat them as header
            # Consume table header line
            gets $ch1 line1
            incr doingLine1
            gets $ch2 line
            incr doingLine2
            if {$::eskil($top,separator) eq ""} {
                # Autodetect separator
                # Any tab?
                if {[regsub -all "\t" $line1 "\t" _] >= 2} {
                    set ::eskil($top,separator) "\t"
                } elseif {[regsub -all "," $line1 "," _] >= 2} {
                    set ::eskil($top,separator) ","
                }
            }
            set headings [split $line1 $::eskil($top,separator)]
            set columns {}
            foreach heading $headings {
                lappend columns 0 $heading
            }
            $::widgets($top,wTable) configure -columns $columns
            if {$::eskil($top,maxwidth) > 0} {







<
<
<
<
<
<
<
<
<







1736
1737
1738
1739
1740
1741
1742









1743
1744
1745
1746
1747
1748
1749
        } else {
            # First lines are equal, treat them as header
            # Consume table header line
            gets $ch1 line1
            incr doingLine1
            gets $ch2 line
            incr doingLine2









            set headings [split $line1 $::eskil($top,separator)]
            set columns {}
            foreach heading $headings {
                lappend columns 0 $heading
            }
            $::widgets($top,wTable) configure -columns $columns
            if {$::eskil($top,maxwidth) > 0} {