Eskil

Check-in [36b17b0bc0]
Login

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

Overview
Comment:Sort plugin can sort words inline
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 36b17b0bc0f2fe10b7f0c9b92d856dc64c640d599c9de051f397e66597bf8165
User & Date: peter 2021-05-17 11:52:00.519
Context
2021-08-25
12:56
Corrected path name check-in: 63c0c5533a user: peter tags: trunk
2021-05-17
11:52
Sort plugin can sort words inline check-in: 36b17b0bc0 user: peter tags: trunk
2021-04-09
16:32
Select frame/top in balloonhelp check-in: 6d239b452a user: peter tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to plugins/sort.tcl.
1

2
3
4
5
6
7



8
9
10
11
12
13







14
15
16
17
18
19
20












21
22
23
24
25
26
27
##Eskil Plugin : Compare files after sorting lines

#
# This plugin compares files after sorting the lines in each side

# Example file for a plugin.
# A plugin's first line must start exactly like this one.
# The text after : is the summary you can get at the command line




# A plugin must define this procedure to do the job.
# side: left or right
# chi:  An input channel for reading the original file.
# cho:  An output channel for writing the processed file.
proc PreProcess {side chi cho} {







    set data [read $chi]
    set endingNewLine 0
    if {[string index $data end] eq "\n"} {
        set data [string range $data 0 end-1]
        set endingNewLine 1
    }
    set lines [split $data \n]












    # Allow sort parameters in info
    set lines [lsort -dictionary {*}$::Info $lines]
    puts -nonewline $cho [join $lines \n]
    if {$endingNewLine} {
        puts $cho ""
    }
    # Signal that the file after processing should be used both

>






>
>
>






>
>
>
>
>
>
>







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







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
##Eskil Plugin : Compare files after sorting lines
## Flag -sortwords : Sort words within each line first.
#
# This plugin compares files after sorting the lines in each side

# Example file for a plugin.
# A plugin's first line must start exactly like this one.
# The text after : is the summary you can get at the command line

# A plugin may declare command line options that should be allowed through
# to ::argv

# A plugin must define this procedure to do the job.
# side: left or right
# chi:  An input channel for reading the original file.
# cho:  An output channel for writing the processed file.
proc PreProcess {side chi cho} {
    # Look for parameters in command line
    set opts(-sortwords) 0
    set i [lsearch -exact $::argv "-sortwords"]
    if {$i >= 0} {
        set opts(-sortwords) 1
    }

    set data [read $chi]
    set endingNewLine 0
    if {[string index $data end] eq "\n"} {
        set data [string range $data 0 end-1]
        set endingNewLine 1
    }
    set lines [split $data \n]

    if {$opts(-sortwords)} {
        set newlines {}
        foreach line $lines {
            # Extract words
            set words [regexp -all -inline {\w+} $line]
            set words [lsort -dictionary $words]
            lappend newlines [join $words]
        }
        set lines $newlines
    }

    # Allow sort parameters in info
    set lines [lsort -dictionary {*}$::Info $lines]
    puts -nonewline $cho [join $lines \n]
    if {$endingNewLine} {
        puts $cho ""
    }
    # Signal that the file after processing should be used both