@@ -83,6 +83,8 @@ klcLayout = many >$> mconcat $
83
83
<|> set' _parseKeys <$> klcKeys
84
84
<|> set' _parseLigatures <$> try ligatures
85
85
<|> set' _parseDeadKeys <$> try deadKey
86
+ <|> (∅) <$ try descriptions
87
+ <|> (∅) <$ try languageNames
86
88
<|> (∅) <$ try keyName
87
89
<|> (∅) <$ try endKbd
88
90
<|> (try nameValue >>= (uncurry field >$> set' _parseInformation))
@@ -93,6 +95,7 @@ klcLayout = many >$> mconcat $
93
95
field ∷ Logger m ⇒ String → String → m Information
94
96
field " COPYRIGHT" = pure ∘ set' _copyright ∘ Just
95
97
field " COMPANY" = pure ∘ set' _company ∘ Just
98
+ field " LOCALENAME" = const (pure (∅) )
96
99
field " LOCALEID" = pure ∘ set' _localeId ∘ Just
97
100
field " VERSION" = pure ∘ set' _version ∘ Just
98
101
field f = const $ (∅) <$ tell [" unknown field ‘" ⊕ f ⊕ " ’" ]
@@ -159,14 +162,15 @@ ligatures = do
159
162
[" LIGATURE" ] ← readLine
160
163
catMaybes <$> many (try ligature)
161
164
162
- ligature ∷ (Logger m , Parser m ) ⇒ m (Maybe (Pos , Int , String ))
163
- ligature = runMaybeT $ do
164
- sc: i: chars ← lift readLine
165
+ ligature ∷ (Logger m , Parser m , MonadFail m ) ⇒ m (Maybe (Pos , Int , String ))
166
+ ligature = do
167
+ sc: i: chars ← readLine
165
168
guard (not (null chars))
166
- pos ← parseShortcutPos sc
167
- i' ← maybe (tellMaybeT [" unknown index ‘" ⊕ i ⊕ " ’" ]) pure $ readMaybe (' 0' : ' x' : i)
168
- s ← mapMaybe letterToChar <$> traverse parseLetter chars
169
- pure (pos, i', s)
169
+ runMaybeT $ do
170
+ pos ← parseShortcutPos sc
171
+ i' ← maybe (tellMaybeT [" unknown index ‘" ⊕ i ⊕ " ’" ]) pure $ readMaybe (' 0' : ' x' : i)
172
+ s ← mapMaybe letterToChar <$> traverse parseLetter chars
173
+ pure (pos, i', s)
170
174
where
171
175
letterToChar (Char c) = Just c
172
176
letterToChar _ = Nothing
@@ -189,6 +193,18 @@ keyName = do
189
193
[' K' : ' E' : ' Y' : ' N' : ' A' : ' M' : ' E' : _] ← readLine
190
194
many (try nameValue)
191
195
196
+ descriptions ∷ (Parser m , MonadFail m ) ⇒ m ()
197
+ descriptions = do
198
+ [" DESCRIPTIONS" ] ← readLine
199
+ many (some hexDigitChar *> spacing *> endLine)
200
+ pure ()
201
+
202
+ languageNames ∷ (Parser m , MonadFail m ) ⇒ m ()
203
+ languageNames = do
204
+ [" LANGUAGENAMES" ] ← readLine
205
+ many (some hexDigitChar *> spacing *> endLine)
206
+ pure ()
207
+
192
208
endKbd ∷ (Parser m , MonadFail m ) ⇒ m ()
193
209
endKbd = do
194
210
[" ENDKBD" ] ← readLine
0 commit comments