{"action":"created","comment":{"url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments/80687856","pull_request_review_id":1715870,"id":80687856,"diff_hunk":"@@ -0,0 +1,691 @@\n+/**\n+ * @file\n+ *\n+ * @brief Swig interface file for KDB Ruby bindings\n+ *\n+ * @copyright BSD License (see doc/COPYING or http://www.libelektra.org)\n+ */\n+\n+%feature(\"autodoc\", \"3\");\n+\n+%define CPPDOCURL \"http://www.libelektra.org/TBD!!!\" %enddef\n+\n+%define DOCSTRING\n+\"This module is a SWIG generated binding for KDB (http://www.libelektra.org),\n+therefore the module provide wrapper classes to KDBs C++ interface and is \n+mainly a 1 to 1 relation. However, to provide a more Ruby-style API to KDB,\n+this module differs to the C++ API in the following way:\n+ * C++ iterators for Key/KeySet are excluded. Instead KeySet implements\n+   a 'each' method and includes 'Enumerable' and should be very similar to\n+   a Ruby-Array. However, the KeySet cursor methods are still available.\n+ * Access to native C-level KDB structures (such as ckdb::Key) is not\n+   possible, as this does not make much sense within Ruby.\n+ * method names are renamed to follow Ruby naming conventions\n+ * Key and KeySet methods directly modify the underlaying Key/KeySet\n+\n+Please note, this documentaition will show C++ types also (e.g. std::string).\n+\"\n+%enddef\n+/* docstring for module wasn't implemented until now, however, there's \n+   a pull-request (https://github.com/swig/swig/pull/582), thus this feature\n+   should be available soon */\n+%module(docstring=DOCSTRING) kdb\n+\n+\n+\n+%include \"attribute.i\"\n+%include \"std_string.i\"\n+%include \"stdint.i\"\n+%include \"exception.i\"\n+%include \"std_except.i\"\n+\n+/* add mapping for std::bad_alloc exception */\n+namespace std {\n+  %std_exception_map(bad_alloc, SWIG_MemoryError);\n+}\n+\n+\n+%{\n+  extern \"C\" {\n+    #include \"kdbconfig.h\"\n+    #include \"kdbprivate.h\" /* required for KEYSET_SIZE */\n+    #include \"kdb.h\"\n+  }\n+\n+  #include \"keyexcept.hpp\"\n+  #include \"kdbexcept.hpp\"\n+  #include \"key.hpp\"\n+  #include \"keyset.hpp\"\n+  #include \"kdb.hpp\"\n+  using namespace kdb;\n+%}\n+\n+%apply long { ssize_t }\n+\n+/****************************************************************************\n+ *\n+ * kdb.h\n+ *\n+ ****************************************************************************/\n+\n+%constant void *KS_END = KS_END;\n+%constant const char *VERSION = KDB_VERSION;\n+%constant const short VERSION_MAJOR = KDB_VERSION_MAJOR;\n+%constant const short VERSION_MINOR = KDB_VERSION_MINOR;\n+%constant const short VERSION_MICRO = KDB_VERSION_MICRO;\n+/* we only care about the enums. ignore the c functions */\n+%ignore ckdb;\n+%include \"kdb.h\"\n+\n+\n+\n+/****************************************************************************\n+ *\n+ * kdb::Key\n+ *\n+ ****************************************************************************/\n+\n+%feature(\"autodoc\", \"Wrapper class for C++ kdb::Key, thus for a full \n+documentation see \" CPPDOCURL \"Key.html.\n+\n+However, to allow a more Ruby way of programming this class differs from\n+the original C++ class in the following aspects:\n+- method names follow ruby naming conventions \n+- variable length argument list (`va_list`) is implemented using Rubys\n+  parameter Hash method. \n+- getter methods to underlaying Elektra Key (C) are not included\n+- C++ Iterators for iterating over meta data are not included. Instaed use\n+  Key.next_meta, Key.current_meta, Key.rewind_meta and Key.meta.\n+- Key.meta allows access to the meta data key set\n+- string length methods are not included (e.g. key.getNameSize())\n+\") kdb::Key;\n+\n+/* \n+ * Exceptions \n+ */\n+%exceptionclass kdb::Exception;\n+%rename(\"to_s\") kdb::Exception::what;\n+\n+%exceptionclass kdb::KeyInvalidName;\n+%exceptionclass kdb::KeyException;\n+%exceptionclass kdb::KeyNotFoundException;\n+%exceptionclass kdb::KeyTypeException;\n+%exceptionclass kdb::KeyTypeConversion;\n+\n+%include \"keyexcept.hpp\"\n+\n+/* define which methods are throwing which exceptions */\n+%catches (kdb::KeyException) kdb::Key::getName;\n+%catches (kdb::KeyException) kdb::Key::getFullName;\n+\n+%catches (kdb::KeyInvalidName) kdb::Key::setName;\n+%catches (kdb::KeyInvalidName) kdb::Key::addName;\n+%catches (kdb::KeyInvalidName) kdb::Key::setBaseName;\n+%catches (kdb::KeyInvalidName) kdb::Key::addBaseName;\n+\n+%catches (kdb::KeyTypeMismatch, kdb::KeyException) kdb::Key::getString;\n+%catches (kdb::KeyTypeMismatch, kdb::KeyException) kdb::Key::getBinary;\n+\n+%catches (std::bad_alloc) kdb::Key::Key;\n+\n+\n+/* ignore certain methods */\n+%feature(\"autodoc\", \"Allocate a new Key\n+\n+The following variants are available:\n+\n+  call-seq:\n+     Kdb::Key.new\n+     Kdb::Key.new keyname\n+     Kdb::Key.new keyname, options-Hash\n+\n+  k = Kdb::Key.new\n+\n+  k = Kdb::Key.new('user/myapp/config1',\n+                   value: 'hello',\n+                   owner: 'me',\n+                   meta-data1: 'meta')\n+\") kdb::Key::Key; \n+//%ignore kdb::Key::Key ();\n+//%ignore kdb::Key::Key (const std::string keyName, ...);\n+//%ignore kdb::Key::Key (const char *keyName, va_list ap);\n+%ignore kdb::Key::Key (char const *keyName, ...);\n+%ignore kdb::Key::Key (ckdb::Key *k);\n+%ignore kdb::Key::Key (Key &k);\n+%ignore kdb::Key::Key (Key const &k);\n+\n+%ignore kdb::Key::operator++;\n+%ignore kdb::Key::operator--;\n+%ignore kdb::Key::operator=;\n+%ignore kdb::Key::operator->;\n+%ignore kdb::Key::operator bool;\n+\n+/* This seems to be implemented in ruby by '! ==' */\n+%ignore kdb::Key::operator!=;\n+\n+/* we do not need the raw key */\n+%ignore kdb::Key::getKey;\n+%ignore kdb::Key::operator*;\n+%ignore kdb::Key::release;\n+\n+/* we do not need the string sizes functions, since the give wrong\n+ * (size + 1) size info */\n+%ignore kdb::Key::getNameSize;\n+%ignore kdb::Key::getBaseNameSize;\n+%ignore kdb::Key::getFullNameSize;\n+%ignore kdb::Key::getStringSize;\n+/* kdb::Key::getBinarySize could be useful */\n+\n+\n+/* predicate methods rename to \"is_xxx?\" and return Rubys boolean */\n+%predicate kdb::Key::isValid;\n+%predicate kdb::Key::isSystem;\n+%predicate kdb::Key::isUser;\n+%predicate kdb::Key::isString;\n+%predicate kdb::Key::isBinary;\n+%predicate kdb::Key::isInactive;\n+%predicate kdb::Key::isBelow;\n+%predicate kdb::Key::isBelowOrSame;\n+%predicate kdb::Key::isDirectBelow;\n+%predicate kdb::Key::hasMeta;\n+%predicate kdb::Key::isNull; // TODO: do we need something special here??? \n+%predicate kdb::Key::needSync;\n+\n+/* \n+ * be more Ruby native: \n+ * for all methods, which return a Key, for which Key.is_null? returns true\n+ * (null-key), return NIL instead */\n+namespace kdb {\n+\n+  %typemap(out) Key {\n+    if ($1.isNull()) {\n+      $result = Qnil;\n+    } else {\n+      $result = SWIG_NewPointerObj(new kdb::Key($1), \n+                                    SWIGTYPE_p_kdb__Key, \n+                                    SWIG_POINTER_OWN | 0);\n+    }\n+  }\n+}\n+\n+\n+/* rename some methods to meet the Ruby naming conventions */\n+%rename(\"name\") kdb::Key::getName;\n+%rename(\"name=\") kdb::Key::setName;\n+\n+%rename(\"base_name\") kdb::Key::getBaseName;\n+%rename(\"base_name=\") kdb::Key::setBaseName;\n+\n+%rename(\"full_name\") kdb::Key::getFullName;\n+\n+%rename(\"namespace\") kdb::Key::getNamespace;\n+\n+\n+/* autorename and templates has some problems */\n+%rename(\"get\") kdb::Key::get<std::string>;\n+%rename(\"set\") kdb::Key::set<std::string>;\n+%alias kdb::Key::get<std::string> \"value\"\n+%alias kdb::Key::set<std::string> \"value=\"\n+\n+%rename(\"set_meta\") kdb::Key::setMeta<std::string>;\n+%rename(\"get_meta\") kdb::Key::getMeta<std::string>;\n+\n+%alias kdb::Key::setMeta<std::string> \"[]=\"\n+%alias kdb::Key::getMeta<std::string> \"[]\"\n+\n+/* expose Keys meta KeySet\n+ * this allows Ruby-style meta iterator, e.g. k.meta.each ... */\n+%feature(\"autodoc\", \"allows access to the meta data keyset of the \n+underlaying key, which allows a Ruby-style iteration over metadata:\n+  k.meta.each { |m| puts 'meta data: %s: %s' % [m.name, m.value] }\n+\") kdb::Key::meta;\n+%extend kdb::Key {\n+  kdb::KeySet* meta() {\n+    return new kdb::KeySet($self->getKey()->meta);\n+  }\n+}\n+\n+\n+/* getMeta Typemap\n+ * This is used to convert the input argument to a Ruby string. In certain\n+ * cases this is useful, to allow passing in Symbols as meta names. */\n+%typemap(in) (const std::string & metaName) {\n+  // typemap in for getMeta\n+  $input = rb_funcall($input, rb_intern(\"to_s\"), 0, NULL);\n+  $1 = new std::string(StringValueCStr($input));\n+}\n+%typemap(freearg) (const std::string & metaName) {\n+  // typemap in for getMeta\n+  delete $1;\n+}\n+\n+/* Typemap for setBinary\n+ * pass raw data pointer of a Ruby String and its length */\n+%typemap(in) (const void * newBinary, size_t dataSize) {\n+  $1 = (void *) StringValuePtr($input);\n+  $2 = RSTRING_LEN($input);\n+}\n+\n+\n+/* 'imitate' va_list as Ruby Hash\n+ * \n+ * \"missuse\" the exception feature of SWIG to provide a custom\n+ *  method invocation. This allows us to pass a Ruby argument hash\n+ *  as a va_list. This way, we can imitate the variable argument\n+ *  list (and keyword argument) features\n+ */\n+%typemap(in) (va_list ap) {\n+  // we expect to be $input to be a Ruby Hash\n+  Check_Type($input, T_HASH);\n+}\n+\n+%feature(\"except\") kdb::Key::Key (const char *keyName, va_list ap) {\n+  /* standard method invocation would be: \n+  $action\n+  */\n+  /* exception features do not have local variables,\n+     so we define them our selfs */\n+  int hash_size = 0;\n+  VALUE keys_arr;\n+  VALUE key;\n+  VALUE val;\n+  int i;\n+  int flags = 0;\n+\n+  /* $input substitution does not here, so we have to reverence","path":"src/bindings/swig/ruby/kdb.i","position":295,"original_position":295,"commit_id":"6338e9569f3d82d6c3a12437ed835663041c3ab2","original_commit_id":"6338e9569f3d82d6c3a12437ed835663041c3ab2","user":{"login":"markus2330","id":7949075,"avatar_url":"https://avatars.githubusercontent.com/u/7949075?v=3","gravatar_id":"","url":"https://api.github.com/users/markus2330","html_url":"https://github.com/markus2330","followers_url":"https://api.github.com/users/markus2330/followers","following_url":"https://api.github.com/users/markus2330/following{/other_user}","gists_url":"https://api.github.com/users/markus2330/gists{/gist_id}","starred_url":"https://api.github.com/users/markus2330/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markus2330/subscriptions","organizations_url":"https://api.github.com/users/markus2330/orgs","repos_url":"https://api.github.com/users/markus2330/repos","events_url":"https://api.github.com/users/markus2330/events{/privacy}","received_events_url":"https://api.github.com/users/markus2330/received_events","type":"User","site_admin":false},"body":"reverence?","created_at":"2016-09-27T13:13:35Z","updated_at":"2016-09-27T13:13:35Z","html_url":"https://github.com/ElektraInitiative/libelektra/pull/891#discussion_r80687856","pull_request_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891","_links":{"self":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments/80687856"},"html":{"href":"https://github.com/ElektraInitiative/libelektra/pull/891#discussion_r80687856"},"pull_request":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891"}}},"pull_request":{"url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891","id":82689170,"html_url":"https://github.com/ElektraInitiative/libelektra/pull/891","diff_url":"https://github.com/ElektraInitiative/libelektra/pull/891.diff","patch_url":"https://github.com/ElektraInitiative/libelektra/pull/891.patch","issue_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/891","number":891,"state":"open","locked":false,"title":"Ruby bindings","user":{"login":"BernhardDenner","id":2721757,"avatar_url":"https://avatars.githubusercontent.com/u/2721757?v=3","gravatar_id":"","url":"https://api.github.com/users/BernhardDenner","html_url":"https://github.com/BernhardDenner","followers_url":"https://api.github.com/users/BernhardDenner/followers","following_url":"https://api.github.com/users/BernhardDenner/following{/other_user}","gists_url":"https://api.github.com/users/BernhardDenner/gists{/gist_id}","starred_url":"https://api.github.com/users/BernhardDenner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BernhardDenner/subscriptions","organizations_url":"https://api.github.com/users/BernhardDenner/orgs","repos_url":"https://api.github.com/users/BernhardDenner/repos","events_url":"https://api.github.com/users/BernhardDenner/events{/privacy}","received_events_url":"https://api.github.com/users/BernhardDenner/received_events","type":"User","site_admin":false},"body":"# Purpose\r\n\r\nThis is the initial Pull request for libelektra Ruby bindings implemented using SWIG:\r\n- bindings for kdb::Key, kdb::KeySet and kdb::KDB\r\n- exception handling implemented\r\n- KeySet supports kdb iterator through current/next and Ruby style iterators (Enumerable mixin)\r\n- follows Ruby naming conventions\r\n- includes unit tests \r\n- includes examples\r\n\r\nHowever, documentation could be better.\r\n\r\n# Checklist\r\n\r\n- [x] commit messages are fine (with references to issues)\r\n- [x] I ran all tests and everything went fine\r\n- [x] I added unit tests\r\n- [ ] affected documentation is fixed\r\n- [x] I added code comments, logging, and assertions\r\n- [ ] meta data is updated (e.g. README.md of plugins)\r\n\r\n@markus2330 please review my pull request, mainly check the unit test cases, if it looks promising\r\n","created_at":"2016-08-25T09:51:00Z","updated_at":"2016-09-27T13:40:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fedee80e78d09f11c95b891ba10eb1e01fe43f4b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891/commits","review_comments_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891/comments","review_comment_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/891/comments","statuses_url":"https://api.github.com/repos/ElektraInitiative/libelektra/statuses/6338e9569f3d82d6c3a12437ed835663041c3ab2","head":{"label":"BernhardDenner:ruby-test","ref":"ruby-test","sha":"6338e9569f3d82d6c3a12437ed835663041c3ab2","user":{"login":"BernhardDenner","id":2721757,"avatar_url":"https://avatars.githubusercontent.com/u/2721757?v=3","gravatar_id":"","url":"https://api.github.com/users/BernhardDenner","html_url":"https://github.com/BernhardDenner","followers_url":"https://api.github.com/users/BernhardDenner/followers","following_url":"https://api.github.com/users/BernhardDenner/following{/other_user}","gists_url":"https://api.github.com/users/BernhardDenner/gists{/gist_id}","starred_url":"https://api.github.com/users/BernhardDenner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BernhardDenner/subscriptions","organizations_url":"https://api.github.com/users/BernhardDenner/orgs","repos_url":"https://api.github.com/users/BernhardDenner/repos","events_url":"https://api.github.com/users/BernhardDenner/events{/privacy}","received_events_url":"https://api.github.com/users/BernhardDenner/received_events","type":"User","site_admin":false},"repo":{"id":46405890,"name":"libelektra","full_name":"BernhardDenner/libelektra","owner":{"login":"BernhardDenner","id":2721757,"avatar_url":"https://avatars.githubusercontent.com/u/2721757?v=3","gravatar_id":"","url":"https://api.github.com/users/BernhardDenner","html_url":"https://github.com/BernhardDenner","followers_url":"https://api.github.com/users/BernhardDenner/followers","following_url":"https://api.github.com/users/BernhardDenner/following{/other_user}","gists_url":"https://api.github.com/users/BernhardDenner/gists{/gist_id}","starred_url":"https://api.github.com/users/BernhardDenner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BernhardDenner/subscriptions","organizations_url":"https://api.github.com/users/BernhardDenner/orgs","repos_url":"https://api.github.com/users/BernhardDenner/repos","events_url":"https://api.github.com/users/BernhardDenner/events{/privacy}","received_events_url":"https://api.github.com/users/BernhardDenner/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/BernhardDenner/libelektra","description":"Elektra provides a universal and secure framework to store configuration parameters in a global, hierarchical key database.","fork":true,"url":"https://api.github.com/repos/BernhardDenner/libelektra","forks_url":"https://api.github.com/repos/BernhardDenner/libelektra/forks","keys_url":"https://api.github.com/repos/BernhardDenner/libelektra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BernhardDenner/libelektra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BernhardDenner/libelektra/teams","hooks_url":"https://api.github.com/repos/BernhardDenner/libelektra/hooks","issue_events_url":"https://api.github.com/repos/BernhardDenner/libelektra/issues/events{/number}","events_url":"https://api.github.com/repos/BernhardDenner/libelektra/events","assignees_url":"https://api.github.com/repos/BernhardDenner/libelektra/assignees{/user}","branches_url":"https://api.github.com/repos/BernhardDenner/libelektra/branches{/branch}","tags_url":"https://api.github.com/repos/BernhardDenner/libelektra/tags","blobs_url":"https://api.github.com/repos/BernhardDenner/libelektra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BernhardDenner/libelektra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BernhardDenner/libelektra/git/refs{/sha}","trees_url":"https://api.github.com/repos/BernhardDenner/libelektra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BernhardDenner/libelektra/statuses/{sha}","languages_url":"https://api.github.com/repos/BernhardDenner/libelektra/languages","stargazers_url":"https://api.github.com/repos/BernhardDenner/libelektra/stargazers","contributors_url":"https://api.github.com/repos/BernhardDenner/libelektra/contributors","subscribers_url":"https://api.github.com/repos/BernhardDenner/libelektra/subscribers","subscription_url":"https://api.github.com/repos/BernhardDenner/libelektra/subscription","commits_url":"https://api.github.com/repos/BernhardDenner/libelektra/commits{/sha}","git_commits_url":"https://api.github.com/repos/BernhardDenner/libelektra/git/commits{/sha}","comments_url":"https://api.github.com/repos/BernhardDenner/libelektra/comments{/number}","issue_comment_url":"https://api.github.com/repos/BernhardDenner/libelektra/issues/comments{/number}","contents_url":"https://api.github.com/repos/BernhardDenner/libelektra/contents/{+path}","compare_url":"https://api.github.com/repos/BernhardDenner/libelektra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BernhardDenner/libelektra/merges","archive_url":"https://api.github.com/repos/BernhardDenner/libelektra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BernhardDenner/libelektra/downloads","issues_url":"https://api.github.com/repos/BernhardDenner/libelektra/issues{/number}","pulls_url":"https://api.github.com/repos/BernhardDenner/libelektra/pulls{/number}","milestones_url":"https://api.github.com/repos/BernhardDenner/libelektra/milestones{/number}","notifications_url":"https://api.github.com/repos/BernhardDenner/libelektra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BernhardDenner/libelektra/labels{/name}","releases_url":"https://api.github.com/repos/BernhardDenner/libelektra/releases{/id}","deployments_url":"https://api.github.com/repos/BernhardDenner/libelektra/deployments","created_at":"2015-11-18T08:38:14Z","updated_at":"2016-07-26T16:15:06Z","pushed_at":"2016-09-21T19:25:18Z","git_url":"git://github.com/BernhardDenner/libelektra.git","ssh_url":"git@github.com:BernhardDenner/libelektra.git","clone_url":"https://github.com/BernhardDenner/libelektra.git","svn_url":"https://github.com/BernhardDenner/libelektra","homepage":"","size":33496,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ElektraInitiative:master","ref":"master","sha":"6db2dd4d0cf890873b24e108d50073fa18d27920","user":{"login":"ElektraInitiative","id":7949092,"avatar_url":"https://avatars.githubusercontent.com/u/7949092?v=3","gravatar_id":"","url":"https://api.github.com/users/ElektraInitiative","html_url":"https://github.com/ElektraInitiative","followers_url":"https://api.github.com/users/ElektraInitiative/followers","following_url":"https://api.github.com/users/ElektraInitiative/following{/other_user}","gists_url":"https://api.github.com/users/ElektraInitiative/gists{/gist_id}","starred_url":"https://api.github.com/users/ElektraInitiative/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElektraInitiative/subscriptions","organizations_url":"https://api.github.com/users/ElektraInitiative/orgs","repos_url":"https://api.github.com/users/ElektraInitiative/repos","events_url":"https://api.github.com/users/ElektraInitiative/events{/privacy}","received_events_url":"https://api.github.com/users/ElektraInitiative/received_events","type":"Organization","site_admin":false},"repo":{"id":21063580,"name":"libelektra","full_name":"ElektraInitiative/libelektra","owner":{"login":"ElektraInitiative","id":7949092,"avatar_url":"https://avatars.githubusercontent.com/u/7949092?v=3","gravatar_id":"","url":"https://api.github.com/users/ElektraInitiative","html_url":"https://github.com/ElektraInitiative","followers_url":"https://api.github.com/users/ElektraInitiative/followers","following_url":"https://api.github.com/users/ElektraInitiative/following{/other_user}","gists_url":"https://api.github.com/users/ElektraInitiative/gists{/gist_id}","starred_url":"https://api.github.com/users/ElektraInitiative/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElektraInitiative/subscriptions","organizations_url":"https://api.github.com/users/ElektraInitiative/orgs","repos_url":"https://api.github.com/users/ElektraInitiative/repos","events_url":"https://api.github.com/users/ElektraInitiative/events{/privacy}","received_events_url":"https://api.github.com/users/ElektraInitiative/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ElektraInitiative/libelektra","description":"Elektra serves as a universal and secure framework to access configuration parameters in a global, hierarchical key database.","fork":false,"url":"https://api.github.com/repos/ElektraInitiative/libelektra","forks_url":"https://api.github.com/repos/ElektraInitiative/libelektra/forks","keys_url":"https://api.github.com/repos/ElektraInitiative/libelektra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ElektraInitiative/libelektra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ElektraInitiative/libelektra/teams","hooks_url":"https://api.github.com/repos/ElektraInitiative/libelektra/hooks","issue_events_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/events{/number}","events_url":"https://api.github.com/repos/ElektraInitiative/libelektra/events","assignees_url":"https://api.github.com/repos/ElektraInitiative/libelektra/assignees{/user}","branches_url":"https://api.github.com/repos/ElektraInitiative/libelektra/branches{/branch}","tags_url":"https://api.github.com/repos/ElektraInitiative/libelektra/tags","blobs_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/refs{/sha}","trees_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ElektraInitiative/libelektra/statuses/{sha}","languages_url":"https://api.github.com/repos/ElektraInitiative/libelektra/languages","stargazers_url":"https://api.github.com/repos/ElektraInitiative/libelektra/stargazers","contributors_url":"https://api.github.com/repos/ElektraInitiative/libelektra/contributors","subscribers_url":"https://api.github.com/repos/ElektraInitiative/libelektra/subscribers","subscription_url":"https://api.github.com/repos/ElektraInitiative/libelektra/subscription","commits_url":"https://api.github.com/repos/ElektraInitiative/libelektra/commits{/sha}","git_commits_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/commits{/sha}","comments_url":"https://api.github.com/repos/ElektraInitiative/libelektra/comments{/number}","issue_comment_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/comments{/number}","contents_url":"https://api.github.com/repos/ElektraInitiative/libelektra/contents/{+path}","compare_url":"https://api.github.com/repos/ElektraInitiative/libelektra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ElektraInitiative/libelektra/merges","archive_url":"https://api.github.com/repos/ElektraInitiative/libelektra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ElektraInitiative/libelektra/downloads","issues_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues{/number}","pulls_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls{/number}","milestones_url":"https://api.github.com/repos/ElektraInitiative/libelektra/milestones{/number}","notifications_url":"https://api.github.com/repos/ElektraInitiative/libelektra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ElektraInitiative/libelektra/labels{/name}","releases_url":"https://api.github.com/repos/ElektraInitiative/libelektra/releases{/id}","deployments_url":"https://api.github.com/repos/ElektraInitiative/libelektra/deployments","created_at":"2014-06-21T08:01:04Z","updated_at":"2016-09-17T08:00:03Z","pushed_at":"2016-09-27T10:11:23Z","git_url":"git://github.com/ElektraInitiative/libelektra.git","ssh_url":"git@github.com:ElektraInitiative/libelektra.git","clone_url":"https://github.com/ElektraInitiative/libelektra.git","svn_url":"https://github.com/ElektraInitiative/libelektra","homepage":"http://libelektra.org","size":34512,"stargazers_count":35,"watchers_count":35,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":27,"mirror_url":null,"open_issues_count":160,"forks":27,"open_issues":160,"watchers":35,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891"},"html":{"href":"https://github.com/ElektraInitiative/libelektra/pull/891"},"issue":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/891"},"comments":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/891/comments"},"review_comments":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891/comments"},"review_comment":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/891/commits"},"statuses":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/statuses/6338e9569f3d82d6c3a12437ed835663041c3ab2"}}}}
{"actor":{"display_login":"markus2330"}}