git.iko.soy/typeable/xsd-isogen
on master help sign in
Adjust to the new xsd-parser
ebd78baYuras Shumovich
cabal.project+1−1
@@ -3,4 +3,4 @@ packages: .
3source-repository-package
3source-repository-package
4 type: git
4 type: git
5 location: https://github.com/typeable/xsd-parser.git
5 location: https://github.com/typeable/xsd-parser.git
6− tag: be6f2e92d3c6b381922957fa51821e8e57840da3
6+ tag: 58cfd04980fb66590334be9fe80ef4c163669f1b
src/Gen.hs+7−2
@@ -23,6 +23,7 @@ where
23import qualified Data.Char as Char
23import qualified Data.Char as Char
24import Data.Text (Text)
24import Data.Text (Text)
25import qualified Data.Text as Text
25import qualified Data.Text as Text
26+import Data.Maybe
26import Data.Set (Set)
27import Data.Set (Set)
27import qualified Data.Set as Set
28import qualified Data.Set as Set
28import Data.Map (Map)
29import Data.Map (Map)
@@ -156,14 +157,18 @@ allFields (Xsd.TypeComplex t) =
156 case Xsd.complexContent t of
157 case Xsd.complexContent t of
157 Xsd.ContentPlain c ->
158 Xsd.ContentPlain c ->
158 case Xsd.plainContentModel c of
159 case Xsd.plainContentModel c of
159− Just (Xsd.Sequence es) -> map Xsd.elementName es
160+ Just (Xsd.Sequence es) -> mapMaybe elementName es
160 _ -> []
161 _ -> []
161 Xsd.ContentSimple _ -> []
162 Xsd.ContentSimple _ -> []
162 Xsd.ContentComplex (Xsd.ComplexContentExtension e) ->
163 Xsd.ContentComplex (Xsd.ComplexContentExtension e) ->
163 case Xsd.complexExtensionModel e of
164 case Xsd.complexExtensionModel e of
164− Just (Xsd.Sequence es) -> map Xsd.elementName es
165+ Just (Xsd.Sequence es) -> mapMaybe elementName es
165 _ -> []
166 _ -> []
166 Xsd.ContentComplex Xsd.ComplexContentRestriction -> []
167 Xsd.ContentComplex Xsd.ComplexContentRestriction -> []
168+ where
169+ elementName = Xsd.refOr
170+ (const Nothing)
171+ (Just . Xsd.elementName)
167
172
168-- | Prefix field name with based on the type name
173-- | Prefix field name with based on the type name
169makePrefixedField :: Text -> Xsd.QName -> Text
174makePrefixedField :: Text -> Xsd.QName -> Text
src/Main.hs+3−2
@@ -307,8 +307,9 @@ genFieldsForModel _ (Xsd.All _) = do
307 warn "all: not implemented"
307 warn "all: not implemented"
308 return []
308 return []
309
309
310−genField :: TypeName -> Xsd.Element -> Gen (Maybe Text)
310+genField :: TypeName -> Xsd.RefOr Xsd.Element -> Gen (Maybe Text)
311+genField _ (Xsd.Ref _) = return Nothing
311−genField typeName e = do
312+genField typeName (Xsd.Inline e) = do
312 fieldName <- makeFieldName typeName (Xsd.elementName e)
313 fieldName <- makeFieldName typeName (Xsd.elementName e)
313
314
314 fieldTypeName <- case Xsd.elementType e of
315 fieldTypeName <- case Xsd.elementType e of