@@ -29,6 +29,7 @@ import Control.Lens hiding (enum)
2929import Control.Monad.Except
3030import Data.CaseInsensitive (CI)
3131import qualified Data.CaseInsensitive as CI
32+import Data.Char (isDigit)
3233import Data.Hashable
3334import qualified Data.HashMap.Strict as Map
3435import qualified Data.HashSet as Set
@@ -141,15 +142,18 @@ getPrefix g = loc "getPrefix" g $ memo prefixed g go
141142 _ -> pure mempty
142143
143144 field rs = do
144− let ls = Map.keys rs
145− ks = Set.fromList (map (CI.mk . local) ls)
146145 p <- uniq fields (acronymPrefixes g) ks
147146 pure (Prefix p)
147+ where
148+ ls = Map.keys rs
149+ ks = Set.fromList (map (CI.mk . local) ls)
148150
149151 branch vs = do
150− p <- uniq branches ("" : acronymPrefixes g) $
151− Set.fromList (map CI.mk vs)
152+ p <- uniq branches ps (Set.fromList (map CI.mk vs))
152153 pure (Prefix p)
154+ where
155+ ps | any (isDigit . Text.head) vs = acronymPrefixes g
156+ | otherwise = "" : acronymPrefixes g
153157
154158 uniq :: Lens' Memo Seen
155159 -> [CI Text]