Support --metadata field<number, --metadata field>number etc to match ranges of numeric values.
Similarly (well, for free), support preferred content expressions like metadata=field<number and metadata=field>number
This commit is contained in:
parent
01f1de0c3c
commit
b946ca44c3
8 changed files with 67 additions and 30 deletions
|
@ -36,8 +36,6 @@ module Types.MetaData (
|
|||
metaDataValues,
|
||||
ModMeta(..),
|
||||
modMeta,
|
||||
parseModMeta,
|
||||
parseMetaData,
|
||||
prop_metadata_sane,
|
||||
prop_metadata_serialize
|
||||
) where
|
||||
|
@ -239,26 +237,6 @@ modMeta m (MaybeSetMeta f v)
|
|||
| S.null (currentMetaDataValues f m) = updateMetaData f v emptyMetaData
|
||||
| otherwise = emptyMetaData
|
||||
|
||||
{- Parses field=value, field+=value, field-=value, field?=value -}
|
||||
parseModMeta :: String -> Either String ModMeta
|
||||
parseModMeta p = case lastMaybe f of
|
||||
Just '+' -> AddMeta <$> mkMetaField f' <*> v
|
||||
Just '-' -> DelMeta <$> mkMetaField f' <*> v
|
||||
Just '?' -> MaybeSetMeta <$> mkMetaField f' <*> v
|
||||
_ -> SetMeta <$> mkMetaField f <*> v
|
||||
where
|
||||
(f, sv) = separate (== '=') p
|
||||
f' = beginning f
|
||||
v = pure (toMetaValue sv)
|
||||
|
||||
{- Parses field=value -}
|
||||
parseMetaData :: String -> Either String (MetaField, MetaValue)
|
||||
parseMetaData p = (,)
|
||||
<$> mkMetaField f
|
||||
<*> pure (toMetaValue v)
|
||||
where
|
||||
(f, v) = separate (== '=') p
|
||||
|
||||
{- Avoid putting too many fields in the map; extremely large maps make
|
||||
- the seriaization test slow due to the sheer amount of data.
|
||||
- It's unlikely that more than 100 fields of metadata will be used. -}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue