From d9f3dd155bf0fa2e03e3083a6841f4e04b3da1ee Mon Sep 17 00:00:00 2001 From: Lachezar Yankov Date: Tue, 21 Nov 2017 11:18:25 +0100 Subject: [PATCH] added faster transformation to snake case --- CHANGELOG.md | 3 + README.md | 6 +- bench/basic_bench.exs | 22 + bench/snapshots/2016-05-04_22-21-57.snapshot | 6 - bench/snapshots/2017-11-21_11-13-42.snapshot | 10 + bench/test-payload-camel-cased.json | 966 ++++++++++++++++ bench/test-payloan-snake-cased.json | 1057 ++++++++++++++++++ lib/atomic_map.ex | 47 +- mix.exs | 5 +- mix.lock | 7 +- test/atomic_map_test.exs | 12 + 11 files changed, 2121 insertions(+), 20 deletions(-) delete mode 100644 bench/snapshots/2016-05-04_22-21-57.snapshot create mode 100644 bench/snapshots/2017-11-21_11-13-42.snapshot create mode 100644 bench/test-payload-camel-cased.json create mode 100644 bench/test-payloan-snake-cased.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e17e3d..a293ae3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ ## CHANGELOG +v0.10.0: +- added high performance custom transformation to snake case (underscore), which is more than 2 times faster than the original + v0.9.0: - underscore replaces now hyphens (https://github.com/ruby2elixir/atomic_map/pull/5 + https://github.com/ruby2elixir/atomic_map/pull/6) diff --git a/README.md b/README.md index 880408d..b8dd8e4 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,10 @@ iex> AtomicMap.convert(%{ "CamelCase" => [ %{"c" => 1}, %{"c" => 2}] }, safe: fa iex> AtomicMap.convert(%{ "CamelCase" => [ %{"c" => 1}, %{"c" => 2}] }, safe: false, underscore: false ) %{CamelCase: [%{c: 1}, %{c: 2}]} +# in case you have extra large maps and you wish to use the faster custom transformation to underscore, you can pass `high_perf: true` +AtomicMap.convert(%{ "CamelCase" => [ %{"c" => 1}, %{"c" => 2}] }, safe: false, high_perf: true) +%{camel_case: [%{c: 1}, %{c: 2}]} + # hyphens are replaced iex> AtomicMap.convert(%{ "some-key" => [ %{"c" => 1}, %{"c" => 2}] }, safe: false, underscore: true ) %{some_key: [%{c: 1}, %{c: 2}]} @@ -41,7 +45,7 @@ AtomicMap.convert(%{ "CamelCase" => [ %{"c" => 1}, %{"c" => 2}] }, safe: true, i 1. Add atomic_map to your list of dependencies in `mix.exs`: def deps do - [{:atomic_map, "~> 0.8"}] + [{:atomic_map, "~> 0.10"}] end ## Todo: diff --git a/bench/basic_bench.exs b/bench/basic_bench.exs index e85c221..9e0a0c6 100644 --- a/bench/basic_bench.exs +++ b/bench/basic_bench.exs @@ -18,6 +18,12 @@ defmodule BasicBench do @long_string "StringShouldChange-some_stuffStringShouldChange-some_stuffStringShouldChange-some_stuffStringShouldChange-some_stuffStringShouldChange-some_stuff" @short_string "StringShouldChange-some_stuff" + @payload_camel_cased File.read!("bench/test-payload-camel-cased.json") |> Poison.decode!() + @large_payload_camel_cased 1..100 |> Enum.reduce(%{}, fn(x, acc) -> Map.put(acc, "key#{x}", @payload_camel_cased) end) + + @payload_snake_cased File.read!("bench/test-payload-camel-cased.json") |> Poison.decode!() + @large_payload_snake_cased 1..100 |> Enum.reduce(%{}, fn(x, acc) -> Map.put(acc, "key#{x}", @payload_snake_cased) end) + bench "macro_underscore - long" do @long_string |> macro_underscore end @@ -33,4 +39,20 @@ defmodule BasicBench do bench "regex_underscore - short" do @short_string |> regex_underscore end + + bench "large dict camel cased with low perf underscore" do + @large_payload_camel_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: false) + end + + bench "large dict camel cased with high perf underscore" do + @large_payload_camel_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: true) + end + + bench "large dict snake cased with low perf underscore" do + @large_payload_snake_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: false) + end + + bench "large dict snake cased with high perf underscore" do + @large_payload_snake_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: true) + end end diff --git a/bench/snapshots/2016-05-04_22-21-57.snapshot b/bench/snapshots/2016-05-04_22-21-57.snapshot deleted file mode 100644 index 02ef2ab..0000000 --- a/bench/snapshots/2016-05-04_22-21-57.snapshot +++ /dev/null @@ -1,6 +0,0 @@ -duration:1.0;mem stats:false;sys mem stats:false -module;test;tags;iterations;elapsed -BasicBench regex_underscore - short 100000 2667305 -BasicBench regex_underscore - long 20000 1656602 -BasicBench macro_underscore - short 100000 1347365 -BasicBench macro_underscore - long 50000 2556233 diff --git a/bench/snapshots/2017-11-21_11-13-42.snapshot b/bench/snapshots/2017-11-21_11-13-42.snapshot new file mode 100644 index 0000000..1d0e781 --- /dev/null +++ b/bench/snapshots/2017-11-21_11-13-42.snapshot @@ -0,0 +1,10 @@ +duration:1.0;mem stats:false;sys mem stats:false +module;test;tags;iterations;elapsed +BasicBench large dict camel cased with high perf underscore 10 1256231 +BasicBench large dict camel cased with low perf underscore 5 1467331 +BasicBench large dict snake cased with high perf underscore 10 1223200 +BasicBench large dict snake cased with low perf underscore 5 1507264 +BasicBench macro_underscore - long 50000 2172177 +BasicBench macro_underscore - short 100000 1185552 +BasicBench regex_underscore - long 50000 2968897 +BasicBench regex_underscore - short 100000 1680492 diff --git a/bench/test-payload-camel-cased.json b/bench/test-payload-camel-cased.json new file mode 100644 index 0000000..109e231 --- /dev/null +++ b/bench/test-payload-camel-cased.json @@ -0,0 +1,966 @@ +[{ + "url": "https://api.github.com/gists/6c91efc3b76fbfa598999c4fb7b1d77a", + "forksUrl": "https://api.github.com/gists/6c91efc3b76fbfa598999c4fb7b1d77a/forks", + "commitsUrl": "https://api.github.com/gists/6c91efc3b76fbfa598999c4fb7b1d77a/commits", + "id": "6c91efc3b76fbfa598999c4fb7b1d77a", + "gitPullUrl": "https://gist.github.com/6c91efc3b76fbfa598999c4fb7b1d77a.git", + "gitPushUrl": "https://gist.github.com/6c91efc3b76fbfa598999c4fb7b1d77a.git", + "htmlUrl": "https://gist.github.com/6c91efc3b76fbfa598999c4fb7b1d77a", + "files": { + "words": { + "filename": "words", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/anonymous/6c91efc3b76fbfa598999c4fb7b1d77a/raw/0772f884d4a88523d47e4cc5cc07f4e87eedcee3/words", + "size": 1548 + } + }, + "public": true, + "createdAt": "2017-11-20T19:53:15Z", + "updatedAt": "2017-11-20T19:53:16Z", + "description": null, + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/6c91efc3b76fbfa598999c4fb7b1d77a/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/ca1077d447c5c66e6e01bfa68a03a1cd", + "forksUrl": "https://api.github.com/gists/ca1077d447c5c66e6e01bfa68a03a1cd/forks", + "commitsUrl": "https://api.github.com/gists/ca1077d447c5c66e6e01bfa68a03a1cd/commits", + "id": "ca1077d447c5c66e6e01bfa68a03a1cd", + "gitPullUrl": "https://gist.github.com/ca1077d447c5c66e6e01bfa68a03a1cd.git", + "gitPushUrl": "https://gist.github.com/ca1077d447c5c66e6e01bfa68a03a1cd.git", + "htmlUrl": "https://gist.github.com/ca1077d447c5c66e6e01bfa68a03a1cd", + "files": { + "NumberFormatter.swift": { + "filename": "NumberFormatter.swift", + "type": "text/plain", + "language": "Swift", + "rawUrl": "https://gist.githubusercontent.com/j-jeudesprit/ca1077d447c5c66e6e01bfa68a03a1cd/raw/ee38bce5f5d765d7592dd73b36a70536620251e3/NumberFormatter.swift", + "size": 252 + } + }, + "public": true, + "createdAt": "2017-11-20T19:53:04Z", + "updatedAt": "2017-11-20T19:53:05Z", + "description": "NumberFormatter", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/ca1077d447c5c66e6e01bfa68a03a1cd/comments", + "owner": { + "login": "j-jeudesprit", + "id": 31411009, + "avatarUrl": "https://avatars2.githubusercontent.com/u/31411009?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/j-jeudesprit", + "htmlUrl": "https://github.com/j-jeudesprit", + "followersUrl": "https://api.github.com/users/j-jeudesprit/followers", + "followingUrl": "https://api.github.com/users/j-jeudesprit/following{/other_user}", + "gistsUrl": "https://api.github.com/users/j-jeudesprit/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/j-jeudesprit/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/j-jeudesprit/subscriptions", + "organizationsUrl": "https://api.github.com/users/j-jeudesprit/orgs", + "reposUrl": "https://api.github.com/users/j-jeudesprit/repos", + "eventsUrl": "https://api.github.com/users/j-jeudesprit/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/j-jeudesprit/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/7c1bd372a174894c629b442e83a44191", + "forksUrl": "https://api.github.com/gists/7c1bd372a174894c629b442e83a44191/forks", + "commitsUrl": "https://api.github.com/gists/7c1bd372a174894c629b442e83a44191/commits", + "id": "7c1bd372a174894c629b442e83a44191", + "gitPullUrl": "https://gist.github.com/7c1bd372a174894c629b442e83a44191.git", + "gitPushUrl": "https://gist.github.com/7c1bd372a174894c629b442e83a44191.git", + "htmlUrl": "https://gist.github.com/7c1bd372a174894c629b442e83a44191", + "files": { + "-": { + "filename": "-", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/anonymous/7c1bd372a174894c629b442e83a44191/raw/494b51724b9fd15a9e0388a094e4b018c4e1669c/-", + "size": 3326 + } + }, + "public": true, + "createdAt": "2017-11-20T19:52:47Z", + "updatedAt": "2017-11-20T19:52:47Z", + "description": null, + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/7c1bd372a174894c629b442e83a44191/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/2538fbba15ab93503a1bf6fd92fa3398", + "forksUrl": "https://api.github.com/gists/2538fbba15ab93503a1bf6fd92fa3398/forks", + "commitsUrl": "https://api.github.com/gists/2538fbba15ab93503a1bf6fd92fa3398/commits", + "id": "2538fbba15ab93503a1bf6fd92fa3398", + "gitPullUrl": "https://gist.github.com/2538fbba15ab93503a1bf6fd92fa3398.git", + "gitPushUrl": "https://gist.github.com/2538fbba15ab93503a1bf6fd92fa3398.git", + "htmlUrl": "https://gist.github.com/2538fbba15ab93503a1bf6fd92fa3398", + "files": { + "config.json": { + "filename": "config.json", + "type": "application/json", + "language": "JSON", + "rawUrl": "https://gist.githubusercontent.com/anonymous/2538fbba15ab93503a1bf6fd92fa3398/raw/ad60b681cdb210454546e7b86477708a5d4a1de1/config.json", + "size": 17854 + } + }, + "public": true, + "createdAt": "2017-11-20T19:52:31Z", + "updatedAt": "2017-11-20T19:52:31Z", + "description": "Bootstrap Customizer Config", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/2538fbba15ab93503a1bf6fd92fa3398/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/fbad9d4b9575c6e27aaa356ba3279334", + "forksUrl": "https://api.github.com/gists/fbad9d4b9575c6e27aaa356ba3279334/forks", + "commitsUrl": "https://api.github.com/gists/fbad9d4b9575c6e27aaa356ba3279334/commits", + "id": "fbad9d4b9575c6e27aaa356ba3279334", + "gitPullUrl": "https://gist.github.com/fbad9d4b9575c6e27aaa356ba3279334.git", + "gitPushUrl": "https://gist.github.com/fbad9d4b9575c6e27aaa356ba3279334.git", + "htmlUrl": "https://gist.github.com/fbad9d4b9575c6e27aaa356ba3279334", + "files": { + "config.json": { + "filename": "config.json", + "type": "application/json", + "language": "JSON", + "rawUrl": "https://gist.githubusercontent.com/anonymous/fbad9d4b9575c6e27aaa356ba3279334/raw/b4049cb9eefc93bceb14cbc8ffe7d1467085f47c/config.json", + "size": 18208 + } + }, + "public": true, + "createdAt": "2017-11-20T19:52:18Z", + "updatedAt": "2017-11-20T19:52:18Z", + "description": "Bootstrap Customizer Config", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/fbad9d4b9575c6e27aaa356ba3279334/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/f5d07510f8fac63f3ef2e02a9224c8b6", + "forksUrl": "https://api.github.com/gists/f5d07510f8fac63f3ef2e02a9224c8b6/forks", + "commitsUrl": "https://api.github.com/gists/f5d07510f8fac63f3ef2e02a9224c8b6/commits", + "id": "f5d07510f8fac63f3ef2e02a9224c8b6", + "gitPullUrl": "https://gist.github.com/f5d07510f8fac63f3ef2e02a9224c8b6.git", + "gitPushUrl": "https://gist.github.com/f5d07510f8fac63f3ef2e02a9224c8b6.git", + "htmlUrl": "https://gist.github.com/f5d07510f8fac63f3ef2e02a9224c8b6", + "files": { + "-": { + "filename": "-", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/anonymous/f5d07510f8fac63f3ef2e02a9224c8b6/raw/d23f0c535b559ef3f17cbd70489dae563e61c5f4/-", + "size": 3489 + } + }, + "public": true, + "createdAt": "2017-11-20T19:52:08Z", + "updatedAt": "2017-11-20T19:52:08Z", + "description": null, + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/f5d07510f8fac63f3ef2e02a9224c8b6/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/d047f52cc800b2f19d76500aa4a5b0ee", + "forksUrl": "https://api.github.com/gists/d047f52cc800b2f19d76500aa4a5b0ee/forks", + "commitsUrl": "https://api.github.com/gists/d047f52cc800b2f19d76500aa4a5b0ee/commits", + "id": "d047f52cc800b2f19d76500aa4a5b0ee", + "gitPullUrl": "https://gist.github.com/d047f52cc800b2f19d76500aa4a5b0ee.git", + "gitPushUrl": "https://gist.github.com/d047f52cc800b2f19d76500aa4a5b0ee.git", + "htmlUrl": "https://gist.github.com/d047f52cc800b2f19d76500aa4a5b0ee", + "files": { + "-": { + "filename": "-", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/anonymous/d047f52cc800b2f19d76500aa4a5b0ee/raw/ec08e3c8f46ac2b15ebd8aac5c7dd76eb1a5eddb/-", + "size": 3489 + } + }, + "public": true, + "createdAt": "2017-11-20T19:52:06Z", + "updatedAt": "2017-11-20T19:52:07Z", + "description": null, + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/d047f52cc800b2f19d76500aa4a5b0ee/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/90bac957a03437d9cdffa80538f7574a", + "forksUrl": "https://api.github.com/gists/90bac957a03437d9cdffa80538f7574a/forks", + "commitsUrl": "https://api.github.com/gists/90bac957a03437d9cdffa80538f7574a/commits", + "id": "90bac957a03437d9cdffa80538f7574a", + "gitPullUrl": "https://gist.github.com/90bac957a03437d9cdffa80538f7574a.git", + "gitPushUrl": "https://gist.github.com/90bac957a03437d9cdffa80538f7574a.git", + "htmlUrl": "https://gist.github.com/90bac957a03437d9cdffa80538f7574a", + "files": { + "brlog.trunk.20171121-045034": { + "filename": "brlog.trunk.20171121-045034", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/anonymous/90bac957a03437d9cdffa80538f7574a/raw/6000b1dcdd8f75b0a563220ab5b51a6565aa7336/brlog.trunk.20171121-045034", + "size": 47316 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:58Z", + "updatedAt": "2017-11-20T19:51:58Z", + "description": null, + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/90bac957a03437d9cdffa80538f7574a/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/e5a603ae9487ec9a94e0d558991bb90e", + "forksUrl": "https://api.github.com/gists/e5a603ae9487ec9a94e0d558991bb90e/forks", + "commitsUrl": "https://api.github.com/gists/e5a603ae9487ec9a94e0d558991bb90e/commits", + "id": "e5a603ae9487ec9a94e0d558991bb90e", + "gitPullUrl": "https://gist.github.com/e5a603ae9487ec9a94e0d558991bb90e.git", + "gitPushUrl": "https://gist.github.com/e5a603ae9487ec9a94e0d558991bb90e.git", + "htmlUrl": "https://gist.github.com/e5a603ae9487ec9a94e0d558991bb90e", + "files": { + "file1.txt": { + "filename": "file1.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/anonymous/e5a603ae9487ec9a94e0d558991bb90e/raw/6db9f73ad04c51804a9068feb44fb4306a6cea3e/file1.txt", + "size": 235 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:57Z", + "updatedAt": "2017-11-20T19:51:57Z", + "description": "a gist for a user with token api call via ajax", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/e5a603ae9487ec9a94e0d558991bb90e/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/81107c4173040bb39dfecec6473f1c07", + "forksUrl": "https://api.github.com/gists/81107c4173040bb39dfecec6473f1c07/forks", + "commitsUrl": "https://api.github.com/gists/81107c4173040bb39dfecec6473f1c07/commits", + "id": "81107c4173040bb39dfecec6473f1c07", + "gitPullUrl": "https://gist.github.com/81107c4173040bb39dfecec6473f1c07.git", + "gitPushUrl": "https://gist.github.com/81107c4173040bb39dfecec6473f1c07.git", + "htmlUrl": "https://gist.github.com/81107c4173040bb39dfecec6473f1c07", + "files": { + "WarpedFairAsianlion.js": { + "filename": "WarpedFairAsianlion.js", + "type": "application/javascript", + "language": "JavaScript", + "rawUrl": "https://gist.githubusercontent.com/anonymous/81107c4173040bb39dfecec6473f1c07/raw/3889a07ca650e2917222e39018211063fc435269/WarpedFairAsianlion.js", + "size": 562 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:52Z", + "updatedAt": "2017-11-20T19:51:52Z", + "description": "WarpedFairAsianlion created by sashat14 - https://repl.it/@sashat14/WarpedFairAsianlion", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/81107c4173040bb39dfecec6473f1c07/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/9af558535015239b2606da87c03dc8d3", + "forksUrl": "https://api.github.com/gists/9af558535015239b2606da87c03dc8d3/forks", + "commitsUrl": "https://api.github.com/gists/9af558535015239b2606da87c03dc8d3/commits", + "id": "9af558535015239b2606da87c03dc8d3", + "gitPullUrl": "https://gist.github.com/9af558535015239b2606da87c03dc8d3.git", + "gitPushUrl": "https://gist.github.com/9af558535015239b2606da87c03dc8d3.git", + "htmlUrl": "https://gist.github.com/9af558535015239b2606da87c03dc8d3", + "files": { + "server_roles.txt": { + "filename": "server_roles.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/anonymous/9af558535015239b2606da87c03dc8d3/raw/c9ec55e4c2580e03456dbb956280bfa12734e5c5/server_roles.txt", + "size": 4188 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:46Z", + "updatedAt": "2017-11-20T19:51:46Z", + "description": "All Roles in: Gamer Over", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/9af558535015239b2606da87c03dc8d3/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/555dd6842061721a8877a83eb5fefc4a", + "forksUrl": "https://api.github.com/gists/555dd6842061721a8877a83eb5fefc4a/forks", + "commitsUrl": "https://api.github.com/gists/555dd6842061721a8877a83eb5fefc4a/commits", + "id": "555dd6842061721a8877a83eb5fefc4a", + "gitPullUrl": "https://gist.github.com/555dd6842061721a8877a83eb5fefc4a.git", + "gitPushUrl": "https://gist.github.com/555dd6842061721a8877a83eb5fefc4a.git", + "htmlUrl": "https://gist.github.com/555dd6842061721a8877a83eb5fefc4a", + "files": { + "server.txt": { + "filename": "server.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/anonymous/555dd6842061721a8877a83eb5fefc4a/raw/f2fec7938242a66ee7d7c4c480cbf329bed68eda/server.txt", + "size": 2132 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:45Z", + "updatedAt": "2017-11-20T19:51:45Z", + "description": "All Users in: Gamer Over", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/555dd6842061721a8877a83eb5fefc4a/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/5e07de78bf93b04a01eff41e622cb15a", + "forksUrl": "https://api.github.com/gists/5e07de78bf93b04a01eff41e622cb15a/forks", + "commitsUrl": "https://api.github.com/gists/5e07de78bf93b04a01eff41e622cb15a/commits", + "id": "5e07de78bf93b04a01eff41e622cb15a", + "gitPullUrl": "https://gist.github.com/5e07de78bf93b04a01eff41e622cb15a.git", + "gitPushUrl": "https://gist.github.com/5e07de78bf93b04a01eff41e622cb15a.git", + "htmlUrl": "https://gist.github.com/5e07de78bf93b04a01eff41e622cb15a", + "files": { + "serverbans.txt": { + "filename": "serverbans.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/anonymous/5e07de78bf93b04a01eff41e622cb15a/raw/d09e209a079140fa916aafe52a2841ac553141d2/serverbans.txt", + "size": 6 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:43Z", + "updatedAt": "2017-11-20T19:51:44Z", + "description": "All bans in: Gamer Over", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/5e07de78bf93b04a01eff41e622cb15a/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/162a7f05e9e415d9481c62fdfb46054a", + "forksUrl": "https://api.github.com/gists/162a7f05e9e415d9481c62fdfb46054a/forks", + "commitsUrl": "https://api.github.com/gists/162a7f05e9e415d9481c62fdfb46054a/commits", + "id": "162a7f05e9e415d9481c62fdfb46054a", + "gitPullUrl": "https://gist.github.com/162a7f05e9e415d9481c62fdfb46054a.git", + "gitPushUrl": "https://gist.github.com/162a7f05e9e415d9481c62fdfb46054a.git", + "htmlUrl": "https://gist.github.com/162a7f05e9e415d9481c62fdfb46054a", + "files": { + "server_roles.txt": { + "filename": "server_roles.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/anonymous/162a7f05e9e415d9481c62fdfb46054a/raw/c9ec55e4c2580e03456dbb956280bfa12734e5c5/server_roles.txt", + "size": 4188 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:42Z", + "updatedAt": "2017-11-20T19:51:42Z", + "description": "All Roles in: Gamer Over", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/162a7f05e9e415d9481c62fdfb46054a/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/3d7b4f0d56500112036121ff594f42fd", + "forksUrl": "https://api.github.com/gists/3d7b4f0d56500112036121ff594f42fd/forks", + "commitsUrl": "https://api.github.com/gists/3d7b4f0d56500112036121ff594f42fd/commits", + "id": "3d7b4f0d56500112036121ff594f42fd", + "gitPullUrl": "https://gist.github.com/3d7b4f0d56500112036121ff594f42fd.git", + "gitPushUrl": "https://gist.github.com/3d7b4f0d56500112036121ff594f42fd.git", + "htmlUrl": "https://gist.github.com/3d7b4f0d56500112036121ff594f42fd", + "files": { + "log.md": { + "filename": "log.md", + "type": "text/plain", + "language": "Markdown", + "rawUrl": "https://gist.githubusercontent.com/anonymous/3d7b4f0d56500112036121ff594f42fd/raw/3521ea1fdcaf18c46e07f515f16353b34f28556f/log.md", + "size": 549 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:39Z", + "updatedAt": "2017-11-20T19:51:39Z", + "description": "AD3MIUMC201 D1CKS0UT4H4R4MB3", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/3d7b4f0d56500112036121ff594f42fd/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/220087512980c1e14099d024da3e6757", + "forksUrl": "https://api.github.com/gists/220087512980c1e14099d024da3e6757/forks", + "commitsUrl": "https://api.github.com/gists/220087512980c1e14099d024da3e6757/commits", + "id": "220087512980c1e14099d024da3e6757", + "gitPullUrl": "https://gist.github.com/220087512980c1e14099d024da3e6757.git", + "gitPushUrl": "https://gist.github.com/220087512980c1e14099d024da3e6757.git", + "htmlUrl": "https://gist.github.com/220087512980c1e14099d024da3e6757", + "files": { + "1.RegistrySnapshot.xml": { + "filename": "1.RegistrySnapshot.xml", + "type": "application/xml", + "language": "XML", + "rawUrl": "https://gist.githubusercontent.com/choco-bot/220087512980c1e14099d024da3e6757/raw/b4630788ac9389e9649e01c5522868936e330145/1.RegistrySnapshot.xml", + "size": 1518 + }, + "FilesSnapshot.xml": { + "filename": "FilesSnapshot.xml", + "type": "application/xml", + "language": "XML", + "rawUrl": "https://gist.githubusercontent.com/choco-bot/220087512980c1e14099d024da3e6757/raw/5737693110c16e3c6be9e846f56c4b80a80e7d1e/FilesSnapshot.xml", + "size": 684 + }, + "Install.txt": { + "filename": "Install.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/choco-bot/220087512980c1e14099d024da3e6757/raw/3ee707bfe191ecbcb3d5b6a5ee04c6c2d28a5685/Install.txt", + "size": 36495 + }, + "Uninstall.txt": { + "filename": "Uninstall.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/choco-bot/220087512980c1e14099d024da3e6757/raw/4150611c108f56263d0620b1ef0e3efe160f725b/Uninstall.txt", + "size": 29904 + }, + "_Summary.md": { + "filename": "_Summary.md", + "type": "text/plain", + "language": "Markdown", + "rawUrl": "https://gist.githubusercontent.com/choco-bot/220087512980c1e14099d024da3e6757/raw/cca14d14c9018cd8bfe508e9a3fd18412b5a5154/_Summary.md", + "size": 443 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:38Z", + "updatedAt": "2017-11-20T19:51:38Z", + "description": "rdmfree v4.0.3.0 - Passed - Package Tests Results", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/220087512980c1e14099d024da3e6757/comments", + "owner": { + "login": "choco-bot", + "id": 6270979, + "avatarUrl": "https://avatars2.githubusercontent.com/u/6270979?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/choco-bot", + "htmlUrl": "https://github.com/choco-bot", + "followersUrl": "https://api.github.com/users/choco-bot/followers", + "followingUrl": "https://api.github.com/users/choco-bot/following{/other_user}", + "gistsUrl": "https://api.github.com/users/choco-bot/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/choco-bot/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/choco-bot/subscriptions", + "organizationsUrl": "https://api.github.com/users/choco-bot/orgs", + "reposUrl": "https://api.github.com/users/choco-bot/repos", + "eventsUrl": "https://api.github.com/users/choco-bot/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/choco-bot/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/1312193401800c09042afbf07b9bc131", + "forksUrl": "https://api.github.com/gists/1312193401800c09042afbf07b9bc131/forks", + "commitsUrl": "https://api.github.com/gists/1312193401800c09042afbf07b9bc131/commits", + "id": "1312193401800c09042afbf07b9bc131", + "gitPullUrl": "https://gist.github.com/1312193401800c09042afbf07b9bc131.git", + "gitPushUrl": "https://gist.github.com/1312193401800c09042afbf07b9bc131.git", + "htmlUrl": "https://gist.github.com/1312193401800c09042afbf07b9bc131", + "files": { + "subtitle.srt": { + "filename": "subtitle.srt", + "type": "text/plain", + "language": "SubRip Text", + "rawUrl": "https://gist.githubusercontent.com/anonymous/1312193401800c09042afbf07b9bc131/raw/c501705f3c50d00bb0a91bea07cdf08ba5d1c307/subtitle.srt", + "size": 74674 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:35Z", + "updatedAt": "2017-11-20T19:51:36Z", + "description": "Go Movies Subtitle", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/1312193401800c09042afbf07b9bc131/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/e29ae059b639265a09c3d57a9b6a2abf", + "forksUrl": "https://api.github.com/gists/e29ae059b639265a09c3d57a9b6a2abf/forks", + "commitsUrl": "https://api.github.com/gists/e29ae059b639265a09c3d57a9b6a2abf/commits", + "id": "e29ae059b639265a09c3d57a9b6a2abf", + "gitPullUrl": "https://gist.github.com/e29ae059b639265a09c3d57a9b6a2abf.git", + "gitPushUrl": "https://gist.github.com/e29ae059b639265a09c3d57a9b6a2abf.git", + "htmlUrl": "https://gist.github.com/e29ae059b639265a09c3d57a9b6a2abf", + "files": { + "openpanzer-save.json": { + "filename": "openpanzer-save.json", + "type": "application/json", + "language": "JSON", + "rawUrl": "https://gist.githubusercontent.com/openpanzer/e29ae059b639265a09c3d57a9b6a2abf/raw/25a85028be9dc2dabad9287a0a0d853aeb0c3d73/openpanzer-save.json", + "size": 341017 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:32Z", + "updatedAt": "2017-11-20T19:51:33Z", + "description": "Bzura Counterattack-3", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/e29ae059b639265a09c3d57a9b6a2abf/comments", + "owner": { + "login": "openpanzer", + "id": 5112272, + "avatarUrl": "https://avatars0.githubusercontent.com/u/5112272?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/openpanzer", + "htmlUrl": "https://github.com/openpanzer", + "followersUrl": "https://api.github.com/users/openpanzer/followers", + "followingUrl": "https://api.github.com/users/openpanzer/following{/other_user}", + "gistsUrl": "https://api.github.com/users/openpanzer/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/openpanzer/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/openpanzer/subscriptions", + "organizationsUrl": "https://api.github.com/users/openpanzer/orgs", + "reposUrl": "https://api.github.com/users/openpanzer/repos", + "eventsUrl": "https://api.github.com/users/openpanzer/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/openpanzer/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/c41a514f5fe7d1b345c0587d17cc5ecd", + "forksUrl": "https://api.github.com/gists/c41a514f5fe7d1b345c0587d17cc5ecd/forks", + "commitsUrl": "https://api.github.com/gists/c41a514f5fe7d1b345c0587d17cc5ecd/commits", + "id": "c41a514f5fe7d1b345c0587d17cc5ecd", + "gitPullUrl": "https://gist.github.com/c41a514f5fe7d1b345c0587d17cc5ecd.git", + "gitPushUrl": "https://gist.github.com/c41a514f5fe7d1b345c0587d17cc5ecd.git", + "htmlUrl": "https://gist.github.com/c41a514f5fe7d1b345c0587d17cc5ecd", + "files": { + "-": { + "filename": "-", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/anonymous/c41a514f5fe7d1b345c0587d17cc5ecd/raw/1fcc02e85a5378a762af40c8f0920335cb9adac8/-", + "size": 2773 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:29Z", + "updatedAt": "2017-11-20T19:51:29Z", + "description": null, + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/c41a514f5fe7d1b345c0587d17cc5ecd/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/c0ed3ec050f9550304b4e34e6abfb934", + "forksUrl": "https://api.github.com/gists/c0ed3ec050f9550304b4e34e6abfb934/forks", + "commitsUrl": "https://api.github.com/gists/c0ed3ec050f9550304b4e34e6abfb934/commits", + "id": "c0ed3ec050f9550304b4e34e6abfb934", + "gitPullUrl": "https://gist.github.com/c0ed3ec050f9550304b4e34e6abfb934.git", + "gitPushUrl": "https://gist.github.com/c0ed3ec050f9550304b4e34e6abfb934.git", + "htmlUrl": "https://gist.github.com/c0ed3ec050f9550304b4e34e6abfb934", + "files": { + "questao08": { + "filename": "questao08", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/edymestre/c0ed3ec050f9550304b4e34e6abfb934/raw/4e49ac8771c8a76fec4f6c4c9c88372d06d0f2a6/questao08", + "size": 1939 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:26Z", + "updatedAt": "2017-11-20T19:51:26Z", + "description": "BST", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/c0ed3ec050f9550304b4e34e6abfb934/comments", + "owner": { + "login": "edymestre", + "id": 28533914, + "avatarUrl": "https://avatars2.githubusercontent.com/u/28533914?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edymestre", + "htmlUrl": "https://github.com/edymestre", + "followersUrl": "https://api.github.com/users/edymestre/followers", + "followingUrl": "https://api.github.com/users/edymestre/following{/other_user}", + "gistsUrl": "https://api.github.com/users/edymestre/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/edymestre/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/edymestre/subscriptions", + "organizationsUrl": "https://api.github.com/users/edymestre/orgs", + "reposUrl": "https://api.github.com/users/edymestre/repos", + "eventsUrl": "https://api.github.com/users/edymestre/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/edymestre/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/b44c0b9d35355152184050f19c2a9204", + "forksUrl": "https://api.github.com/gists/b44c0b9d35355152184050f19c2a9204/forks", + "commitsUrl": "https://api.github.com/gists/b44c0b9d35355152184050f19c2a9204/commits", + "id": "b44c0b9d35355152184050f19c2a9204", + "gitPullUrl": "https://gist.github.com/b44c0b9d35355152184050f19c2a9204.git", + "gitPushUrl": "https://gist.github.com/b44c0b9d35355152184050f19c2a9204.git", + "htmlUrl": "https://gist.github.com/b44c0b9d35355152184050f19c2a9204", + "files": { + "brlog.trunk-test.20171121-044837": { + "filename": "brlog.trunk-test.20171121-044837", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/ko1/b44c0b9d35355152184050f19c2a9204/raw/1d6b21ebe1b072a1918f44b4974d16186db63cc5/brlog.trunk-test.20171121-044837", + "size": 47318 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:25Z", + "updatedAt": "2017-11-20T19:51:25Z", + "description": null, + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/b44c0b9d35355152184050f19c2a9204/comments", + "owner": { + "login": "ko1", + "id": 9558, + "avatarUrl": "https://avatars3.githubusercontent.com/u/9558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ko1", + "htmlUrl": "https://github.com/ko1", + "followersUrl": "https://api.github.com/users/ko1/followers", + "followingUrl": "https://api.github.com/users/ko1/following{/other_user}", + "gistsUrl": "https://api.github.com/users/ko1/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/ko1/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/ko1/subscriptions", + "organizationsUrl": "https://api.github.com/users/ko1/orgs", + "reposUrl": "https://api.github.com/users/ko1/repos", + "eventsUrl": "https://api.github.com/users/ko1/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/ko1/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/cfdfa1de01715dae5991fb637ea7da35", + "forksUrl": "https://api.github.com/gists/cfdfa1de01715dae5991fb637ea7da35/forks", + "commitsUrl": "https://api.github.com/gists/cfdfa1de01715dae5991fb637ea7da35/commits", + "id": "cfdfa1de01715dae5991fb637ea7da35", + "gitPullUrl": "https://gist.github.com/cfdfa1de01715dae5991fb637ea7da35.git", + "gitPushUrl": "https://gist.github.com/cfdfa1de01715dae5991fb637ea7da35.git", + "htmlUrl": "https://gist.github.com/cfdfa1de01715dae5991fb637ea7da35", + "files": { + "BFS_.idea_BFS.iml": { + "filename": "BFS_.idea_BFS.iml", + "type": "text/plain", + "language": "XML", + "rawUrl": "https://gist.githubusercontent.com/gonzarias/cfdfa1de01715dae5991fb637ea7da35/raw/6711606311e2664bd835f92b5c114681d2e284f5/BFS_.idea_BFS.iml", + "size": 398 + }, + "BFS_.idea_misc.xml": { + "filename": "BFS_.idea_misc.xml", + "type": "application/xml", + "language": "XML", + "rawUrl": "https://gist.githubusercontent.com/gonzarias/cfdfa1de01715dae5991fb637ea7da35/raw/73d08a2fa9c16f1e260ee39bd1db8d7a659f3670/BFS_.idea_misc.xml", + "size": 257 + }, + "BFS_.idea_modules.xml": { + "filename": "BFS_.idea_modules.xml", + "type": "application/xml", + "language": "XML", + "rawUrl": "https://gist.githubusercontent.com/gonzarias/cfdfa1de01715dae5991fb637ea7da35/raw/679db846955187083f7b1ac87d7ad8977a803b36/BFS_.idea_modules.xml", + "size": 258 + }, + "BFS_model_BFSearchD.py": { + "filename": "BFS_model_BFSearchD.py", + "type": "application/x-python", + "language": "Python", + "rawUrl": "https://gist.githubusercontent.com/gonzarias/cfdfa1de01715dae5991fb637ea7da35/raw/437e441e414533cb9ee99ae34fe73bea6edf0c0b/BFS_model_BFSearchD.py", + "size": 1463 + }, + "BFS_model_MyQUEUE.py": { + "filename": "BFS_model_MyQUEUE.py", + "type": "application/x-python", + "language": "Python", + "rawUrl": "https://gist.githubusercontent.com/gonzarias/cfdfa1de01715dae5991fb637ea7da35/raw/88214cea523a7ced2c995ca91c3de23d5bc36a62/BFS_model_MyQUEUE.py", + "size": 583 + }, + "BFS_model_main.py": { + "filename": "BFS_model_main.py", + "type": "application/x-python", + "language": "Python", + "rawUrl": "https://gist.githubusercontent.com/gonzarias/cfdfa1de01715dae5991fb637ea7da35/raw/698adc2cd19c594ee5f82dc8bc2a645f1844dd4b/BFS_model_main.py", + "size": 1745 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:23Z", + "updatedAt": "2017-11-20T19:51:23Z", + "description": "discreta", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/cfdfa1de01715dae5991fb637ea7da35/comments", + "owner": { + "login": "gonzarias", + "id": 23236660, + "avatarUrl": "https://avatars2.githubusercontent.com/u/23236660?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gonzarias", + "htmlUrl": "https://github.com/gonzarias", + "followersUrl": "https://api.github.com/users/gonzarias/followers", + "followingUrl": "https://api.github.com/users/gonzarias/following{/other_user}", + "gistsUrl": "https://api.github.com/users/gonzarias/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/gonzarias/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/gonzarias/subscriptions", + "organizationsUrl": "https://api.github.com/users/gonzarias/orgs", + "reposUrl": "https://api.github.com/users/gonzarias/repos", + "eventsUrl": "https://api.github.com/users/gonzarias/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/gonzarias/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/267ce86717ec192f9736fa6f3a64b064", + "forksUrl": "https://api.github.com/gists/267ce86717ec192f9736fa6f3a64b064/forks", + "commitsUrl": "https://api.github.com/gists/267ce86717ec192f9736fa6f3a64b064/commits", + "id": "267ce86717ec192f9736fa6f3a64b064", + "gitPullUrl": "https://gist.github.com/267ce86717ec192f9736fa6f3a64b064.git", + "gitPushUrl": "https://gist.github.com/267ce86717ec192f9736fa6f3a64b064.git", + "htmlUrl": "https://gist.github.com/267ce86717ec192f9736fa6f3a64b064", + "files": { + "log.md": { + "filename": "log.md", + "type": "text/plain", + "language": "Markdown", + "rawUrl": "https://gist.githubusercontent.com/anonymous/267ce86717ec192f9736fa6f3a64b064/raw/3768886062173000d7cfbc6ae8456d8b0b709249/log.md", + "size": 1464 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:08Z", + "updatedAt": "2017-11-20T19:51:09Z", + "description": "AD3MIUMC201 D1CKS0UT4H4R4MB3", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/267ce86717ec192f9736fa6f3a64b064/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/7349c1313b8739d40dd59946707ae910", + "forksUrl": "https://api.github.com/gists/7349c1313b8739d40dd59946707ae910/forks", + "commitsUrl": "https://api.github.com/gists/7349c1313b8739d40dd59946707ae910/commits", + "id": "7349c1313b8739d40dd59946707ae910", + "gitPullUrl": "https://gist.github.com/7349c1313b8739d40dd59946707ae910.git", + "gitPushUrl": "https://gist.github.com/7349c1313b8739d40dd59946707ae910.git", + "htmlUrl": "https://gist.github.com/7349c1313b8739d40dd59946707ae910", + "files": { + "gistfile1.txt": { + "filename": "gistfile1.txt", + "type": "text/plain", + "language": "Text", + "rawUrl": "https://gist.githubusercontent.com/anonymous/7349c1313b8739d40dd59946707ae910/raw/34770b9e687525dcf37dcfe49d2a673931790afe/gistfile1.txt", + "size": 3045 + } + }, + "public": true, + "createdAt": "2017-11-20T19:51:00Z", + "updatedAt": "2017-11-20T19:51:00Z", + "description": "", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/7349c1313b8739d40dd59946707ae910/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/8fa4010394145ccd4d4102a0e833fff9", + "forksUrl": "https://api.github.com/gists/8fa4010394145ccd4d4102a0e833fff9/forks", + "commitsUrl": "https://api.github.com/gists/8fa4010394145ccd4d4102a0e833fff9/commits", + "id": "8fa4010394145ccd4d4102a0e833fff9", + "gitPullUrl": "https://gist.github.com/8fa4010394145ccd4d4102a0e833fff9.git", + "gitPushUrl": "https://gist.github.com/8fa4010394145ccd4d4102a0e833fff9.git", + "htmlUrl": "https://gist.github.com/8fa4010394145ccd4d4102a0e833fff9", + "files": { + "purduecas.py": { + "filename": "purduecas.py", + "type": "application/x-python", + "language": "Python", + "rawUrl": "https://gist.githubusercontent.com/elnardu/8fa4010394145ccd4d4102a0e833fff9/raw/f29f1cb84c669cf75c6a902d3bc6249d55fb2551/purduecas.py", + "size": 813 + } + }, + "public": true, + "createdAt": "2017-11-20T19:50:44Z", + "updatedAt": "2017-11-20T19:50:44Z", + "description": "Simple purdue cas auth", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/8fa4010394145ccd4d4102a0e833fff9/comments", + "owner": { + "login": "elnardu", + "id": 8999001, + "avatarUrl": "https://avatars0.githubusercontent.com/u/8999001?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/elnardu", + "htmlUrl": "https://github.com/elnardu", + "followersUrl": "https://api.github.com/users/elnardu/followers", + "followingUrl": "https://api.github.com/users/elnardu/following{/other_user}", + "gistsUrl": "https://api.github.com/users/elnardu/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/elnardu/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/elnardu/subscriptions", + "organizationsUrl": "https://api.github.com/users/elnardu/orgs", + "reposUrl": "https://api.github.com/users/elnardu/repos", + "eventsUrl": "https://api.github.com/users/elnardu/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/elnardu/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/f66c80f9bc63a275615faa568fb0e2d1", + "forksUrl": "https://api.github.com/gists/f66c80f9bc63a275615faa568fb0e2d1/forks", + "commitsUrl": "https://api.github.com/gists/f66c80f9bc63a275615faa568fb0e2d1/commits", + "id": "f66c80f9bc63a275615faa568fb0e2d1", + "gitPullUrl": "https://gist.github.com/f66c80f9bc63a275615faa568fb0e2d1.git", + "gitPushUrl": "https://gist.github.com/f66c80f9bc63a275615faa568fb0e2d1.git", + "htmlUrl": "https://gist.github.com/f66c80f9bc63a275615faa568fb0e2d1", + "files": { + "nodes.kml": { + "filename": "nodes.kml", + "type": "application/vnd.google-earth.kml+xml", + "language": "XML", + "rawUrl": "https://gist.githubusercontent.com/anonymous/f66c80f9bc63a275615faa568fb0e2d1/raw/0bca6383fd8abb5ca30efbf69a930b16f8f3c539/nodes.kml", + "size": 126968 + } + }, + "public": true, + "createdAt": "2017-11-20T19:50:36Z", + "updatedAt": "2017-11-20T19:50:36Z", + "description": "the description for this gist", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/f66c80f9bc63a275615faa568fb0e2d1/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/e53a822c33fda1d641403facd1c74fae", + "forksUrl": "https://api.github.com/gists/e53a822c33fda1d641403facd1c74fae/forks", + "commitsUrl": "https://api.github.com/gists/e53a822c33fda1d641403facd1c74fae/commits", + "id": "e53a822c33fda1d641403facd1c74fae", + "gitPullUrl": "https://gist.github.com/e53a822c33fda1d641403facd1c74fae.git", + "gitPushUrl": "https://gist.github.com/e53a822c33fda1d641403facd1c74fae.git", + "htmlUrl": "https://gist.github.com/e53a822c33fda1d641403facd1c74fae", + "files": { + "config.json": { + "filename": "config.json", + "type": "application/json", + "language": "JSON", + "rawUrl": "https://gist.githubusercontent.com/anonymous/e53a822c33fda1d641403facd1c74fae/raw/d9ed36b00cf583b6954cd91b613adbaf30cf7cb5/config.json", + "size": 17449 + } + }, + "public": true, + "createdAt": "2017-11-20T19:50:29Z", + "updatedAt": "2017-11-20T19:50:29Z", + "description": "Bootstrap Customizer Config", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/e53a822c33fda1d641403facd1c74fae/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/d1c695a6a63941b1b2d37ec66e02cb41", + "forksUrl": "https://api.github.com/gists/d1c695a6a63941b1b2d37ec66e02cb41/forks", + "commitsUrl": "https://api.github.com/gists/d1c695a6a63941b1b2d37ec66e02cb41/commits", + "id": "d1c695a6a63941b1b2d37ec66e02cb41", + "gitPullUrl": "https://gist.github.com/d1c695a6a63941b1b2d37ec66e02cb41.git", + "gitPushUrl": "https://gist.github.com/d1c695a6a63941b1b2d37ec66e02cb41.git", + "htmlUrl": "https://gist.github.com/d1c695a6a63941b1b2d37ec66e02cb41", + "files": { + "Bank logs, wu trf, hacked paypal, cvv, email leads, inbox mailer, rdp, smtp, msr track 1and2, visa debit card shipment..": { + "filename": "Bank logs, wu trf, hacked paypal, cvv, email leads, inbox mailer, rdp, smtp, msr track 1and2, visa debit card shipment..", + "type": "text/plain", + "language": null, + "rawUrl": "https://gist.githubusercontent.com/anonymous/d1c695a6a63941b1b2d37ec66e02cb41/raw/270d8f20dd0826211b753f44f2b137393f6dc5bf/Bank%20logs,%20wu%20trf,%20hacked%20paypal,%20cvv,%20email%20leads,%20inbox%20mailer,%20rdp,%20smtp,%20msr%20track%201and2,%20visa%20debit%20card%20shipment..", + "size": 3819 + } + }, + "public": true, + "createdAt": "2017-11-20T19:50:18Z", + "updatedAt": "2017-11-20T19:50:18Z", + "description": "SOSA", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/d1c695a6a63941b1b2d37ec66e02cb41/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/f0b08d13d6659256ccba3fb51826f36d", + "forksUrl": "https://api.github.com/gists/f0b08d13d6659256ccba3fb51826f36d/forks", + "commitsUrl": "https://api.github.com/gists/f0b08d13d6659256ccba3fb51826f36d/commits", + "id": "f0b08d13d6659256ccba3fb51826f36d", + "gitPullUrl": "https://gist.github.com/f0b08d13d6659256ccba3fb51826f36d.git", + "gitPushUrl": "https://gist.github.com/f0b08d13d6659256ccba3fb51826f36d.git", + "htmlUrl": "https://gist.github.com/f0b08d13d6659256ccba3fb51826f36d", + "files": { + "main.js": { + "filename": "main.js", + "type": "application/javascript", + "language": "JavaScript", + "rawUrl": "https://gist.githubusercontent.com/AlexanderChev/f0b08d13d6659256ccba3fb51826f36d/raw/04816855e72ea6067c286d28570e97ed64f3d737/main.js", + "size": 189 + } + }, + "public": true, + "createdAt": "2017-11-20T19:50:17Z", + "updatedAt": "2017-11-20T19:50:17Z", + "description": "importAll", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/f0b08d13d6659256ccba3fb51826f36d/comments", + "owner": { + "login": "AlexanderChev", + "id": 18353872, + "avatarUrl": "https://avatars2.githubusercontent.com/u/18353872?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/AlexanderChev", + "htmlUrl": "https://github.com/AlexanderChev", + "followersUrl": "https://api.github.com/users/AlexanderChev/followers", + "followingUrl": "https://api.github.com/users/AlexanderChev/following{/other_user}", + "gistsUrl": "https://api.github.com/users/AlexanderChev/gists{/gist_id}", + "starredUrl": "https://api.github.com/users/AlexanderChev/starred{/owner}{/repo}", + "subscriptionsUrl": "https://api.github.com/users/AlexanderChev/subscriptions", + "organizationsUrl": "https://api.github.com/users/AlexanderChev/orgs", + "reposUrl": "https://api.github.com/users/AlexanderChev/repos", + "eventsUrl": "https://api.github.com/users/AlexanderChev/events{/privacy}", + "received_eventsUrl": "https://api.github.com/users/AlexanderChev/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/54a78b4c0e4fc7988874fe8f750a9313", + "forksUrl": "https://api.github.com/gists/54a78b4c0e4fc7988874fe8f750a9313/forks", + "commitsUrl": "https://api.github.com/gists/54a78b4c0e4fc7988874fe8f750a9313/commits", + "id": "54a78b4c0e4fc7988874fe8f750a9313", + "gitPullUrl": "https://gist.github.com/54a78b4c0e4fc7988874fe8f750a9313.git", + "gitPushUrl": "https://gist.github.com/54a78b4c0e4fc7988874fe8f750a9313.git", + "htmlUrl": "https://gist.github.com/54a78b4c0e4fc7988874fe8f750a9313", + "files": { + "nodes.kml": { + "filename": "nodes.kml", + "type": "application/vnd.google-earth.kml+xml", + "language": "XML", + "rawUrl": "https://gist.githubusercontent.com/anonymous/54a78b4c0e4fc7988874fe8f750a9313/raw/0bca6383fd8abb5ca30efbf69a930b16f8f3c539/nodes.kml", + "size": 126968 + } + }, + "public": true, + "createdAt": "2017-11-20T19:50:10Z", + "updatedAt": "2017-11-20T19:50:10Z", + "description": "the description for this gist", + "comments": 0, + "user": null, + "commentsUrl": "https://api.github.com/gists/54a78b4c0e4fc7988874fe8f750a9313/comments", + "truncated": false +}] diff --git a/bench/test-payloan-snake-cased.json b/bench/test-payloan-snake-cased.json new file mode 100644 index 0000000..41909a3 --- /dev/null +++ b/bench/test-payloan-snake-cased.json @@ -0,0 +1,1057 @@ +[{ + "url": "https://api.github.com/gists/3a41dddfd897a1c69839994ee11e2186", + "forks_url": "https://api.github.com/gists/3a41dddfd897a1c69839994ee11e2186/forks", + "commits_url": "https://api.github.com/gists/3a41dddfd897a1c69839994ee11e2186/commits", + "id": "3a41dddfd897a1c69839994ee11e2186", + "git_pull_url": "https://gist.github.com/3a41dddfd897a1c69839994ee11e2186.git", + "git_push_url": "https://gist.github.com/3a41dddfd897a1c69839994ee11e2186.git", + "html_url": "https://gist.github.com/3a41dddfd897a1c69839994ee11e2186", + "files": { + "config.json": { + "filename": "config.json", + "type": "application/json", + "language": "JSON", + "raw_url": "https://gist.githubusercontent.com/anonymous/3a41dddfd897a1c69839994ee11e2186/raw/f7c5ae4bd1cbab6d1b2f3927925009b09a8f6a1f/config.json", + "size": 17515 + } + }, + "public": true, + "created_at": "2017-11-21T10:00:33Z", + "updated_at": "2017-11-21T10:00:34Z", + "description": "Bootstrap Customizer Config", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/3a41dddfd897a1c69839994ee11e2186/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/be501bd39e2b15cacd2ef51c742fb81a", + "forks_url": "https://api.github.com/gists/be501bd39e2b15cacd2ef51c742fb81a/forks", + "commits_url": "https://api.github.com/gists/be501bd39e2b15cacd2ef51c742fb81a/commits", + "id": "be501bd39e2b15cacd2ef51c742fb81a", + "git_pull_url": "https://gist.github.com/be501bd39e2b15cacd2ef51c742fb81a.git", + "git_push_url": "https://gist.github.com/be501bd39e2b15cacd2ef51c742fb81a.git", + "html_url": "https://gist.github.com/be501bd39e2b15cacd2ef51c742fb81a", + "files": { + "brlog.trunk-test.20171121-190157": { + "filename": "brlog.trunk-test.20171121-190157", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/ko1/be501bd39e2b15cacd2ef51c742fb81a/raw/599ffa06b956e815874f08b6c6a18c2a0bc25a52/brlog.trunk-test.20171121-190157", + "size": 83708 + } + }, + "public": true, + "created_at": "2017-11-21T10:00:27Z", + "updated_at": "2017-11-21T10:00:27Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/be501bd39e2b15cacd2ef51c742fb81a/comments", + "owner": { + "login": "ko1", + "id": 9558, + "avatar_url": "https://avatars3.githubusercontent.com/u/9558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ko1", + "html_url": "https://github.com/ko1", + "followers_url": "https://api.github.com/users/ko1/followers", + "following_url": "https://api.github.com/users/ko1/following{/other_user}", + "gists_url": "https://api.github.com/users/ko1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ko1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ko1/subscriptions", + "organizations_url": "https://api.github.com/users/ko1/orgs", + "repos_url": "https://api.github.com/users/ko1/repos", + "events_url": "https://api.github.com/users/ko1/events{/privacy}", + "received_events_url": "https://api.github.com/users/ko1/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/7e46f9016adb47c49d96a145061f1d4c", + "forks_url": "https://api.github.com/gists/7e46f9016adb47c49d96a145061f1d4c/forks", + "commits_url": "https://api.github.com/gists/7e46f9016adb47c49d96a145061f1d4c/commits", + "id": "7e46f9016adb47c49d96a145061f1d4c", + "git_pull_url": "https://gist.github.com/7e46f9016adb47c49d96a145061f1d4c.git", + "git_push_url": "https://gist.github.com/7e46f9016adb47c49d96a145061f1d4c.git", + "html_url": "https://gist.github.com/7e46f9016adb47c49d96a145061f1d4c", + "files": { + "config.json": { + "filename": "config.json", + "type": "application/json", + "language": "JSON", + "raw_url": "https://gist.githubusercontent.com/anonymous/7e46f9016adb47c49d96a145061f1d4c/raw/82a6d73a48c7aab449dd6ffe5c6ed0482599e621/config.json", + "size": 17740 + } + }, + "public": true, + "created_at": "2017-11-21T10:00:16Z", + "updated_at": "2017-11-21T10:00:16Z", + "description": "Bootstrap Customizer Config", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/7e46f9016adb47c49d96a145061f1d4c/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/e42cb88d6da9cbce616c371aea513ae1", + "forks_url": "https://api.github.com/gists/e42cb88d6da9cbce616c371aea513ae1/forks", + "commits_url": "https://api.github.com/gists/e42cb88d6da9cbce616c371aea513ae1/commits", + "id": "e42cb88d6da9cbce616c371aea513ae1", + "git_pull_url": "https://gist.github.com/e42cb88d6da9cbce616c371aea513ae1.git", + "git_push_url": "https://gist.github.com/e42cb88d6da9cbce616c371aea513ae1.git", + "html_url": "https://gist.github.com/e42cb88d6da9cbce616c371aea513ae1", + "files": { + "brlog.trunk-test.20171121-185723": { + "filename": "brlog.trunk-test.20171121-185723", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/ko1/e42cb88d6da9cbce616c371aea513ae1/raw/e123d88d72c94a3b17cf935f3ab4cb77233e00c8/brlog.trunk-test.20171121-185723", + "size": 47103 + } + }, + "public": true, + "created_at": "2017-11-21T10:00:11Z", + "updated_at": "2017-11-21T10:00:11Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/e42cb88d6da9cbce616c371aea513ae1/comments", + "owner": { + "login": "ko1", + "id": 9558, + "avatar_url": "https://avatars3.githubusercontent.com/u/9558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ko1", + "html_url": "https://github.com/ko1", + "followers_url": "https://api.github.com/users/ko1/followers", + "following_url": "https://api.github.com/users/ko1/following{/other_user}", + "gists_url": "https://api.github.com/users/ko1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ko1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ko1/subscriptions", + "organizations_url": "https://api.github.com/users/ko1/orgs", + "repos_url": "https://api.github.com/users/ko1/repos", + "events_url": "https://api.github.com/users/ko1/events{/privacy}", + "received_events_url": "https://api.github.com/users/ko1/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/f504cc5181518119eedc35d91156675c", + "forks_url": "https://api.github.com/gists/f504cc5181518119eedc35d91156675c/forks", + "commits_url": "https://api.github.com/gists/f504cc5181518119eedc35d91156675c/commits", + "id": "f504cc5181518119eedc35d91156675c", + "git_pull_url": "https://gist.github.com/f504cc5181518119eedc35d91156675c.git", + "git_push_url": "https://gist.github.com/f504cc5181518119eedc35d91156675c.git", + "html_url": "https://gist.github.com/f504cc5181518119eedc35d91156675c", + "files": { + "ExternalCSS.elm": { + "filename": "ExternalCSS.elm", + "type": "text/plain", + "language": "Elm", + "raw_url": "https://gist.githubusercontent.com/digitalsatori/f504cc5181518119eedc35d91156675c/raw/5b35f0388c0a482b3627437951e832b94a115d90/ExternalCSS.elm", + "size": 911 + } + }, + "public": true, + "created_at": "2017-11-21T10:00:08Z", + "updated_at": "2017-11-21T10:00:08Z", + "description": "Load external CSS in Elm", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/f504cc5181518119eedc35d91156675c/comments", + "owner": { + "login": "digitalsatori", + "id": 140909, + "avatar_url": "https://avatars3.githubusercontent.com/u/140909?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/digitalsatori", + "html_url": "https://github.com/digitalsatori", + "followers_url": "https://api.github.com/users/digitalsatori/followers", + "following_url": "https://api.github.com/users/digitalsatori/following{/other_user}", + "gists_url": "https://api.github.com/users/digitalsatori/gists{/gist_id}", + "starred_url": "https://api.github.com/users/digitalsatori/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/digitalsatori/subscriptions", + "organizations_url": "https://api.github.com/users/digitalsatori/orgs", + "repos_url": "https://api.github.com/users/digitalsatori/repos", + "events_url": "https://api.github.com/users/digitalsatori/events{/privacy}", + "received_events_url": "https://api.github.com/users/digitalsatori/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/5b40735c0c5b646a35b224653f862398", + "forks_url": "https://api.github.com/gists/5b40735c0c5b646a35b224653f862398/forks", + "commits_url": "https://api.github.com/gists/5b40735c0c5b646a35b224653f862398/commits", + "id": "5b40735c0c5b646a35b224653f862398", + "git_pull_url": "https://gist.github.com/5b40735c0c5b646a35b224653f862398.git", + "git_push_url": "https://gist.github.com/5b40735c0c5b646a35b224653f862398.git", + "html_url": "https://gist.github.com/5b40735c0c5b646a35b224653f862398", + "files": { + "brlog.trunk.20171121-185843": { + "filename": "brlog.trunk.20171121-185843", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/anonymous/5b40735c0c5b646a35b224653f862398/raw/a5facb1bae517ced156a7ad860bbddad8daf5938/brlog.trunk.20171121-185843", + "size": 50059 + } + }, + "public": true, + "created_at": "2017-11-21T10:00:08Z", + "updated_at": "2017-11-21T10:00:08Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/5b40735c0c5b646a35b224653f862398/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/7ca33e73c946d39edb1a21b302459929", + "forks_url": "https://api.github.com/gists/7ca33e73c946d39edb1a21b302459929/forks", + "commits_url": "https://api.github.com/gists/7ca33e73c946d39edb1a21b302459929/commits", + "id": "7ca33e73c946d39edb1a21b302459929", + "git_pull_url": "https://gist.github.com/7ca33e73c946d39edb1a21b302459929.git", + "git_push_url": "https://gist.github.com/7ca33e73c946d39edb1a21b302459929.git", + "html_url": "https://gist.github.com/7ca33e73c946d39edb1a21b302459929", + "files": { + "untrusted-lvl2-solution.js": { + "filename": "untrusted-lvl2-solution.js", + "type": "application/javascript", + "language": "JavaScript", + "raw_url": "https://gist.githubusercontent.com/anonymous/7ca33e73c946d39edb1a21b302459929/raw/b2ce8c48c48281c3f01a99b0c88c2575bb17a40c/untrusted-lvl2-solution.js", + "size": 1114 + } + }, + "public": true, + "created_at": "2017-11-21T10:00:08Z", + "updated_at": "2017-11-21T10:00:08Z", + "description": "Solution to level 2 in Untrusted: http://alex.nisnevich.com/untrusted/", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/7ca33e73c946d39edb1a21b302459929/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/6976eb12ade7a8060c17a457198d4b19", + "forks_url": "https://api.github.com/gists/6976eb12ade7a8060c17a457198d4b19/forks", + "commits_url": "https://api.github.com/gists/6976eb12ade7a8060c17a457198d4b19/commits", + "id": "6976eb12ade7a8060c17a457198d4b19", + "git_pull_url": "https://gist.github.com/6976eb12ade7a8060c17a457198d4b19.git", + "git_push_url": "https://gist.github.com/6976eb12ade7a8060c17a457198d4b19.git", + "html_url": "https://gist.github.com/6976eb12ade7a8060c17a457198d4b19", + "files": { + "dec2bin.js": { + "filename": "dec2bin.js", + "type": "application/javascript", + "language": "JavaScript", + "raw_url": "https://gist.githubusercontent.com/mjarpitanand/6976eb12ade7a8060c17a457198d4b19/raw/29052a729398c991a62658359e649fa574ff5a0c/dec2bin.js", + "size": 279 + } + }, + "public": true, + "created_at": "2017-11-21T09:59:40Z", + "updated_at": "2017-11-21T09:59:40Z", + "description": "", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/6976eb12ade7a8060c17a457198d4b19/comments", + "owner": { + "login": "mjarpitanand", + "id": 14835964, + "avatar_url": "https://avatars2.githubusercontent.com/u/14835964?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mjarpitanand", + "html_url": "https://github.com/mjarpitanand", + "followers_url": "https://api.github.com/users/mjarpitanand/followers", + "following_url": "https://api.github.com/users/mjarpitanand/following{/other_user}", + "gists_url": "https://api.github.com/users/mjarpitanand/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mjarpitanand/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mjarpitanand/subscriptions", + "organizations_url": "https://api.github.com/users/mjarpitanand/orgs", + "repos_url": "https://api.github.com/users/mjarpitanand/repos", + "events_url": "https://api.github.com/users/mjarpitanand/events{/privacy}", + "received_events_url": "https://api.github.com/users/mjarpitanand/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/98ab211b74808be6fe034031cc499cae", + "forks_url": "https://api.github.com/gists/98ab211b74808be6fe034031cc499cae/forks", + "commits_url": "https://api.github.com/gists/98ab211b74808be6fe034031cc499cae/commits", + "id": "98ab211b74808be6fe034031cc499cae", + "git_pull_url": "https://gist.github.com/98ab211b74808be6fe034031cc499cae.git", + "git_push_url": "https://gist.github.com/98ab211b74808be6fe034031cc499cae.git", + "html_url": "https://gist.github.com/98ab211b74808be6fe034031cc499cae", + "files": { + "my.css": { + "filename": "my.css", + "type": "text/css", + "language": "CSS", + "raw_url": "https://gist.githubusercontent.com/anonymous/98ab211b74808be6fe034031cc499cae/raw/300cb03828b19996c9745f3432aba5104cfbe427/my.css", + "size": 903 + } + }, + "public": true, + "created_at": "2017-11-21T09:59:34Z", + "updated_at": "2017-11-21T09:59:35Z", + "description": "CSS Gradient Animation", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/98ab211b74808be6fe034031cc499cae/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/377eaffb0dfdbb3b56a9e96e3672b887", + "forks_url": "https://api.github.com/gists/377eaffb0dfdbb3b56a9e96e3672b887/forks", + "commits_url": "https://api.github.com/gists/377eaffb0dfdbb3b56a9e96e3672b887/commits", + "id": "377eaffb0dfdbb3b56a9e96e3672b887", + "git_pull_url": "https://gist.github.com/377eaffb0dfdbb3b56a9e96e3672b887.git", + "git_push_url": "https://gist.github.com/377eaffb0dfdbb3b56a9e96e3672b887.git", + "html_url": "https://gist.github.com/377eaffb0dfdbb3b56a9e96e3672b887", + "files": { + "untrusted-lvl2-solution.js": { + "filename": "untrusted-lvl2-solution.js", + "type": "application/javascript", + "language": "JavaScript", + "raw_url": "https://gist.githubusercontent.com/anonymous/377eaffb0dfdbb3b56a9e96e3672b887/raw/4a8e406901083efae254bedf6dc94cf8768c47fc/untrusted-lvl2-solution.js", + "size": 1083 + } + }, + "public": true, + "created_at": "2017-11-21T09:59:31Z", + "updated_at": "2017-11-21T09:59:32Z", + "description": "Solution to level 2 in Untrusted: http://alex.nisnevich.com/untrusted/", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/377eaffb0dfdbb3b56a9e96e3672b887/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/50e20718e6dbce1ddd08b814b292c6ca", + "forks_url": "https://api.github.com/gists/50e20718e6dbce1ddd08b814b292c6ca/forks", + "commits_url": "https://api.github.com/gists/50e20718e6dbce1ddd08b814b292c6ca/commits", + "id": "50e20718e6dbce1ddd08b814b292c6ca", + "git_pull_url": "https://gist.github.com/50e20718e6dbce1ddd08b814b292c6ca.git", + "git_push_url": "https://gist.github.com/50e20718e6dbce1ddd08b814b292c6ca.git", + "html_url": "https://gist.github.com/50e20718e6dbce1ddd08b814b292c6ca", + "files": { + "build.gradle": { + "filename": "build.gradle", + "type": "text/plain", + "language": "Gradle", + "raw_url": "https://gist.githubusercontent.com/shalom365/50e20718e6dbce1ddd08b814b292c6ca/raw/b4e4875eab0fdd5d1c8c38e7b56b0f2f384b7afe/build.gradle", + "size": 990 + } + }, + "public": true, + "created_at": "2017-11-21T09:59:21Z", + "updated_at": "2017-11-21T09:59:21Z", + "description": "", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/50e20718e6dbce1ddd08b814b292c6ca/comments", + "owner": { + "login": "shalom365", + "id": 10849471, + "avatar_url": "https://avatars3.githubusercontent.com/u/10849471?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/shalom365", + "html_url": "https://github.com/shalom365", + "followers_url": "https://api.github.com/users/shalom365/followers", + "following_url": "https://api.github.com/users/shalom365/following{/other_user}", + "gists_url": "https://api.github.com/users/shalom365/gists{/gist_id}", + "starred_url": "https://api.github.com/users/shalom365/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/shalom365/subscriptions", + "organizations_url": "https://api.github.com/users/shalom365/orgs", + "repos_url": "https://api.github.com/users/shalom365/repos", + "events_url": "https://api.github.com/users/shalom365/events{/privacy}", + "received_events_url": "https://api.github.com/users/shalom365/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/27a95454597640b83facd04d1e491fd4", + "forks_url": "https://api.github.com/gists/27a95454597640b83facd04d1e491fd4/forks", + "commits_url": "https://api.github.com/gists/27a95454597640b83facd04d1e491fd4/commits", + "id": "27a95454597640b83facd04d1e491fd4", + "git_pull_url": "https://gist.github.com/27a95454597640b83facd04d1e491fd4.git", + "git_push_url": "https://gist.github.com/27a95454597640b83facd04d1e491fd4.git", + "html_url": "https://gist.github.com/27a95454597640b83facd04d1e491fd4", + "files": { + "WP Get category": { + "filename": "WP Get category", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/smite2012/27a95454597640b83facd04d1e491fd4/raw/4757a571750fbd28be829ffb853a42755f9e1eef/WP%20Get%20category", + "size": 135 + } + }, + "public": true, + "created_at": "2017-11-21T09:59:19Z", + "updated_at": "2017-11-21T09:59:20Z", + "description": "", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/27a95454597640b83facd04d1e491fd4/comments", + "owner": { + "login": "smite2012", + "id": 33417399, + "avatar_url": "https://avatars1.githubusercontent.com/u/33417399?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/smite2012", + "html_url": "https://github.com/smite2012", + "followers_url": "https://api.github.com/users/smite2012/followers", + "following_url": "https://api.github.com/users/smite2012/following{/other_user}", + "gists_url": "https://api.github.com/users/smite2012/gists{/gist_id}", + "starred_url": "https://api.github.com/users/smite2012/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/smite2012/subscriptions", + "organizations_url": "https://api.github.com/users/smite2012/orgs", + "repos_url": "https://api.github.com/users/smite2012/repos", + "events_url": "https://api.github.com/users/smite2012/events{/privacy}", + "received_events_url": "https://api.github.com/users/smite2012/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/16d296827bddc2ab8b64c26c49a03664", + "forks_url": "https://api.github.com/gists/16d296827bddc2ab8b64c26c49a03664/forks", + "commits_url": "https://api.github.com/gists/16d296827bddc2ab8b64c26c49a03664/commits", + "id": "16d296827bddc2ab8b64c26c49a03664", + "git_pull_url": "https://gist.github.com/16d296827bddc2ab8b64c26c49a03664.git", + "git_push_url": "https://gist.github.com/16d296827bddc2ab8b64c26c49a03664.git", + "html_url": "https://gist.github.com/16d296827bddc2ab8b64c26c49a03664", + "files": { + "untrusted-lvl2-solution.js": { + "filename": "untrusted-lvl2-solution.js", + "type": "application/javascript", + "language": "JavaScript", + "raw_url": "https://gist.githubusercontent.com/anonymous/16d296827bddc2ab8b64c26c49a03664/raw/dee7f8ecf420ebc295a6241ad8d9c82d49a8c0ec/untrusted-lvl2-solution.js", + "size": 1114 + } + }, + "public": true, + "created_at": "2017-11-21T09:59:08Z", + "updated_at": "2017-11-21T09:59:08Z", + "description": "Solution to level 2 in Untrusted: http://alex.nisnevich.com/untrusted/", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/16d296827bddc2ab8b64c26c49a03664/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/729ff7dda050f47c76ce9bc56671ac54", + "forks_url": "https://api.github.com/gists/729ff7dda050f47c76ce9bc56671ac54/forks", + "commits_url": "https://api.github.com/gists/729ff7dda050f47c76ce9bc56671ac54/commits", + "id": "729ff7dda050f47c76ce9bc56671ac54", + "git_pull_url": "https://gist.github.com/729ff7dda050f47c76ce9bc56671ac54.git", + "git_push_url": "https://gist.github.com/729ff7dda050f47c76ce9bc56671ac54.git", + "html_url": "https://gist.github.com/729ff7dda050f47c76ce9bc56671ac54", + "files": { + "brlog.trunk-test.20171121-185605": { + "filename": "brlog.trunk-test.20171121-185605", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/anonymous/729ff7dda050f47c76ce9bc56671ac54/raw/832322c321ef80589c088b2e079d4a007b7ef1d0/brlog.trunk-test.20171121-185605", + "size": 47356 + } + }, + "public": true, + "created_at": "2017-11-21T09:58:58Z", + "updated_at": "2017-11-21T09:58:59Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/729ff7dda050f47c76ce9bc56671ac54/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/186fc67928cda0db1c53ce389dd7dcd6", + "forks_url": "https://api.github.com/gists/186fc67928cda0db1c53ce389dd7dcd6/forks", + "commits_url": "https://api.github.com/gists/186fc67928cda0db1c53ce389dd7dcd6/commits", + "id": "186fc67928cda0db1c53ce389dd7dcd6", + "git_pull_url": "https://gist.github.com/186fc67928cda0db1c53ce389dd7dcd6.git", + "git_push_url": "https://gist.github.com/186fc67928cda0db1c53ce389dd7dcd6.git", + "html_url": "https://gist.github.com/186fc67928cda0db1c53ce389dd7dcd6", + "files": { + "Mario_BlockChain implementation.py": { + "filename": "Mario_BlockChain implementation.py", + "type": "application/x-python", + "language": "Python", + "raw_url": "https://gist.githubusercontent.com/anonymous/186fc67928cda0db1c53ce389dd7dcd6/raw/0f61a3c99633d01285d3de9a6b865c2d08482990/Mario_BlockChain%20implementation.py", + "size": 5917 + } + }, + "public": true, + "created_at": "2017-11-21T09:58:43Z", + "updated_at": "2017-11-21T09:58:43Z", + "description": "Mario_BlockChain implementation created by mariosilic - https://repl.it/@mariosilic/MarioBlockChain-implementation", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/186fc67928cda0db1c53ce389dd7dcd6/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/d36a43482a3a20b29ad8c031d55e8b5d", + "forks_url": "https://api.github.com/gists/d36a43482a3a20b29ad8c031d55e8b5d/forks", + "commits_url": "https://api.github.com/gists/d36a43482a3a20b29ad8c031d55e8b5d/commits", + "id": "d36a43482a3a20b29ad8c031d55e8b5d", + "git_pull_url": "https://gist.github.com/d36a43482a3a20b29ad8c031d55e8b5d.git", + "git_push_url": "https://gist.github.com/d36a43482a3a20b29ad8c031d55e8b5d.git", + "html_url": "https://gist.github.com/d36a43482a3a20b29ad8c031d55e8b5d", + "files": { + "brlog.trunk.20171121-185642": { + "filename": "brlog.trunk.20171121-185642", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/anonymous/d36a43482a3a20b29ad8c031d55e8b5d/raw/9b78af9f21a9e76a3c71e93b9088e362ccdb932e/brlog.trunk.20171121-185642", + "size": 49418 + } + }, + "public": true, + "created_at": "2017-11-21T09:58:06Z", + "updated_at": "2017-11-21T09:58:06Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/d36a43482a3a20b29ad8c031d55e8b5d/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/ac94bfd19a47c638d88fd09651098cfe", + "forks_url": "https://api.github.com/gists/ac94bfd19a47c638d88fd09651098cfe/forks", + "commits_url": "https://api.github.com/gists/ac94bfd19a47c638d88fd09651098cfe/commits", + "id": "ac94bfd19a47c638d88fd09651098cfe", + "git_pull_url": "https://gist.github.com/ac94bfd19a47c638d88fd09651098cfe.git", + "git_push_url": "https://gist.github.com/ac94bfd19a47c638d88fd09651098cfe.git", + "html_url": "https://gist.github.com/ac94bfd19a47c638d88fd09651098cfe", + "files": { + "create-nested-table.js": { + "filename": "create-nested-table.js", + "type": "application/javascript", + "language": "JavaScript", + "raw_url": "https://gist.githubusercontent.com/kreal1998/ac94bfd19a47c638d88fd09651098cfe/raw/d9cc468b1f5a2c9c3c12255f83cf92420810d1c6/create-nested-table.js", + "size": 4522 + } + }, + "public": true, + "created_at": "2017-11-21T09:58:04Z", + "updated_at": "2017-11-21T09:58:04Z", + "description": "Вложенная структура документа", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/ac94bfd19a47c638d88fd09651098cfe/comments", + "owner": { + "login": "kreal1998", + "id": 33861309, + "avatar_url": "https://avatars1.githubusercontent.com/u/33861309?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kreal1998", + "html_url": "https://github.com/kreal1998", + "followers_url": "https://api.github.com/users/kreal1998/followers", + "following_url": "https://api.github.com/users/kreal1998/following{/other_user}", + "gists_url": "https://api.github.com/users/kreal1998/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kreal1998/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kreal1998/subscriptions", + "organizations_url": "https://api.github.com/users/kreal1998/orgs", + "repos_url": "https://api.github.com/users/kreal1998/repos", + "events_url": "https://api.github.com/users/kreal1998/events{/privacy}", + "received_events_url": "https://api.github.com/users/kreal1998/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/43f74562662da690c867092a781a3aa8", + "forks_url": "https://api.github.com/gists/43f74562662da690c867092a781a3aa8/forks", + "commits_url": "https://api.github.com/gists/43f74562662da690c867092a781a3aa8/commits", + "id": "43f74562662da690c867092a781a3aa8", + "git_pull_url": "https://gist.github.com/43f74562662da690c867092a781a3aa8.git", + "git_push_url": "https://gist.github.com/43f74562662da690c867092a781a3aa8.git", + "html_url": "https://gist.github.com/43f74562662da690c867092a781a3aa8", + "files": { + "brlog.trunk-test.20171121-185930": { + "filename": "brlog.trunk-test.20171121-185930", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/ko1/43f74562662da690c867092a781a3aa8/raw/b03e26a0b6467d49def2024e91abf8a4d785498f/brlog.trunk-test.20171121-185930", + "size": 84363 + } + }, + "public": true, + "created_at": "2017-11-21T09:58:00Z", + "updated_at": "2017-11-21T09:58:01Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/43f74562662da690c867092a781a3aa8/comments", + "owner": { + "login": "ko1", + "id": 9558, + "avatar_url": "https://avatars3.githubusercontent.com/u/9558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ko1", + "html_url": "https://github.com/ko1", + "followers_url": "https://api.github.com/users/ko1/followers", + "following_url": "https://api.github.com/users/ko1/following{/other_user}", + "gists_url": "https://api.github.com/users/ko1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ko1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ko1/subscriptions", + "organizations_url": "https://api.github.com/users/ko1/orgs", + "repos_url": "https://api.github.com/users/ko1/repos", + "events_url": "https://api.github.com/users/ko1/events{/privacy}", + "received_events_url": "https://api.github.com/users/ko1/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/1ddb387d8383dc712e69e1fabf1e641b", + "forks_url": "https://api.github.com/gists/1ddb387d8383dc712e69e1fabf1e641b/forks", + "commits_url": "https://api.github.com/gists/1ddb387d8383dc712e69e1fabf1e641b/commits", + "id": "1ddb387d8383dc712e69e1fabf1e641b", + "git_pull_url": "https://gist.github.com/1ddb387d8383dc712e69e1fabf1e641b.git", + "git_push_url": "https://gist.github.com/1ddb387d8383dc712e69e1fabf1e641b.git", + "html_url": "https://gist.github.com/1ddb387d8383dc712e69e1fabf1e641b", + "files": { + "Mac OS X: Open in Visual Studio Code": { + "filename": "Mac OS X: Open in Visual Studio Code", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/Zurc/1ddb387d8383dc712e69e1fabf1e641b/raw/2f1da2d0524890764c7ce12caba144757ab6fdea/Mac%20OS%20X:%20Open%20in%20Visual%20Studio%20Code", + "size": 333 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:55Z", + "updated_at": "2017-11-21T09:57:56Z", + "description": "Add a command to Finder services in Mac OSX to open a folder in VS Code", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/1ddb387d8383dc712e69e1fabf1e641b/comments", + "owner": { + "login": "Zurc", + "id": 3543715, + "avatar_url": "https://avatars2.githubusercontent.com/u/3543715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Zurc", + "html_url": "https://github.com/Zurc", + "followers_url": "https://api.github.com/users/Zurc/followers", + "following_url": "https://api.github.com/users/Zurc/following{/other_user}", + "gists_url": "https://api.github.com/users/Zurc/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Zurc/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Zurc/subscriptions", + "organizations_url": "https://api.github.com/users/Zurc/orgs", + "repos_url": "https://api.github.com/users/Zurc/repos", + "events_url": "https://api.github.com/users/Zurc/events{/privacy}", + "received_events_url": "https://api.github.com/users/Zurc/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/edbf6b47727dff9b8e3c0adf97537b53", + "forks_url": "https://api.github.com/gists/edbf6b47727dff9b8e3c0adf97537b53/forks", + "commits_url": "https://api.github.com/gists/edbf6b47727dff9b8e3c0adf97537b53/commits", + "id": "edbf6b47727dff9b8e3c0adf97537b53", + "git_pull_url": "https://gist.github.com/edbf6b47727dff9b8e3c0adf97537b53.git", + "git_push_url": "https://gist.github.com/edbf6b47727dff9b8e3c0adf97537b53.git", + "html_url": "https://gist.github.com/edbf6b47727dff9b8e3c0adf97537b53", + "files": { + "docker.sh": { + "filename": "docker.sh", + "type": "application/x-sh", + "language": "Shell", + "raw_url": "https://gist.githubusercontent.com/BirkhoffLee/edbf6b47727dff9b8e3c0adf97537b53/raw/2976fc90748a8d74475bc536d378bcf06782d42e/docker.sh", + "size": 485 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:44Z", + "updated_at": "2017-11-21T09:57:45Z", + "description": "Install Docker and docker-compose on CentOS", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/edbf6b47727dff9b8e3c0adf97537b53/comments", + "owner": { + "login": "BirkhoffLee", + "id": 8148095, + "avatar_url": "https://avatars1.githubusercontent.com/u/8148095?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/BirkhoffLee", + "html_url": "https://github.com/BirkhoffLee", + "followers_url": "https://api.github.com/users/BirkhoffLee/followers", + "following_url": "https://api.github.com/users/BirkhoffLee/following{/other_user}", + "gists_url": "https://api.github.com/users/BirkhoffLee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/BirkhoffLee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/BirkhoffLee/subscriptions", + "organizations_url": "https://api.github.com/users/BirkhoffLee/orgs", + "repos_url": "https://api.github.com/users/BirkhoffLee/repos", + "events_url": "https://api.github.com/users/BirkhoffLee/events{/privacy}", + "received_events_url": "https://api.github.com/users/BirkhoffLee/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/e1ad3ad5c16eb485633ee62e86d690ac", + "forks_url": "https://api.github.com/gists/e1ad3ad5c16eb485633ee62e86d690ac/forks", + "commits_url": "https://api.github.com/gists/e1ad3ad5c16eb485633ee62e86d690ac/commits", + "id": "e1ad3ad5c16eb485633ee62e86d690ac", + "git_pull_url": "https://gist.github.com/e1ad3ad5c16eb485633ee62e86d690ac.git", + "git_push_url": "https://gist.github.com/e1ad3ad5c16eb485633ee62e86d690ac.git", + "html_url": "https://gist.github.com/e1ad3ad5c16eb485633ee62e86d690ac", + "files": { + "gistfile1.txt": { + "filename": "gistfile1.txt", + "type": "text/plain", + "language": "Text", + "raw_url": "https://gist.githubusercontent.com/anonymous/e1ad3ad5c16eb485633ee62e86d690ac/raw/a9de0acdd4f9fe5bd91d9a47a92e9c5a8288ee8e/gistfile1.txt", + "size": 339 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:40Z", + "updated_at": "2017-11-21T09:57:41Z", + "description": "", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/e1ad3ad5c16eb485633ee62e86d690ac/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/d43983169cef82309cff5a25d9010798", + "forks_url": "https://api.github.com/gists/d43983169cef82309cff5a25d9010798/forks", + "commits_url": "https://api.github.com/gists/d43983169cef82309cff5a25d9010798/commits", + "id": "d43983169cef82309cff5a25d9010798", + "git_pull_url": "https://gist.github.com/d43983169cef82309cff5a25d9010798.git", + "git_push_url": "https://gist.github.com/d43983169cef82309cff5a25d9010798.git", + "html_url": "https://gist.github.com/d43983169cef82309cff5a25d9010798", + "files": { + "grid.edn": { + "filename": "grid.edn", + "type": "text/plain", + "language": "edn", + "raw_url": "https://gist.githubusercontent.com/anonymous/d43983169cef82309cff5a25d9010798/raw/94ced4ba4ecc79f018be779d5768c7133804d7b9/grid.edn", + "size": 65 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:36Z", + "updated_at": "2017-11-21T09:57:36Z", + "description": "shoelace grid", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/d43983169cef82309cff5a25d9010798/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/2e35eddbb4dcf338925a64609d2d0fb2", + "forks_url": "https://api.github.com/gists/2e35eddbb4dcf338925a64609d2d0fb2/forks", + "commits_url": "https://api.github.com/gists/2e35eddbb4dcf338925a64609d2d0fb2/commits", + "id": "2e35eddbb4dcf338925a64609d2d0fb2", + "git_pull_url": "https://gist.github.com/2e35eddbb4dcf338925a64609d2d0fb2.git", + "git_push_url": "https://gist.github.com/2e35eddbb4dcf338925a64609d2d0fb2.git", + "html_url": "https://gist.github.com/2e35eddbb4dcf338925a64609d2d0fb2", + "files": { + "autoupload.sh": { + "filename": "autoupload.sh", + "type": "application/x-sh", + "language": "Shell", + "raw_url": "https://gist.githubusercontent.com/plachta11b/2e35eddbb4dcf338925a64609d2d0fb2/raw/9c326de6af54c431d50ad9f3f5b68e9bd165b30e/autoupload.sh", + "size": 1229 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:30Z", + "updated_at": "2017-11-21T09:57:30Z", + "description": "Nucleo autoupload", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/2e35eddbb4dcf338925a64609d2d0fb2/comments", + "owner": { + "login": "plachta11b", + "id": 6261620, + "avatar_url": "https://avatars0.githubusercontent.com/u/6261620?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/plachta11b", + "html_url": "https://github.com/plachta11b", + "followers_url": "https://api.github.com/users/plachta11b/followers", + "following_url": "https://api.github.com/users/plachta11b/following{/other_user}", + "gists_url": "https://api.github.com/users/plachta11b/gists{/gist_id}", + "starred_url": "https://api.github.com/users/plachta11b/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/plachta11b/subscriptions", + "organizations_url": "https://api.github.com/users/plachta11b/orgs", + "repos_url": "https://api.github.com/users/plachta11b/repos", + "events_url": "https://api.github.com/users/plachta11b/events{/privacy}", + "received_events_url": "https://api.github.com/users/plachta11b/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/5985174baf771d52a8c7e70c451d2463", + "forks_url": "https://api.github.com/gists/5985174baf771d52a8c7e70c451d2463/forks", + "commits_url": "https://api.github.com/gists/5985174baf771d52a8c7e70c451d2463/commits", + "id": "5985174baf771d52a8c7e70c451d2463", + "git_pull_url": "https://gist.github.com/5985174baf771d52a8c7e70c451d2463.git", + "git_push_url": "https://gist.github.com/5985174baf771d52a8c7e70c451d2463.git", + "html_url": "https://gist.github.com/5985174baf771d52a8c7e70c451d2463", + "files": { + "Cesium-Sandcastle.html": { + "filename": "Cesium-Sandcastle.html", + "type": "text/html", + "language": "HTML", + "raw_url": "https://gist.githubusercontent.com/anonymous/5985174baf771d52a8c7e70c451d2463/raw/5e41a2886bbf953c4798d9c86f24129b1d1c4126/Cesium-Sandcastle.html", + "size": 186 + }, + "Cesium-Sandcastle.js": { + "filename": "Cesium-Sandcastle.js", + "type": "application/javascript", + "language": "JavaScript", + "raw_url": "https://gist.githubusercontent.com/anonymous/5985174baf771d52a8c7e70c451d2463/raw/944227a1eb24e44abedabae420adb40cfcfd35aa/Cesium-Sandcastle.js", + "size": 630 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:28Z", + "updated_at": "2017-11-21T09:57:28Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/5985174baf771d52a8c7e70c451d2463/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/d7e1353bc0e0f5addf7606eefd7ab5c2", + "forks_url": "https://api.github.com/gists/d7e1353bc0e0f5addf7606eefd7ab5c2/forks", + "commits_url": "https://api.github.com/gists/d7e1353bc0e0f5addf7606eefd7ab5c2/commits", + "id": "d7e1353bc0e0f5addf7606eefd7ab5c2", + "git_pull_url": "https://gist.github.com/d7e1353bc0e0f5addf7606eefd7ab5c2.git", + "git_push_url": "https://gist.github.com/d7e1353bc0e0f5addf7606eefd7ab5c2.git", + "html_url": "https://gist.github.com/d7e1353bc0e0f5addf7606eefd7ab5c2", + "files": { + "brlog.trunk-test.20171121-185435": { + "filename": "brlog.trunk-test.20171121-185435", + "type": "text/plain", + "language": null, + "raw_url": "https://gist.githubusercontent.com/ko1/d7e1353bc0e0f5addf7606eefd7ab5c2/raw/f853c4829d7ec32875b87464d705775e41690634/brlog.trunk-test.20171121-185435", + "size": 47103 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:22Z", + "updated_at": "2017-11-21T09:57:22Z", + "description": null, + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/d7e1353bc0e0f5addf7606eefd7ab5c2/comments", + "owner": { + "login": "ko1", + "id": 9558, + "avatar_url": "https://avatars3.githubusercontent.com/u/9558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ko1", + "html_url": "https://github.com/ko1", + "followers_url": "https://api.github.com/users/ko1/followers", + "following_url": "https://api.github.com/users/ko1/following{/other_user}", + "gists_url": "https://api.github.com/users/ko1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ko1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ko1/subscriptions", + "organizations_url": "https://api.github.com/users/ko1/orgs", + "repos_url": "https://api.github.com/users/ko1/repos", + "events_url": "https://api.github.com/users/ko1/events{/privacy}", + "received_events_url": "https://api.github.com/users/ko1/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/83db925d17808072cbbad6771a4514af", + "forks_url": "https://api.github.com/gists/83db925d17808072cbbad6771a4514af/forks", + "commits_url": "https://api.github.com/gists/83db925d17808072cbbad6771a4514af/commits", + "id": "83db925d17808072cbbad6771a4514af", + "git_pull_url": "https://gist.github.com/83db925d17808072cbbad6771a4514af.git", + "git_push_url": "https://gist.github.com/83db925d17808072cbbad6771a4514af.git", + "html_url": "https://gist.github.com/83db925d17808072cbbad6771a4514af", + "files": { + "L3tgxxd6XWy.md": { + "filename": "L3tgxxd6XWy.md", + "type": "text/plain", + "language": "Markdown", + "raw_url": "https://gist.githubusercontent.com/anonymous/83db925d17808072cbbad6771a4514af/raw/22b4038a867f4243e3ae182b0914ca66f3f8756f/L3tgxxd6XWy.md", + "size": 4439 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:19Z", + "updated_at": "2017-11-21T09:57:20Z", + "description": "!!! Download !!! japan ladyboy yuka", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/83db925d17808072cbbad6771a4514af/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/3db88419ce829cdc5b9cd4b6ce8d6e18", + "forks_url": "https://api.github.com/gists/3db88419ce829cdc5b9cd4b6ce8d6e18/forks", + "commits_url": "https://api.github.com/gists/3db88419ce829cdc5b9cd4b6ce8d6e18/commits", + "id": "3db88419ce829cdc5b9cd4b6ce8d6e18", + "git_pull_url": "https://gist.github.com/3db88419ce829cdc5b9cd4b6ce8d6e18.git", + "git_push_url": "https://gist.github.com/3db88419ce829cdc5b9cd4b6ce8d6e18.git", + "html_url": "https://gist.github.com/3db88419ce829cdc5b9cd4b6ce8d6e18", + "files": { + "form.json": { + "filename": "form.json", + "type": "application/json", + "language": "JSON", + "raw_url": "https://gist.githubusercontent.com/anonymous/3db88419ce829cdc5b9cd4b6ce8d6e18/raw/243b032be741062f20058bf9aa1abef126bbcae9/form.json", + "size": 21 + }, + "model.json": { + "filename": "model.json", + "type": "application/json", + "language": "JSON", + "raw_url": "https://gist.githubusercontent.com/anonymous/3db88419ce829cdc5b9cd4b6ce8d6e18/raw/8bed554bef4609cf1cf4b9421eb14debdaf769cd/model.json", + "size": 67 + }, + "schema.json": { + "filename": "schema.json", + "type": "application/json", + "language": "JSON", + "raw_url": "https://gist.githubusercontent.com/anonymous/3db88419ce829cdc5b9cd4b6ce8d6e18/raw/4a826f1ad7fbcb56a95365dd7b057209d45c9f05/schema.json", + "size": 882 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:19Z", + "updated_at": "2017-11-21T09:57:19Z", + "description": "A saved configuration for a schema form example, http://textalk.github.io/angular-schema-form/examples/bootstrap-example.html", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/3db88419ce829cdc5b9cd4b6ce8d6e18/comments", + "truncated": false +}, { + "url": "https://api.github.com/gists/c929152f5266b5adcda25b5d9e82aa67", + "forks_url": "https://api.github.com/gists/c929152f5266b5adcda25b5d9e82aa67/forks", + "commits_url": "https://api.github.com/gists/c929152f5266b5adcda25b5d9e82aa67/commits", + "id": "c929152f5266b5adcda25b5d9e82aa67", + "git_pull_url": "https://gist.github.com/c929152f5266b5adcda25b5d9e82aa67.git", + "git_push_url": "https://gist.github.com/c929152f5266b5adcda25b5d9e82aa67.git", + "html_url": "https://gist.github.com/c929152f5266b5adcda25b5d9e82aa67", + "files": { + "gistfile1.txt": { + "filename": "gistfile1.txt", + "type": "text/plain", + "language": "Text", + "raw_url": "https://gist.githubusercontent.com/ilovezfs/c929152f5266b5adcda25b5d9e82aa67/raw/3228755b2a5ac4df77887fc382d5368ca3639bea/gistfile1.txt", + "size": 4631 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:19Z", + "updated_at": "2017-11-21T09:57:20Z", + "description": "", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/c929152f5266b5adcda25b5d9e82aa67/comments", + "owner": { + "login": "ilovezfs", + "id": 5268928, + "avatar_url": "https://avatars2.githubusercontent.com/u/5268928?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ilovezfs", + "html_url": "https://github.com/ilovezfs", + "followers_url": "https://api.github.com/users/ilovezfs/followers", + "following_url": "https://api.github.com/users/ilovezfs/following{/other_user}", + "gists_url": "https://api.github.com/users/ilovezfs/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ilovezfs/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ilovezfs/subscriptions", + "organizations_url": "https://api.github.com/users/ilovezfs/orgs", + "repos_url": "https://api.github.com/users/ilovezfs/repos", + "events_url": "https://api.github.com/users/ilovezfs/events{/privacy}", + "received_events_url": "https://api.github.com/users/ilovezfs/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/bf80ec559e659e5a860ddec011a4b6b4", + "forks_url": "https://api.github.com/gists/bf80ec559e659e5a860ddec011a4b6b4/forks", + "commits_url": "https://api.github.com/gists/bf80ec559e659e5a860ddec011a4b6b4/commits", + "id": "bf80ec559e659e5a860ddec011a4b6b4", + "git_pull_url": "https://gist.github.com/bf80ec559e659e5a860ddec011a4b6b4.git", + "git_push_url": "https://gist.github.com/bf80ec559e659e5a860ddec011a4b6b4.git", + "html_url": "https://gist.github.com/bf80ec559e659e5a860ddec011a4b6b4", + "files": { + "stations.json": { + "filename": "stations.json", + "type": "application/json", + "language": "JSON", + "raw_url": "https://gist.githubusercontent.com/DanielDeJong2/bf80ec559e659e5a860ddec011a4b6b4/raw/38c3c23dc3d40366380ce91cd361a78757f37498/stations.json", + "size": 1268 + } + }, + "public": true, + "created_at": "2017-11-21T09:57:04Z", + "updated_at": "2017-11-21T09:58:19Z", + "description": "My radio app stations", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/bf80ec559e659e5a860ddec011a4b6b4/comments", + "owner": { + "login": "DanielDeJong2", + "id": 32357661, + "avatar_url": "https://avatars3.githubusercontent.com/u/32357661?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DanielDeJong2", + "html_url": "https://github.com/DanielDeJong2", + "followers_url": "https://api.github.com/users/DanielDeJong2/followers", + "following_url": "https://api.github.com/users/DanielDeJong2/following{/other_user}", + "gists_url": "https://api.github.com/users/DanielDeJong2/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DanielDeJong2/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DanielDeJong2/subscriptions", + "organizations_url": "https://api.github.com/users/DanielDeJong2/orgs", + "repos_url": "https://api.github.com/users/DanielDeJong2/repos", + "events_url": "https://api.github.com/users/DanielDeJong2/events{/privacy}", + "received_events_url": "https://api.github.com/users/DanielDeJong2/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}, { + "url": "https://api.github.com/gists/1df22589cce281ee5e9ce4c2408f8019", + "forks_url": "https://api.github.com/gists/1df22589cce281ee5e9ce4c2408f8019/forks", + "commits_url": "https://api.github.com/gists/1df22589cce281ee5e9ce4c2408f8019/commits", + "id": "1df22589cce281ee5e9ce4c2408f8019", + "git_pull_url": "https://gist.github.com/1df22589cce281ee5e9ce4c2408f8019.git", + "git_push_url": "https://gist.github.com/1df22589cce281ee5e9ce4c2408f8019.git", + "html_url": "https://gist.github.com/1df22589cce281ee5e9ce4c2408f8019", + "files": { + "gistfile1.txt": { + "filename": "gistfile1.txt", + "type": "text/plain", + "language": "Text", + "raw_url": "https://gist.githubusercontent.com/parul220290/1df22589cce281ee5e9ce4c2408f8019/raw/bda18554558e8b385b9738a78dbf734bd98747e1/gistfile1.txt", + "size": 1129 + } + }, + "public": true, + "created_at": "2017-11-21T09:56:54Z", + "updated_at": "2017-11-21T09:56:54Z", + "description": "RAML1.0", + "comments": 0, + "user": null, + "comments_url": "https://api.github.com/gists/1df22589cce281ee5e9ce4c2408f8019/comments", + "owner": { + "login": "parul220290", + "id": 33752620, + "avatar_url": "https://avatars3.githubusercontent.com/u/33752620?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/parul220290", + "html_url": "https://github.com/parul220290", + "followers_url": "https://api.github.com/users/parul220290/followers", + "following_url": "https://api.github.com/users/parul220290/following{/other_user}", + "gists_url": "https://api.github.com/users/parul220290/gists{/gist_id}", + "starred_url": "https://api.github.com/users/parul220290/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/parul220290/subscriptions", + "organizations_url": "https://api.github.com/users/parul220290/orgs", + "repos_url": "https://api.github.com/users/parul220290/repos", + "events_url": "https://api.github.com/users/parul220290/events{/privacy}", + "received_events_url": "https://api.github.com/users/parul220290/received_events", + "type": "User", + "site_admin": false + }, + "truncated": false +}] diff --git a/lib/atomic_map.ex b/lib/atomic_map.ex index 6598063..d065957 100644 --- a/lib/atomic_map.ex +++ b/lib/atomic_map.ex @@ -4,6 +4,7 @@ defmodule AtomicMap.Opts do """ defstruct safe: true, underscore: true, + high_perf: false, ignore: false end @@ -37,7 +38,7 @@ defmodule AtomicMap do defp convert_key(k, opts) do k - |> as_underscore(opts.underscore) + |> as_underscore(opts.underscore, opts.high_perf) |> as_atom(opts.safe, opts.ignore) end @@ -55,13 +56,43 @@ defmodule AtomicMap do defp as_atom(s, false, _) when is_binary(s), do: s |> String.to_atom() defp as_atom(s, _, _), do: s - defp as_underscore(s, true) when is_binary(s), do: s |> do_underscore() - defp as_underscore(s, true) when is_atom(s), do: s |> Atom.to_string() |> as_underscore(true) - defp as_underscore(s, false), do: s + defp as_underscore(s, true, false) when is_binary(s), do: s |> underscore() + defp as_underscore(s, true, false) when is_atom(s), do: s |> Atom.to_string() |> as_underscore(true, false) + defp as_underscore(s, true, true) when is_binary(s), do: s |> high_perf_underscore() + defp as_underscore(s, true, true) when is_atom(s), do: s |> Atom.to_string() |> as_underscore(true, true) + defp as_underscore(s, false, _), do: s - defp do_underscore(s) do - s - |> Macro.underscore() - |> String.replace(~r/-/, "_") + defp underscore(s) when is_binary(s) do + s |> Macro.underscore() |> String.replace("-", "_") end + + defp high_perf_underscore(s) when is_binary(s) do + s |> String.to_charlist() |> high_perf_underscore() |> to_string() + end + defp high_perf_underscore([h | rest]) do + [to_lower_char(h)] ++ to_underscore(rest, h) + end + defp high_perf_underscore('') do + '' + end + + defp to_underscore([h | rest], prev) when prev == ?_ or prev == ?- do + [to_lower_char(h)] ++ to_underscore(rest, h) + end + defp to_underscore([h0, h1 | rest], _) when h0 >= ?A and h0 <= ?Z and not (h1 >= ?A and h1 <= ?Z) and h1 != ?_ and h1 != ?- do + [?_, to_lower_char(h0), h1] ++ to_underscore(rest, h1) + end + defp to_underscore([h | rest], prev) when h >= ?A and h <= ?Z and not (prev >= ?A and prev <= ?Z) and prev != ?_ and prev != ?- do + [?_, to_lower_char(h)] ++ to_underscore(rest, h) + end + defp to_underscore([h | rest], _) do + [to_lower_char(h)] ++ to_underscore(rest, h) + end + defp to_underscore('', _) do + '' + end + + defp to_lower_char(?-), do: ?_ + defp to_lower_char(char) when char >= ?A and char <= ?Z, do: char + 32 + defp to_lower_char(char), do: char end diff --git a/mix.exs b/mix.exs index 0280c15..12878af 100644 --- a/mix.exs +++ b/mix.exs @@ -1,11 +1,11 @@ defmodule AtomicMap.Mixfile do use Mix.Project - @version "0.9.2" + @version "0.10.0" def project do [app: :atomic_map, version: @version, - elixir: ">= 1.2.0", + elixir: ">= 1.5.0", build_embedded: Mix.env == :prod, start_permanent: Mix.env == :prod, package: package(), @@ -34,6 +34,7 @@ defmodule AtomicMap.Mixfile do {:earmark, "~> 1.1", only: :dev}, {:ex_doc, "~> 0.14", only: :dev}, {:benchfella, "~> 0.3", only: :dev}, + {:poison, "~> 3.1", only: :dev} ] end diff --git a/mix.lock b/mix.lock index e9e4a00..7fdbef3 100644 --- a/mix.lock +++ b/mix.lock @@ -1,3 +1,4 @@ -%{"benchfella": {:hex, :benchfella, "0.3.2", "b9648e77fa8d8b8b9fe8f54293bee63f7de03909b3af6ab22a0e546716a396fb", [:mix], []}, - "earmark": {:hex, :earmark, "1.1.1", "433136b7f2e99cde88b745b3a0cfc3fbc81fe58b918a09b40fce7f00db4d8187", [:mix], []}, - "ex_doc": {:hex, :ex_doc, "0.15.0", "e73333785eef3488cf9144a6e847d3d647e67d02bd6fdac500687854dd5c599f", [:mix], [{:earmark, "~> 1.1", [hex: :earmark, optional: false]}]}} +%{"benchfella": {:hex, :benchfella, "0.3.5", "b2122c234117b3f91ed7b43b6e915e19e1ab216971154acd0a80ce0e9b8c05f5", [:mix], []}, + "earmark": {:hex, :earmark, "1.2.3", "206eb2e2ac1a794aa5256f3982de7a76bf4579ff91cb28d0e17ea2c9491e46a4", [:mix], []}, + "ex_doc": {:hex, :ex_doc, "0.18.1", "37c69d2ef62f24928c1f4fdc7c724ea04aecfdf500c4329185f8e3649c915baf", [:mix], [{:earmark, "~> 1.1", [hex: :earmark, optional: false]}]}, + "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], []}} diff --git a/test/atomic_map_test.exs b/test/atomic_map_test.exs index 516f8e4..0c72541 100644 --- a/test/atomic_map_test.exs +++ b/test/atomic_map_test.exs @@ -84,4 +84,16 @@ defmodule AtomicMapTest do AtomicMap.convert(input, safe: true, ignore: false) end end + + test "camel case to underscore convertion" do + input = %{"camelCase-Foo-bar-123_Test" => 42} + expected = %{camel_case_foo_bar_123_test: 42} + assert AtomicMap.convert(input, safe: false, high_perf: true) == expected + end + + test "pascal case to underscore convertion" do + input = %{"PascalCaseFooBar-123Test" => 42} + expected = %{pascal_case_foo_bar_123_test: 42} + assert AtomicMap.convert(input, safe: false, high_perf: true) == expected + end end