packages feed

ogma-language-jsonspec 1.2.0 → 1.3.0

raw patch · 3 files changed

+37/−27 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Language.JSONSpec.Parser: showErrorsM :: Show a => Maybe (Either a b) -> Either String (Maybe b)
- Language.JSONSpec.Parser: JSONFormat :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> JSONFormat
+ Language.JSONSpec.Parser: JSONFormat :: Maybe String -> String -> String -> Maybe String -> Maybe String -> String -> Maybe String -> String -> String -> Maybe String -> String -> JSONFormat
- Language.JSONSpec.Parser: JSONFormatInternal :: [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> JSONFormatInternal
+ Language.JSONSpec.Parser: JSONFormatInternal :: Maybe [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> Maybe [JSONPathElement] -> Maybe [JSONPathElement] -> [JSONPathElement] -> Maybe [JSONPathElement] -> [JSONPathElement] -> [JSONPathElement] -> Maybe [JSONPathElement] -> [JSONPathElement] -> JSONFormatInternal
- Language.JSONSpec.Parser: [jfiExternalVarType] :: JSONFormatInternal -> [JSONPathElement]
+ Language.JSONSpec.Parser: [jfiExternalVarType] :: JSONFormatInternal -> Maybe [JSONPathElement]
- Language.JSONSpec.Parser: [jfiExternalVars] :: JSONFormatInternal -> [JSONPathElement]
+ Language.JSONSpec.Parser: [jfiExternalVars] :: JSONFormatInternal -> Maybe [JSONPathElement]
- Language.JSONSpec.Parser: [jfiInternalVarType] :: JSONFormatInternal -> [JSONPathElement]
+ Language.JSONSpec.Parser: [jfiInternalVarType] :: JSONFormatInternal -> Maybe [JSONPathElement]
- Language.JSONSpec.Parser: [jfiInternalVars] :: JSONFormatInternal -> [JSONPathElement]
+ Language.JSONSpec.Parser: [jfiInternalVars] :: JSONFormatInternal -> Maybe [JSONPathElement]
- Language.JSONSpec.Parser: [jfiRequirementDesc] :: JSONFormatInternal -> [JSONPathElement]
+ Language.JSONSpec.Parser: [jfiRequirementDesc] :: JSONFormatInternal -> Maybe [JSONPathElement]
- Language.JSONSpec.Parser: [specExternalVarType] :: JSONFormat -> String
+ Language.JSONSpec.Parser: [specExternalVarType] :: JSONFormat -> Maybe String
- Language.JSONSpec.Parser: [specExternalVars] :: JSONFormat -> String
+ Language.JSONSpec.Parser: [specExternalVars] :: JSONFormat -> Maybe String
- Language.JSONSpec.Parser: [specInternalVarType] :: JSONFormat -> String
+ Language.JSONSpec.Parser: [specInternalVarType] :: JSONFormat -> Maybe String
- Language.JSONSpec.Parser: [specInternalVars] :: JSONFormat -> String
+ Language.JSONSpec.Parser: [specInternalVars] :: JSONFormat -> Maybe String
- Language.JSONSpec.Parser: [specRequirementDesc] :: JSONFormat -> String
+ Language.JSONSpec.Parser: [specRequirementDesc] :: JSONFormat -> Maybe String

Files

CHANGELOG.md view
@@ -1,5 +1,10 @@ # Revision history for ogma-language-jsonspec +## [1.3.0] - 2024-03-21++* Version bump 1.3.0 (#133).+* Make some fields in JSON format spec optional (#122).+ ## [1.2.0] - 2024-01-21  * Version bump 1.2.0 (#117).
ogma-language-jsonspec.cabal view
@@ -32,7 +32,7 @@ build-type:          Simple  name:                ogma-language-jsonspec-version:             1.2.0+version:             1.3.0 homepage:            http://nasa.gov license:             OtherLicense license-file:        LICENSE.pdf
src/Language/JSONSpec/Parser.hs view
@@ -52,46 +52,46 @@ import Data.OgmaSpec  data JSONFormat = JSONFormat-  { specInternalVars    :: String+  { specInternalVars    :: Maybe String   , specInternalVarId   :: String   , specInternalVarExpr :: String-  , specInternalVarType :: String-  , specExternalVars    :: String+  , specInternalVarType :: Maybe String+  , specExternalVars    :: Maybe String   , specExternalVarId   :: String-  , specExternalVarType :: String+  , specExternalVarType :: Maybe String   , specRequirements    :: String   , specRequirementId   :: String-  , specRequirementDesc :: String+  , specRequirementDesc :: Maybe String   , specRequirementExpr :: String   }  data JSONFormatInternal = JSONFormatInternal-  { jfiInternalVars    :: [JSONPathElement]+  { jfiInternalVars    :: Maybe [JSONPathElement]   , jfiInternalVarId   :: [JSONPathElement]   , jfiInternalVarExpr :: [JSONPathElement]-  , jfiInternalVarType :: [JSONPathElement]-  , jfiExternalVars    :: [JSONPathElement]+  , jfiInternalVarType :: Maybe [JSONPathElement]+  , jfiExternalVars    :: Maybe [JSONPathElement]   , jfiExternalVarId   :: [JSONPathElement]-  , jfiExternalVarType :: [JSONPathElement]+  , jfiExternalVarType :: Maybe [JSONPathElement]   , jfiRequirements    :: [JSONPathElement]   , jfiRequirementId   :: [JSONPathElement]-  , jfiRequirementDesc :: [JSONPathElement]+  , jfiRequirementDesc :: Maybe [JSONPathElement]   , jfiRequirementExpr :: [JSONPathElement]   }  parseJSONFormat :: JSONFormat -> Either String JSONFormatInternal parseJSONFormat jsonFormat = do-  jfi2  <- showErrors $ parseJSONPath (pack (specInternalVars    jsonFormat))-  jfi3  <- showErrors $ parseJSONPath (pack (specInternalVarId   jsonFormat))-  jfi4  <- showErrors $ parseJSONPath (pack (specInternalVarExpr jsonFormat))-  jfi5  <- showErrors $ parseJSONPath (pack (specInternalVarType jsonFormat))-  jfi6  <- showErrors $ parseJSONPath (pack (specExternalVars    jsonFormat))-  jfi7  <- showErrors $ parseJSONPath (pack (specExternalVarId   jsonFormat))-  jfi8  <- showErrors $ parseJSONPath (pack (specExternalVarType jsonFormat))-  jfi9  <- showErrors $ parseJSONPath (pack (specRequirements    jsonFormat))-  jfi10 <- showErrors $ parseJSONPath (pack (specRequirementId   jsonFormat))-  jfi11 <- showErrors $ parseJSONPath (pack (specRequirementDesc jsonFormat))-  jfi12 <- showErrors $ parseJSONPath (pack (specRequirementExpr jsonFormat))+  jfi2  <- showErrorsM $ fmap (parseJSONPath . pack) $ specInternalVars    jsonFormat+  jfi3  <- showErrors $ parseJSONPath $ pack $ specInternalVarId   jsonFormat+  jfi4  <- showErrors $ parseJSONPath $ pack $ specInternalVarExpr jsonFormat+  jfi5  <- showErrorsM $ fmap (parseJSONPath . pack) $ specInternalVarType jsonFormat+  jfi6  <- showErrorsM $ fmap (parseJSONPath . pack) $ specExternalVars    jsonFormat+  jfi7  <- showErrors $ parseJSONPath $ pack $ specExternalVarId   jsonFormat+  jfi8  <- showErrorsM $ fmap (parseJSONPath . pack) $ specExternalVarType jsonFormat+  jfi9  <- showErrors $ parseJSONPath $ pack $ specRequirements    jsonFormat+  jfi10 <- showErrors $ parseJSONPath $ pack $ specRequirementId   jsonFormat+  jfi11 <- showErrorsM $ fmap (parseJSONPath . pack) $ specRequirementDesc jsonFormat+  jfi12 <- showErrors $ parseJSONPath $ pack $ specRequirementExpr jsonFormat   return $ JSONFormatInternal              { jfiInternalVars    = jfi2              , jfiInternalVarId   = jfi3@@ -111,7 +111,7 @@   jsonFormatInternal <- parseJSONFormat jsonFormat    let values :: [Value]-      values = executeJSONPath (jfiInternalVars jsonFormatInternal) value+      values = maybe [] (`executeJSONPath` value) (jfiInternalVars jsonFormatInternal)        internalVarDef :: Value -> Either String InternalVariableDef       internalVarDef value = do@@ -119,7 +119,7 @@         varId   <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiInternalVarId jsonFormatInternal) value))          let msg = "internal variable type"-        varType <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiInternalVarType jsonFormatInternal) value))+        varType <- maybe (Right "") (\e -> valueToString msg =<< (listToEither msg (executeJSONPath e value))) (jfiInternalVarType jsonFormatInternal)          let msg = "internal variable expr"         varExpr <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiInternalVarExpr jsonFormatInternal) value))@@ -133,7 +133,7 @@   internalVariableDefs <- mapM internalVarDef values    let values :: [Value]-      values = executeJSONPath (jfiExternalVars jsonFormatInternal) value+      values = maybe [] (`executeJSONPath` value) (jfiExternalVars jsonFormatInternal)        externalVarDef :: Value -> Either String ExternalVariableDef       externalVarDef value = do@@ -142,7 +142,7 @@         varId   <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiExternalVarId jsonFormatInternal) value))          let msg = "external variable type"-        varType <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiExternalVarType jsonFormatInternal) value))+        varType <- maybe (Right "") (\e -> valueToString msg =<< (listToEither msg (executeJSONPath e value))) (jfiExternalVarType jsonFormatInternal)          return $ ExternalVariableDef                    { externalVariableName    = varId@@ -164,7 +164,7 @@         reqExpr' <- parseExpr reqExpr          let msg = "Requirement description"-        reqDesc <- valueToString msg =<< (listToEither msg (executeJSONPath (jfiRequirementDesc jsonFormatInternal) value))+        reqDesc <- maybe (Right "") (\e -> valueToString msg =<< (listToEither msg (executeJSONPath e value))) (jfiRequirementDesc jsonFormatInternal)          return $ Requirement                    { requirementName        = reqId@@ -192,3 +192,8 @@ showErrors :: Show a => Either a b -> Either String b showErrors (Left s)  = Left (show s) showErrors (Right x) = Right x++showErrorsM :: Show a => Maybe (Either a b) -> Either String (Maybe b)+showErrorsM Nothing          = Right Nothing+showErrorsM (Just (Left s))  = Left (show s)+showErrorsM (Just (Right x)) = Right (Just x)