git.iko.soy/typeable/xsd-isogen
on master help sign in
Adjust to the new xsd-parsr model
commita59de8f70c0c231d4a087470b09f171a2303e511 authorYuras Shumovich <shumovichy@gmail.com> dateMon 17 Feb 2020, 12:03 (7 years ago) parenta3a6ea9
4 files changed+26−11
cabal.project+1−1 src/Gen.hs+1−1 src/Main.hs+9−5 src/References.hs+15−4
cabal.project+1−1
@@ -3,4 +3,4 @@ packages: .
33source-repository-package
44 type: git
55 location: https://github.com/typeable/xsd-parser.git
6− tag: 58cfd04980fb66590334be9fe80ef4c163669f1b
6+ tag: e08a37cf08674a492407b9b7f4a61e8faedb1590
src/Gen.hs+1−1
@@ -164,7 +164,7 @@ allFields (Xsd.TypeComplex t) =
164164 case Xsd.complexExtensionModel e of
165165 Just (Xsd.Sequence es) -> mapMaybe elementName es
166166 _ -> []
167− Xsd.ContentComplex Xsd.ComplexContentRestriction -> []
167+ Xsd.ContentComplex (Xsd.ComplexContentRestriction _) -> []
168168 where
169169 elementName = Xsd.refOr
170170 (const Nothing)
src/Main.hs+9−5
@@ -188,18 +188,22 @@ genDependencies a = forM_ (references a) $ \name -> do
188188genSimpleType :: TypeName -> Xsd.SimpleType -> [Xsd.Annotation]-> Gen ()
189189genSimpleType tn (Xsd.AtomicType restriction ann) parentAnn = do
190190 let
191− baseName r = case Xsd.restrictionBase r of
191+ baseName r = case Xsd.simpleRestrictionBase r of
192192 Xsd.Ref n -> Just n
193193 Xsd.Inline (Xsd.AtomicType r' _) -> baseName r'
194194 Xsd.Inline (Xsd.ListType _ _) -> Nothing
195+ Xsd.Inline (Xsd.UnionType _ _) -> Nothing
195196 case baseName restriction of
196197 Just _
197198 | isEnum restriction
198− -> genEnum tn (Xsd.restrictionConstraints restriction) (parentAnn <> ann)
199+ -> genEnum tn
200+ (Xsd.simpleRestrictionConstraints restriction)
201+ (parentAnn <> ann)
199202 Just base ->
200203 genNewtype tn base (parentAnn <> ann)
201204 _ -> genUnsupported tn
202205genSimpleType typeName (Xsd.ListType _ _) _ = genUnsupported typeName
206+genSimpleType typeName (Xsd.UnionType _ _) _ = genUnsupported typeName
203207
204208genNewtype :: TypeName -> Xsd.QName -> [Xsd.Annotation] -> Gen ()
205209genNewtype tn base annots = do
@@ -238,8 +242,8 @@ genEnum tn constraints annots = do
238242 : enumLines
239243 writeCode [""]
240244
241−isEnum :: Xsd.Restriction -> Bool
242−isEnum = any isEnumConstraint . Xsd.restrictionConstraints
245+isEnum :: Xsd.SimpleRestriction -> Bool
246+isEnum = any isEnumConstraint . Xsd.simpleRestrictionConstraints
243247 where
244248 isEnumConstraint (Xsd.Enumeration _) = True
245249
@@ -292,7 +296,7 @@ genFields typeName (Xsd.ContentComplex (Xsd.ComplexContentExtension e)) = do
292296 fields <- maybe (return []) (genFieldsForModel typeName)
293297 (Xsd.complexExtensionModel e)
294298 return (baseFields ++ fields)
295−genFields _ (Xsd.ContentComplex Xsd.ComplexContentRestriction) =
299+genFields _ (Xsd.ContentComplex (Xsd.ComplexContentRestriction _)) =
296300 return []
297301
298302genFieldsForModel :: TypeName -> Xsd.ModelGroup -> Gen [Text]
src/References.hs+15−4
@@ -22,9 +22,13 @@ instance References Xsd.Type where
2222instance References Xsd.SimpleType where
2323 references (Xsd.AtomicType r _) = references r
2424 references (Xsd.ListType r _) = references r
25+ references (Xsd.UnionType rs _) = referencesList rs
2526
26−instance References Xsd.Restriction where
27− references r = references (Xsd.restrictionBase r)
27+instance References Xsd.SimpleRestriction where
28+ references r = references (Xsd.simpleRestrictionBase r)
29+
30+instance References Xsd.ComplexRestriction where
31+ references r = [Xsd.complexRestrictionBase r]
2832
2933instance References t => References (Xsd.RefOr t) where
3034 references (Xsd.Ref r) = [r]
@@ -47,7 +51,7 @@ instance References Xsd.SimpleContent where
4751
4852instance References Xsd.ComplexContent where
4953 references (Xsd.ComplexContentExtension e) = references e
50− references Xsd.ComplexContentRestriction = []
54+ references (Xsd.ComplexContentRestriction r) = references r
5155
5256instance References Xsd.ComplexExtension where
5357 -- Note that we don't include extension base here
@@ -58,7 +62,14 @@ instance References Xsd.ComplexExtension where
5862 ++ references (Xsd.complexExtensionModel e)
5963
6064instance References Xsd.Attribute where
61− references = references . Xsd.attrType
65+ references (Xsd.RefAttribute a) = references a
66+ references (Xsd.InlineAttribute a) = references a
67+
68+instance References Xsd.AttributeRef where
69+ references a = [Xsd.attributeRefRef a]
70+
71+instance References Xsd.AttributeInline where
72+ references = references . Xsd.attributeInlineType
6273
6374instance References Xsd.ModelGroup where
6475 references (Xsd.Sequence elements) = referencesList elements