From d99c47989a1047cd24019fd5ce434e701b5d3519 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 7 Feb 2021 04:56:58 -0400 Subject: Mo' updates, less problems. --- stdlib/source/program/aedifex/pom.lux | 42 ++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'stdlib/source/program/aedifex/pom.lux') diff --git a/stdlib/source/program/aedifex/pom.lux b/stdlib/source/program/aedifex/pom.lux index f085e2808..f105f07b6 100644 --- a/stdlib/source/program/aedifex/pom.lux +++ b/stdlib/source/program/aedifex/pom.lux @@ -11,6 +11,7 @@ [data ["." name] ["." maybe ("#\." functor)] + ["." text] [format ["_" xml (#+ Tag XML)]] [collection @@ -150,8 +151,8 @@ (<>.and .tag (.children .text))) -(def: parse_dependency - (Parser Dependency) +(def: (parse_dependency own_version parent_version) + (-> Text Text (Parser Dependency)) (do {! <>.monad} [properties (\ ! map (dictionary.from_list name.hash) (.children (<>.some ..parse_property)))] @@ -159,28 +160,47 @@ try.from_maybe (do maybe.monad [group (dictionary.get ["" ..group_tag] properties) - artifact (dictionary.get ["" ..artifact_tag] properties) - version (dictionary.get ["" ..version_tag] properties)] + artifact (dictionary.get ["" ..artifact_tag] properties)] (wrap {#//dependency.artifact {#//artifact.group group #//artifact.name artifact - #//artifact.version version} + #//artifact.version (|> properties + (dictionary.get ["" ..version_tag]) + (maybe.default "") + (text.replace_all "${project.version}" own_version) + (text.replace_all "${project.parent.version}" parent_version))} #//dependency.type (|> properties (dictionary.get ["" "type"]) - (maybe.default //artifact/type.lux_library))}))))) + (maybe.default //artifact/type.jvm_library))}))))) -(def: parse_dependencies - (Parser (List Dependency)) +(def: (parse_dependencies own_version parent_version) + (-> Text Text (Parser (List Dependency))) (do {! <>.monad} [_ (.node ["" ..dependencies_tag])] - (.children (<>.some ..parse_dependency)))) + (.children (<>.some (..parse_dependency own_version parent_version))))) + +(def: own_version + (Parser Text) + (do <>.monad + [_ (.node ["" ..version_tag])] + (.children .text))) + +(def: parent_version + (Parser Text) + (do <>.monad + [_ (.node ["" "parent"])] + ..own_version)) (def: #export parser (Parser /.Profile) (do {! <>.monad} - [_ (.node ["" ..project_tag])] + [own_version (<>.default "" (.somewhere ..own_version)) + parent_version (<>.default "" (.somewhere ..parent_version)) + _ (.node ["" ..project_tag])] (.children (do ! - [dependencies (.somewhere ..parse_dependencies) + [dependencies (|> (..parse_dependencies own_version parent_version) + .somewhere + (<>.default (list))) _ (<>.some .ignore)] (wrap (|> (\ /.monoid identity) (update@ #/.dependencies (function (_ empty) -- cgit v1.2.3