/usr/share/gnu-smalltalk/examples/pepe.sed is in gnu-smalltalk-common 3.2.5-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #! /bin/sed -nf
$a\
!
/^PepeImage installMethodWithSelector:/! {
/./ {
# Print the last method category
x
s/''/'/g
/./p
s/.*//p
x
}
s/^PepeImage installClassWithName: '\([^']*\)' superclassName: '\([^']*\)' classVariableNames: '\([^']*\)' instanceVariableNames: '\([^']*\)'\.$/\2 subclass: #\1\
instanceVariableNames: '\4'\
classVariableNames: '\3'\
poolDictionaries: ''\
category: ''!/
/./p
b
}
# Concatenate a full Pepe command into hold space
:a
H
/^\(.*[^']\)\{0,1\}\(''\)*'\.$/! {
n
ba
}
#---------- Process method declarations
x
s/^\n*//
# If hold space is empty, just insert the definition
/methodsFor:/! bt
# Check if we can merge the two methods
tx
:x
s/^\(!\([^ ]*\( class\)\{0,1\}\) methodsFor: nil!\([^!]*!\)*\) !\nPepeImage installMethodWithSelector: '\([^']*\)' inClassWithName: '\2' source: '\(.*\)'\.$/\1\
\
\6! !/
tz
#-------
# No, print the first category
i\
h
s/\nPepeImage.*//
s/''/'/g
p
g
s/^\([^\n]*\n\)*PepeImage/PepeImage/
:t
s/^PepeImage installMethodWithSelector: '\([^']*\)' inClassWithName: '\([^']*\)' source: '\(.*\)'\.\(\nPepeImage installMethodWithSelector:\|$\)/\
!\2 methodsFor: nil!\
\
\3! !\4/
# And put the second back into hold space
:z
x
|