Open isomorpheme opened 5 months ago
Or even better: Reference
should contain the type of component as an additional field (i.e. parsed from #/components/{type}/{name}
), and the FromJSON
instance for Referenced a
can then still ensure that the Reference
inside a Ref
is to the right type of component.
Just noticed #86 which seems related.
This is not only confusing, but also makes it impossible to get the prefix back if I take the
Reference
out of aReferenced
and try to render it back to JSON. Or dually, if I construct aReferenced
with aReference
in it that has the prefix, it'll result in a malformed fragment specifier:For the
ToJSON
instances, the special casing is implemented here: https://github.com/biocad/openapi3/blob/efb9a50c8d808dd684fe2e04ff0b0168fc0f097a/src/Data/OpenApi/Internal.hs#L1427-L1438And there's an analogous section for
FromJSON
elsewhere in the same file. IMO these instances should just do the obvious thing and forward to the appropriate instances onReference
; things like prefix stripping can be done elsewhere.