make it possible to omit a language for lowercase and uppercase token filters

This commit is contained in:
Andrew Martin 2017-12-19 20:08:43 -05:00
parent 7fce32ab3b
commit 51e59fdfd8
2 changed files with 13 additions and 13 deletions

View File

@ -635,8 +635,8 @@ instance FromJSON AnalyzerDefinition where
-- | Token filters are used to create custom analyzers.
data TokenFilterDefinition
= TokenFilterDefinitionLowercase Language
| TokenFilterDefinitionUppercase Language
= TokenFilterDefinitionLowercase (Maybe Language)
| TokenFilterDefinitionUppercase (Maybe Language)
| TokenFilterDefinitionApostrophe
| TokenFilterDefinitionReverse
| TokenFilterDefinitionSnowball Language
@ -645,13 +645,13 @@ data TokenFilterDefinition
instance ToJSON TokenFilterDefinition where
toJSON x = case x of
TokenFilterDefinitionLowercase lang -> object
[ "type" .= ("lowercase" :: Text)
, "language" .= languageToText lang
TokenFilterDefinitionLowercase mlang -> object $ catMaybes
[ Just $ "type" .= ("lowercase" :: Text)
, fmap (\lang -> "language" .= languageToText lang) mlang
]
TokenFilterDefinitionUppercase lang -> object
[ "type" .= ("uppercase" :: Text)
, "language" .= languageToText lang
TokenFilterDefinitionUppercase mlang -> object $ catMaybes
[ Just $ "type" .= ("uppercase" :: Text)
, fmap (\lang -> "language" .= languageToText lang) mlang
]
TokenFilterDefinitionApostrophe -> object
[ "type" .= ("apostrophe" :: Text)
@ -680,11 +680,11 @@ instance FromJSON TokenFilterDefinition where
"reverse" -> return TokenFilterDefinitionReverse
"apostrophe" -> return TokenFilterDefinitionApostrophe
"lowercase" -> TokenFilterDefinitionLowercase
<$> m .:? "language" .!= English
<$> m .:? "language"
"uppercase" -> TokenFilterDefinitionUppercase
<$> m .:? "language" .!= English
<$> m .:? "language"
"snowball" -> TokenFilterDefinitionSnowball
<$> m .:? "language" .!= English
<$> m .: "language"
"shingle" -> fmap TokenFilterDefinitionShingle $ Shingle
<$> (fmap.fmap) unStringlyTypedInt (m .:? "max_shingle_size") .!= 2
<*> (fmap.fmap) unStringlyTypedInt (m .:? "min_shingle_size") .!= 2

View File

@ -1653,8 +1653,8 @@ main = hspec $ do
)
)
(M.fromList
[ ("ex_filter_lowercase",TokenFilterDefinitionLowercase Greek)
, ("ex_filter_uppercase",TokenFilterDefinitionUppercase English)
[ ("ex_filter_lowercase",TokenFilterDefinitionLowercase (Just Greek))
, ("ex_filter_uppercase",TokenFilterDefinitionUppercase Nothing)
, ("ex_filter_apostrophe",TokenFilterDefinitionApostrophe)
, ("ex_filter_reverse",TokenFilterDefinitionReverse)
, ("ex_filter_snowball",TokenFilterDefinitionSnowball English)