mirror of
https://github.com/elliotnunn/BuildCubeE.git
synced 2026-01-23 19:16:18 +00:00
181 lines
6.2 KiB
Plaintext
181 lines
6.2 KiB
Plaintext
# CompareFiles -
|
||
# Compare two source files and show the differences
|
||
#
|
||
# Version 3.3
|
||
#
|
||
# Usage:
|
||
# CompareFiles [-9 | -LC -13 | -16 | -Portrait | -TwoPage | -b x y | -r t,l,b,r] oldFile newFile - open up the files and add menu
|
||
# -9 use 9 inch screen (512 x 342)
|
||
# -13 use 13 inch screen (640 x 480)
|
||
# -16 use 16 inch screen (832 x 624)
|
||
# -LC use 12 inch screen (
|
||
# -Portrait use 15 inch screen (640 x 870)
|
||
# -TwoPage use 21 inch screen (1152 x 870)
|
||
# -b x y use screen dimensions given in x y
|
||
# -r t,l,b,r use screen rect given by Top,Left,Bottom,Right
|
||
# default is -13
|
||
# NOTE:
|
||
# Order of parameters is important
|
||
# No error checking is done on x y coordinates
|
||
#
|
||
# Returns:
|
||
# Status = 0 - files match
|
||
# Status = 1 - syntax error
|
||
# Status = 2 - files differ (this is the same status as the Compare tool)
|
||
#
|
||
# CompareFiles will compare two files, and if they don't match it will
|
||
# bring them both up on the screen and put them side by side. A menu will be
|
||
# appended to the menu bar to go through the changes. When all the changes
|
||
# have been shown, the file windows will be restored and closed.
|
||
#
|
||
# The differences are shown from bottom to top so that if any changes are made
|
||
# in the files, the line offsets are not messed up.
|
||
#
|
||
# This creates two temporary files {ShellDirectory}Compare_File and
|
||
# {ShellDirectory}Compare_State.
|
||
# These are deleted on exit.
|
||
#
|
||
# Copyright Apple Computer, Inc. 1988 - 1992
|
||
# All rights reserved.
|
||
#
|
||
# Version 3.3 by Peter Potrebic with enhancements by Greg Branche
|
||
#
|
||
# Understanding the code…
|
||
#
|
||
# CompareFiles is actually a set of scripts. The action
|
||
# depends on the parameters. Here is what happens:
|
||
#
|
||
# CompareFiles oldFile newFile
|
||
# Do the actual compare
|
||
# If there are differences, it will
|
||
# Create a script to execute on quit
|
||
# Move the windows around next to each other
|
||
# Create the Compare Menu
|
||
# Call CompareFiles-NextChange
|
||
#
|
||
# CompareFiles•NextChange - show next change
|
||
# CompareFiles•Quit - cleans up
|
||
#
|
||
|
||
Set Exit 0
|
||
Set CaseSensitive 0
|
||
Set ErrorMessage "### CompareFiles - Incorrect order, or missing or illegal option"
|
||
Set Usage "# Usage - CompareFiles [-9 | -LC | -13 | -16 | -Portrait | -TwoPage | -b x y | -r t,l,b,r] oldFile newFile"
|
||
|
||
If "{CompareFilesTileRectangle}" == ""
|
||
Set Left 7 # default the left edge of the windows
|
||
If "{1}" =~ /-Kong/ || "{1}" =~ /-TwoPage/ # Apple Two-Page Monochrome Monitor
|
||
Set CompareFilesTileRectangle "0, 5, 749, 1148"
|
||
Set Bottom 750
|
||
Set Right 1138
|
||
Shift 1
|
||
else if "{1}" =~ /-SkyHawk/ || "{1}" =~ /-Portrait/ # Apple Macintosh Portrait Display
|
||
Set CompareFilesTileRectangle "0, 5, 749, 635"
|
||
Set Bottom 750
|
||
Set Right 626
|
||
Shift 1
|
||
else if "{1}" == "-16" # Apple 16" screen
|
||
Set CompareFilesTileRectangle "0, 5, 482, 828"
|
||
Set Bottom 483
|
||
Set Right 819
|
||
Shift 1
|
||
else if "{1}" =~ /-13/ # MacII screen
|
||
Set CompareFilesTileRectangle "0, 5, 344, 635"
|
||
Set Bottom 345
|
||
Set Right 626
|
||
Shift 1
|
||
else if "{1}" =~ /-LC/ # LC 12" RGB screen
|
||
Set CompareFilesTileRectangle "0, 3, 240, 510"
|
||
Set Bottom 241
|
||
Set Right 500
|
||
Shift 1
|
||
else if "{1}" == "-9" # Mac+ and MacSE screen
|
||
Set CompareFilesTileRectangle "0, 3, 198, 510"
|
||
Set Bottom 199
|
||
Set Right 500
|
||
Shift 1
|
||
else if "{1}" == "-b" || "{1}" == "-B" # user specified size
|
||
Evaluate Right = {2} - 5
|
||
Evaluate Bottom = {3} - 140
|
||
Set CompareFilesTileRectangle "0,5,{Bottom},{Right}"
|
||
Evaluate Bottom = {Bottom} + 1
|
||
Evaluate Right = {Right} - 9
|
||
Shift 3
|
||
else if "{1}" == "-r" || "{1}" == "-R" # custom user-specified rect
|
||
(Evaluate "{2}" =~ /(≈)®1,(≈)®2,(≈)®3,(≈)®4/) >Dev:Null
|
||
Set Top "{®1}"
|
||
Set Left "{®2}"
|
||
Set Bottom "{®3}"
|
||
Set Right "{®4}"
|
||
Evaluate Bottom = {Bottom} - 120
|
||
Set CompareFilesTileRectangle "{Top}, {Left}, {Bottom}, {Right}"
|
||
Evaluate Bottom = {Bottom} + 1
|
||
Evaluate Left = {Left} + 2
|
||
Evaluate Right = {Right} - {Left} - 2
|
||
Shift 2
|
||
else # default
|
||
Set CompareFilesTileRectangle "0, 5, 344, 635"
|
||
Set Bottom 345
|
||
Set Right 626
|
||
end
|
||
End
|
||
|
||
if {#} ≠ 2
|
||
Echo "{ErrorMessage}"
|
||
Echo "{Usage}"
|
||
Exit 1
|
||
end >Dev:StdErr
|
||
|
||
Set CompareStatus 0
|
||
Compare -g 3 -b -m -t "{{1}}" "{{2}}" > "{ShellDirectory}"Compare_File || Set CompareStatus {Status}
|
||
|
||
if {CompareStatus} == 0
|
||
Echo "### files are equal (ignoring blanks): {1} - {2}"
|
||
Delete -i "{ShellDirectory}Compare_File" ≥ dev:null
|
||
else if {CompareStatus} == 2 # files don’t match - set everything up
|
||
StreamEdit "{{ShellDirectory}}"Compare_File -o "{{ShellDirectory}}"Compare_File ∂
|
||
-e '/•[ ∂t]*File (≈)®1; Line (≈)®2; File (≈)®3; Line (≈)®4/ Change " Find "®2" "®1"; Find "®4" "®3'
|
||
Set NothingMatches 1
|
||
Search -s /•∂*∂*∂* Nothing seems to match ∂*∂*∂*/ "{{ShellDirectory}}"Compare_File ∑∑dev:null || Set NothingMatches 0
|
||
If {NothingMatches}
|
||
Echo "### nothing matches: {1} - {2}"
|
||
Delete -i "{{ShellDirectory}}"Compare_File
|
||
Exit 0
|
||
End
|
||
|
||
Set 1 "``Files -f -q "{{1}}"``" # get full pathnames
|
||
Set 2 "``Files -f -q "{{2}}"``"
|
||
|
||
Unset Close1 Close2 # remember if either file is already open
|
||
Set openWindows " ``Windows`` "
|
||
If "{{openWindows}}" !~ /≈ [∂']*"{{1}}"[∂']* ≈/; Open "{{1}}"; Set Close1 1; End
|
||
If "{{openWindows}}" !~ /≈ [∂']*"{{2}}"[∂']* ≈/; Open "{{2}}"; Set Close2 1; End
|
||
|
||
Begin # create end script
|
||
MoveWindow "{{1}}"; SizeWindow "{{1}}"
|
||
Quote Find • "{{1}}"
|
||
If {Close1}; Quote Close "{{1}}"; End
|
||
MoveWindow "{{2}}"; SizeWindow "{{2}}"
|
||
Quote Find • "{{2}}"
|
||
If {Close2}; Quote Close "{{2}}"; End
|
||
End > "{{ShellDirectory}}Compare_State"
|
||
|
||
TileWindows -v -r "{CompareFilesTileRectangle}" "{{1}}" "{{2}}"
|
||
Open -t "{{ShellDirectory}}"Compare_File
|
||
MoveWindow {Left} {Bottom} "{ShellDirectory}"Compare_File
|
||
SizeWindow {Right} 75 "{ShellDirectory}"Compare_File
|
||
Find ∞ "{{ShellDirectory}}"Compare_File
|
||
|
||
AddMenu Compare "Find Next Change/ƒ" "CompareFiles•NextChange"
|
||
AddMenu Compare "(-1" ""
|
||
AddMenu Compare "Copy Selection »»" "Catenate ∂"{{1}}∂".§ > ∂"{{2}}∂".§; #CompareFiles•NextChange"
|
||
AddMenu Compare "«« Copy Selection" "Catenate ∂"{{2}}∂".§ > ∂"{{1}}∂".§; #CompareFiles•NextChange"
|
||
AddMenu Compare "(-2" ""
|
||
AddMenu Compare "Done" "CompareFiles•Quit"
|
||
|
||
CompareFiles•NextChange
|
||
|
||
end
|
||
|
||
Exit {CompareStatus}
|