@@ -29,6 +29,7 @@ import Control.Lens hiding (enum)
29import Control.Monad.Except
29import Control.Monad.Except
30import Data.CaseInsensitive (CI)
30import Data.CaseInsensitive (CI)
31import qualified Data.CaseInsensitive as CI
31import qualified Data.CaseInsensitive as CI
32+import Data.Char (isDigit)
32import Data.Hashable
33import Data.Hashable
33import qualified Data.HashMap.Strict as Map
34import qualified Data.HashMap.Strict as Map
34import qualified Data.HashSet as Set
35import qualified Data.HashSet as Set
@@ -141,15 +142,18 @@ getPrefix g = loc "getPrefix" g $ memo prefixed g go
141 _ -> pure mempty
142 _ -> pure mempty
143 field rs = do
144 field rs = do
144− let ls = Map.keys rs
145− ks = Set.fromList (map (CI.mk . local) ls)
146 p <- uniq fields (acronymPrefixes g) ks
145 p <- uniq fields (acronymPrefixes g) ks
147 pure (Prefix p)
146 pure (Prefix p)
149+ ks = Set.fromList (map (CI.mk . local) ls)
149 branch vs = do
151 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))
152 pure (Prefix p)
153 pure (Prefix p)
155+ ps | any (isDigit . Text.head) vs = acronymPrefixes g
156+ | otherwise = "" : acronymPrefixes g
154 uniq :: Lens' Memo Seen
158 uniq :: Lens' Memo Seen
155 -> [CI Text]
159 -> [CI Text]