ogma-language-xmlspec 1.6.0 → 1.7.0
raw patch · 3 files changed
+68/−36 lines, 3 filesdep ~ogma-specPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: ogma-spec
API changes (from Hackage documentation)
+ Language.XMLSpec.Parser: [specRequirementResultExpr] :: XMLFormat -> Maybe (String, Maybe (String, String))
+ Language.XMLSpec.Parser: [specRequirementResultType] :: XMLFormat -> Maybe (String, Maybe (String, String))
+ Language.XMLSpec.Parser: [xfiRequirementResultExpr] :: XMLFormatInternal -> Maybe XPathExpr
+ Language.XMLSpec.Parser: [xfiRequirementResultType] :: XMLFormatInternal -> Maybe XPathExpr
- Language.XMLSpec.Parser: XMLFormat :: Maybe String -> (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> Maybe String -> (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> XMLFormat
+ Language.XMLSpec.Parser: XMLFormat :: Maybe String -> (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> Maybe String -> (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> Maybe (String, Maybe (String, String)) -> XMLFormat
- Language.XMLSpec.Parser: XMLFormatInternal :: Maybe XPathExpr -> XPathExpr -> XPathExpr -> Maybe XPathExpr -> Maybe XPathExpr -> XPathExpr -> Maybe XPathExpr -> XPathExpr -> XPathExpr -> Maybe XPathExpr -> [XPathExpr] -> XMLFormatInternal
+ Language.XMLSpec.Parser: XMLFormatInternal :: Maybe XPathExpr -> XPathExpr -> XPathExpr -> Maybe XPathExpr -> Maybe XPathExpr -> XPathExpr -> Maybe XPathExpr -> XPathExpr -> XPathExpr -> Maybe XPathExpr -> [XPathExpr] -> Maybe XPathExpr -> Maybe XPathExpr -> XMLFormatInternal
Files
- CHANGELOG.md +6/−0
- ogma-language-xmlspec.cabal +3/−3
- src/Language/XMLSpec/Parser.hs +59/−33
CHANGELOG.md view
@@ -1,5 +1,11 @@ # Revision history for ogma-language-xmlspec +## [1.7.0] - 2025-03-21++* Version bump 1.7.0 (#269).+* Remove extraneous EOL character (#224).+* Extend XMLSpec with additional data associated with results (#219).+ ## [1.6.0] - 2025-01-21 * Version bump 1.6.0 (#208).
ogma-language-xmlspec.cabal view
@@ -15,7 +15,7 @@ -- ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER, -- GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING -- THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES--- IT "AS IS." +-- IT "AS IS." -- -- Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST -- THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS@@ -32,7 +32,7 @@ build-type: Simple name: ogma-language-xmlspec-version: 1.6.0+version: 1.7.0 homepage: http://nasa.gov license: OtherLicense license-file: LICENSE.pdf@@ -71,7 +71,7 @@ , hxt-xpath >= 8.5 && < 9.2 , pretty >= 1.1 && < 1.2 - , ogma-spec >= 1.6.0 && < 1.7+ , ogma-spec >= 1.7.0 && < 1.8 hs-source-dirs: src
src/Language/XMLSpec/Parser.hs view
@@ -66,17 +66,19 @@ -- must be found in the first string of the three and replaced with the result -- of evaluating the expression. data XMLFormat = XMLFormat- { specInternalVars :: Maybe String- , specInternalVarId :: (String, Maybe (String, String))- , specInternalVarExpr :: (String, Maybe (String, String))- , specInternalVarType :: Maybe (String, Maybe (String, String))- , specExternalVars :: Maybe String- , specExternalVarId :: (String, Maybe (String, String))- , specExternalVarType :: Maybe (String, Maybe (String, String))- , specRequirements :: (String, Maybe (String, String))- , specRequirementId :: (String, Maybe (String, String))- , specRequirementDesc :: Maybe (String, Maybe (String, String))- , specRequirementExpr :: (String, Maybe (String, String))+ { specInternalVars :: Maybe String+ , specInternalVarId :: (String, Maybe (String, String))+ , specInternalVarExpr :: (String, Maybe (String, String))+ , specInternalVarType :: Maybe (String, Maybe (String, String))+ , specExternalVars :: Maybe String+ , specExternalVarId :: (String, Maybe (String, String))+ , specExternalVarType :: Maybe (String, Maybe (String, String))+ , specRequirements :: (String, Maybe (String, String))+ , specRequirementId :: (String, Maybe (String, String))+ , specRequirementDesc :: Maybe (String, Maybe (String, String))+ , specRequirementExpr :: (String, Maybe (String, String))+ , specRequirementResultType :: Maybe (String, Maybe (String, String))+ , specRequirementResultExpr :: Maybe (String, Maybe (String, String)) } deriving (Show, Read) @@ -185,10 +187,24 @@ (\e -> liftIO $ fromMaybe "" . listToMaybe <$> executeXPath e def) (xfiRequirementDesc xmlFormatInternal) + reqResType <- case xfiRequirementResultType xmlFormatInternal of+ Nothing -> return Nothing+ Just e -> liftIO $ listToMaybe <$> executeXPath e def++ reqResExpr <- case xfiRequirementResultExpr xmlFormatInternal of+ Nothing -> return Nothing+ Just e -> liftIO $ listToMaybe <$> executeXPath e def++ reqResExpr' <- maybe (return Nothing)+ (fmap Just . ExceptT . parseExpr . textUnescape)+ reqResExpr+ return $ Requirement { requirementName = reqId , requirementExpr = reqExpr' , requirementDescription = reqDesc+ , requirementResultType = reqResType+ , requirementResultExpr = reqResExpr' } requirements <- mapM requirementDef reqStrings@@ -198,17 +214,19 @@ -- | Internal representation of an XML Format specification. data XMLFormatInternal = XMLFormatInternal- { xfiInternalVars :: Maybe XPathExpr- , xfiInternalVarId :: XPathExpr- , xfiInternalVarExpr :: XPathExpr- , xfiInternalVarType :: Maybe XPathExpr- , xfiExternalVars :: Maybe XPathExpr- , xfiExternalVarId :: XPathExpr- , xfiExternalVarType :: Maybe XPathExpr- , xfiRequirements :: XPathExpr- , xfiRequirementId :: XPathExpr- , xfiRequirementDesc :: Maybe XPathExpr- , xfiRequirementExpr :: [XPathExpr]+ { xfiInternalVars :: Maybe XPathExpr+ , xfiInternalVarId :: XPathExpr+ , xfiInternalVarExpr :: XPathExpr+ , xfiInternalVarType :: Maybe XPathExpr+ , xfiExternalVars :: Maybe XPathExpr+ , xfiExternalVarId :: XPathExpr+ , xfiExternalVarType :: Maybe XPathExpr+ , xfiRequirements :: XPathExpr+ , xfiRequirementId :: XPathExpr+ , xfiRequirementDesc :: Maybe XPathExpr+ , xfiRequirementExpr :: [XPathExpr]+ , xfiRequirementResultType :: Maybe XPathExpr+ , xfiRequirementResultExpr :: Maybe XPathExpr } -- | Internal representation of an XPath expression.@@ -286,18 +304,26 @@ xfi12 <- resolveIndirectly' file $ specRequirementExpr xmlFormat + xfi13 <- swapMaybeExceptT $+ resolveIndirectly file <$> specRequirementResultType xmlFormat++ xfi14 <- swapMaybeExceptT $+ resolveIndirectly file <$> specRequirementResultExpr xmlFormat+ return $ XMLFormatInternal- { xfiInternalVars = xfi2- , xfiInternalVarId = xfi3- , xfiInternalVarExpr = xfi4- , xfiInternalVarType = xfi5- , xfiExternalVars = xfi6- , xfiExternalVarId = xfi7- , xfiExternalVarType = xfi8- , xfiRequirements = xfi9- , xfiRequirementId = xfi10- , xfiRequirementDesc = xfi11- , xfiRequirementExpr = xfi12+ { xfiInternalVars = xfi2+ , xfiInternalVarId = xfi3+ , xfiInternalVarExpr = xfi4+ , xfiInternalVarType = xfi5+ , xfiExternalVars = xfi6+ , xfiExternalVarId = xfi7+ , xfiExternalVarType = xfi8+ , xfiRequirements = xfi9+ , xfiRequirementId = xfi10+ , xfiRequirementDesc = xfi11+ , xfiRequirementExpr = xfi12+ , xfiRequirementResultType = xfi13+ , xfiRequirementResultExpr = xfi14 } -- | Execute an XPath query in an XML string, returning the list of strings