NijiDigital / gyro

Tool to generate Realm.io models for Swift, Java & ObjC from xcdatamodel and its visual Xcode editor
Apache License 2.0
93 stars 15 forks source link

Issue with generated enum format #17

Open Greensource opened 7 years ago

Greensource commented 7 years ago

When we declare enum like this :

capture d ecran 2017-04-25 a 14 58 43

In JAVA generation fails :

public enum ServiceType {

    PICKING("store_picking"),
    DELIVERY("home_delivery"),
    ("relay"),
    AND_COLLECT("click_and_collect"),
    ("drive");
}

In Swift 3 this is OK :

enum ServiceType: String {
    case storePicking = "store_picking"
    case homeDelivery = "home_delivery"
    case relay = "relay"
    case clickAndCollect = "click_and_collect"
    case drive = "drive"
}

A workaround is to declare case with uppercase first letter. But in this doesn't respect Swift 3 convention.

AliSoftware commented 7 years ago

Je me demande si ce n'est pas lié à la remarque que l'on s'est fait avec @StevenWatremez ici: https://github.com/NijiDigital/gyro/pull/16#discussion_r112545394 qui viendrait du coup d'une décision historique Monop — pour le cas où on n'a pas de JSONValues explicite et qu'on essaye de deviner les valeurs JSON en fonction des valeurs de l'enum — avec une décision sur les underscores qui n'a pas vraiment de raison d'être.

Quid si tu déclares une clé JSONValues pour lister explicitement les valeurs JSON en attendant mieux ?

Sinon l'autre solution est de t'attaquer aux templates Liquid pour Java dans la continuité de ce qu'a fait @StevenWatremez pour Swift 😉

AlainMullerNiji commented 7 years ago

Quid si tu déclares une clé JSONValues pour lister explicitement les valeurs JSON en attendant mieux ?

J'ai essayé le JSONValues, ça ne change rien sur la génération des enum, je pense que ça influe juste sur les attributs.

Il va falloir reprendre les templates, en attendant, nous sommes partis sur le workaround cité précédemment : majuscule en début de mot clé pour les enumValues.

AliSoftware commented 7 years ago

Now that gyro 1.0 has been released and officially uses templates (which have been tuned to improve the generated code as well), is this issue still present when you try it with 1.0?