{"id":26706603,"url":"https://github.com/pbalduino/dandelion","last_synced_at":"2025-04-13T15:22:20.446Z","repository":{"id":62434110,"uuid":"209250109","full_name":"pbalduino/dandelion","owner":"pbalduino","description":"A Clojure wrapper for Amazon Ion","archived":false,"fork":false,"pushed_at":"2020-01-28T14:21:55.000Z","size":18,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T06:18:31.529Z","etag":null,"topics":["amazon","clojure","dandelion","ion","ion-data"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pbalduino.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-18T07:50:27.000Z","updated_at":"2023-06-22T07:38:42.000Z","dependencies_parsed_at":"2022-11-01T21:15:45.268Z","dependency_job_id":null,"html_url":"https://github.com/pbalduino/dandelion","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pbalduino%2Fdandelion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pbalduino%2Fdandelion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pbalduino%2Fdandelion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pbalduino%2Fdandelion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pbalduino","download_url":"https://codeload.github.com/pbalduino/dandelion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248733225,"owners_count":21152980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon","clojure","dandelion","ion","ion-data"],"created_at":"2025-03-27T06:18:36.650Z","updated_at":"2025-04-13T15:22:20.425Z","avatar_url":"https://github.com/pbalduino.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dandelion\n\n[![Clojars Project](https://img.shields.io/clojars/v/pbalduino/dandelion.svg)](https://clojars.org/pbalduino/dandelion)\n\n[![cljdoc badge](https://cljdoc.org/badge/pbalduino/dandelion)](https://cljdoc.org/d/pbalduino/dandelion/CURRENT)\n\n## What?\n\n`Dandelion` is a small and lightweight library that allows you to convert Clojure data to Ion data and vice-versa without the burden to dive third-party source code or rely on outdated and half-baked documentation.\n\n## Why?\n\nFrom [Ion Docs](http://amzn.github.io/ion-docs/guides/why.html):\n\n\u003e Ion provides dual-format interoperability, which enables users to take advantage of the ease of use of the text format while capitalizing on the efficiency of the binary format. The text form is easy to prototype, test, and debug, while the binary format saves space and parsing effort.\n\u003e\n\u003e Ion’s rich type system extends JSON’s, adding support for types that make Ion suitable for a wider variety of uses, including precision-sensitive applications and portability across languages and runtimes.\n\u003e\n\u003e Ion is a self-describing format, giving its readers and writers the flexibility to exchange Ion data without needing to agree on a schema in advance. Ion’s “open-content” supports discovery, deep component chaining, and schema evolution.\n\u003e\n\u003e Because most data is read more often than it is written, Ion defines a read-optimised binary format.\n\nAnd because you're now writing something in Clojure (yeah!) and need to interoperate with this awkward format (boo!).\n\n## How?\n\n### Lein/Boot\n```\n[pbalduino/dandelion \"0.1.1\"]\n```\n\n### deps.edn\n```\npbalduino/dandelion {:mvn/version \"0.1.1\"}\n```\n\n### Samples\n\n```clojure\n(require [dandelion.core :refer [clj-\u003eion ion-\u003eclj])\n\n(def sample-data {\"text\" \"some text\"\n                  \"number\" 1234\n                  \"array\" [1, 2, 3, 4]\n                  \"obj\" {\"more-array\" [5, 6, 7]\n                         \"more-number\" 789.3}\n                  \"bool\" true\n                  \"null\" nil})\n\n;; To transform Clojure data in Ion value\n(-\u003e sample-data ; some Clojure data\n    clj-\u003eion    ; where the magic happens\n    str         ; convert to a readable string\n    println)    ; show me the money\n\n; {text:\"some text\",number:1234,array:[1,2,3,4], ↵\n;  obj:{'more-array':[5,6,7],'more-number':789.3}, ↵\n;  bool:true,'null':null}\n\n;; To transform Ion value to Clojure data\n(def ion-value (clj-\u003eion sample-data))\n\n(-\u003e ion-value              ; Ion value\n    ion-\u003eclj               ; simple, uh?\n    clojure.pprint/pprint) ; welcome back\n\n; {\"text\" \"some text\",\n;  \"number\" 1234,\n;  \"array\" [1 2 3 4],\n;  \"obj\" {\"more-array\" [5 6 7], \"more-number\" 789.3},\n;  \"bool\" true,\n;  \"null\" nil}\n```\n\nThat's all.\n\n## Who?\n[Plínio Balduino](https://github.com/pbalduino), software developer and problem solver.\n\n### Contributors (Thank you!)\n* Shayan Fouladi\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpbalduino%2Fdandelion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpbalduino%2Fdandelion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpbalduino%2Fdandelion/lists"}