blob: 66ed0bc6fda622bd28e00072d9ee563b30bf0f75 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SortEmailAddressesOLD←{
⍝ Sort email addresses ⍵ first by domain, then by mailbox
⍝ ⍺: Optional unique flag
⍺←0 ⍝: Default, return all addresses
⍝ ⍺←1 : Return unique email addresses (case-folded domains)
⍝ ⍵: Character vector with embedded new line characters
admat←↑(⎕UCS 10 13)((~∊⍨)⊆⊢)⍵ ⍝ Split by new line
dnorm←⎕C 2⊃↓⍉'@'(≠⊆⊢)⍤1⊢admat ⍝ Normalise domains
dgroup←dnorm(⊂⊢)⌸admat ⍝ Group addresses by domain
dsort←⊃⍪⌿{(⊂⍋⍵)⌷⍵}¨dgroup ⍝ Sorted within domain
dnorm←⎕C 2⊃↓⍉'@'(≠⊆⊢)⍤1↑dsort ⍝ Normalise sorted domains
sea←(⊂⍋dnorm)⌷dsort ⍝ Sorted Email Addresses
⍺:sea⌿⍨≠⎕C@(∨\'@'∘=)sea ⍝ Unique only
sea
}
|