37 lines
805 B
Plaintext
37 lines
805 B
Plaintext
composer startsWith&{s:}
|
|
@: 0;
|
|
(<='$s;'>? -> @:1; <'.*'>) $@
|
|
end startsWith
|
|
|
|
composer endsWith&{s:}
|
|
@: 0;
|
|
(<ends|'.*'>) $@
|
|
rule ends: (<'.'>* <='$s;'> -> @:1;)
|
|
end endsWith
|
|
|
|
composer contains&{s:}
|
|
@: 0;
|
|
(<~='$s;'>? <='$s;'>? -> @:1; <'.*'>) $@
|
|
end contains
|
|
|
|
templates find&{s:}
|
|
when <?($ -> startsWith&{s:$s} <=1>)> do '$; starts with $s;' !
|
|
when <?($ -> endsWith&{s:$s} <=1>)> do '$; ends with $s;' !
|
|
when <?($ -> contains&{s:$s} <=1>)> do '$; contains $s;' !
|
|
otherwise '$s; cannot be found in $;' !
|
|
end find
|
|
|
|
'abcd' -> find&{s:'ab'} -> !OUT::write
|
|
'
|
|
' -> !OUT::write
|
|
'abcd' -> find&{s:'cd'} -> !OUT::write
|
|
'
|
|
' -> !OUT::write
|
|
'abcd' -> find&{s:'bc'} -> !OUT::write
|
|
'
|
|
' -> !OUT::write
|
|
'abcd' -> find&{s:'e'} -> !OUT::write
|
|
'
|
|
' -> !OUT::write
|
|
'banana' -> find&{s:'na'} -> !OUT::write
|