Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use new json encoding
  • Loading branch information
jonathanlking committed Dec 30, 2019
commit 8e72bfde6193c8c8a78cc888e2befc05ee70117d
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ public String generateDataType() {
if (kind.equals(KIND_TYPE)) {
sb.append("derive instance generic" + name + " :: Generic " + name + " _\n");
sb.append("instance encodeJson" + name + " :: EncodeJson " + name + " where\n");
sb.append(" encodeJson = genericEncodeJson\n");
sb.append(" encodeJson = genericEncodeJsonWith jsonEncoding\n");
sb.append("instance decodeJson" + name + " :: DecodeJson " + name + " where\n");
sb.append(" decodeJson = genericDecodeJson\n");
sb.append(" decodeJson = genericDecodeJsonWith jsonEncoding\n");
}
return sb.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,9 @@ public Map<String, String> generateApi(GProtocolName fullname) throws ScribbleEx
// Foreign imports
sections.add(ForeignType.generateImports(new HashSet<>(foreignImports.values())));

// TODO: Maybe this should be refactored out?
sections.add(jsonEncoding());

// Message data types
StringBuilder dt = new StringBuilder();
for (String type : datatypes.keySet()) {
Expand Down Expand Up @@ -328,8 +331,22 @@ private static String jsonImports() {
sb.append("import Data.Argonaut.Core (Json) -- From purescript-argonaut-core\n");
sb.append("import Data.Generic.Rep (class Generic) -- From purescript-generics-rep\n");
sb.append("-- From purescript-argonaut-generic\n");
sb.append("import Data.Argonaut.Decode.Generic.Rep (genericDecodeJson)\n");
sb.append("import Data.Argonaut.Encode.Generic.Rep (genericEncodeJson)\n");
sb.append("import Data.Argonaut.Decode.Generic.Rep (genericDecodeJsonWith)\n");
sb.append("import Data.Argonaut.Encode.Generic.Rep (genericEncodeJsonWith)\n");
sb.append("import Data.Argonaut.Types.Generic.Rep (Encoding)\n");

return sb.toString();
}

private static String jsonEncoding() {
StringBuilder sb = new StringBuilder();
sb.append("jsonEncoding :: Encoding\n");
sb.append("jsonEncoding =\n");
sb.append(" { tagKey: \"tag\"\n");
sb.append(" , valuesKey: \"values\"\n");
sb.append(" , unwrapSingleArguments: true\n");
sb.append(" }\n");

return sb.toString();
}

Expand Down