lumeohq / xsd-parser-rs

A xsd/wsdl => rust code generator written in rust
Apache License 2.0
96 stars 34 forks source link

Process enumerations with namespaces used in their values #77

Closed victor-soloviev closed 4 years ago

victor-soloviev commented 4 years ago

For the following type from soap-envelope.xsd

  <xs:simpleType name="faultcodeEnum">
    <xs:restriction base="xs:QName">
      <xs:enumeration value="tns:DataEncodingUnknown"/>
      <xs:enumeration value="tns:MustUnderstand"/>
      <xs:enumeration value="tns:Receiver"/>
      <xs:enumeration value="tns:Sender"/>
      <xs:enumeration value="tns:VersionMismatch"/>
    </xs:restriction>
  </xs:simpleType>

this generated code is desired:

#[derive(PartialEq, Debug, YaSerialize, YaDeserialize)]
pub enum FaultcodeEnum {
    #[yaserde(rename = "tns:DataEncodingUnknown")]
    DataEncodingUnknown,
    #[yaserde(rename = "tns:MustUnderstand")]
    MustUnderstand,
    #[yaserde(rename = "tns:Receiver")]
    Receiver,
    #[yaserde(rename = "tns:Sender")]
    Sender,
    #[yaserde(rename = "tns:VersionMismatch")]
    VersionMismatch,
    __Unknown__(String),
}

but the following is generated:

#[derive(Default, PartialEq, Debug, UtilsTupleIo, UtilsDefaultSerde)]
pub struct FaultcodeEnum(pub String);
victor-soloviev commented 4 years ago

After further exploration, experimentation, and discussion, we decided to generate String instead, which is already achieved. Generated code in onvif-rs repo was updated.