{"action":"closed","number":58,"pull_request":{"url":"https://api.github.com/repos/ocsigen/tyxml/pulls/58","id":22587050,"html_url":"https://github.com/ocsigen/tyxml/pull/58","diff_url":"https://github.com/ocsigen/tyxml/pull/58.diff","patch_url":"https://github.com/ocsigen/tyxml/pull/58.patch","issue_url":"https://api.github.com/repos/ocsigen/tyxml/issues/58","number":58,"state":"closed","locked":false,"title":"Rework wrapping","user":{"login":"Drup","id":801124,"avatar_url":"https://avatars.githubusercontent.com/u/801124?v=3","gravatar_id":"","url":"https://api.github.com/users/Drup","html_url":"https://github.com/Drup","followers_url":"https://api.github.com/users/Drup/followers","following_url":"https://api.github.com/users/Drup/following{/other_user}","gists_url":"https://api.github.com/users/Drup/gists{/gist_id}","starred_url":"https://api.github.com/users/Drup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Drup/subscriptions","organizations_url":"https://api.github.com/users/Drup/orgs","repos_url":"https://api.github.com/users/Drup/repos","events_url":"https://api.github.com/users/Drup/events{/privacy}","received_events_url":"https://api.github.com/users/Drup/received_events","type":"User","site_admin":false},"body":"This removes all the wrapped functor, simplify most signatures and remove the need for two arguments to use `Html5` signature (see [this](https://github.com/Drup/ocaml-markdown/commit/aab07fa115e2a72e78db09bfc7e50f8228ac678f)). \r\n\r\nThis is done by adding a `W` module to `Xml` everywhere so that, given an `Xml` module (and, by extension, an `Html5` or `Svg` modules containing one, and all of them should), you can use the basic operations on the wrapped element.\r\nThe `'a wrap` and `'a list_wrap` are now just aliases. \r\n\r\nIt also normalize the naming scheme. Every signatures (`Xml`, `Xml_wrap`, `Svg`, `Html5`) comes in two versions, the `T` version, which is the normal, fully general one and the `NoWrap` version, which comes with the forced equality `Xml.W = Xml_wrap.NoWrap`. \r\n\r\nIt's breaking for everyone using the functorized interface but that's all.\r\n\r\nIn the future, we could provide a small functor taking a `W` and producing a minimal \"standard library\", I don't know if it's needed.\r\n\r\nBasically, I did it painfully wrong the first time, and this fixes it. Sorry about it. :/\r\ncc @darioteixeira, as he's our main user of tyxml's signatures.\r\n\r\n@darioteixeira, the change needed after this for camlhighlight is implemented [here](https://github.com/Drup/camlhighlight/commit/5217053d4cadad99d986ef615a08f4cdc49b35ec). To accept an arbitrary wrapping, you replace the `NoWrap` by `T` and use the operations in `Html.Xml.W`.","created_at":"2014-10-10T20:40:00Z","updated_at":"2015-08-05T15:05:21Z","closed_at":"2015-08-05T15:05:21Z","merged_at":"2015-08-05T15:05:21Z","merge_commit_sha":"bf2f3163dff6656225b8822083d83716cc64e620","assignee":null,"milestone":{"url":"https://api.github.com/repos/ocsigen/tyxml/milestones/1","html_url":"https://github.com/ocsigen/tyxml/milestones/4.0","labels_url":"https://api.github.com/repos/ocsigen/tyxml/milestones/1/labels","id":725713,"number":1,"title":"4.0","description":"Next major version, for all the breaking changes.","creator":{"login":"Drup","id":801124,"avatar_url":"https://avatars.githubusercontent.com/u/801124?v=3","gravatar_id":"","url":"https://api.github.com/users/Drup","html_url":"https://github.com/Drup","followers_url":"https://api.github.com/users/Drup/followers","following_url":"https://api.github.com/users/Drup/following{/other_user}","gists_url":"https://api.github.com/users/Drup/gists{/gist_id}","starred_url":"https://api.github.com/users/Drup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Drup/subscriptions","organizations_url":"https://api.github.com/users/Drup/orgs","repos_url":"https://api.github.com/users/Drup/repos","events_url":"https://api.github.com/users/Drup/events{/privacy}","received_events_url":"https://api.github.com/users/Drup/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2014-07-19T00:58:13Z","updated_at":"2015-08-05T15:05:21Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/ocsigen/tyxml/pulls/58/commits","review_comments_url":"https://api.github.com/repos/ocsigen/tyxml/pulls/58/comments","review_comment_url":"https://api.github.com/repos/ocsigen/tyxml/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ocsigen/tyxml/issues/58/comments","statuses_url":"https://api.github.com/repos/ocsigen/tyxml/statuses/2102767e827c7e9d6ce4f4598210fd1f6f4746cf","head":{"label":"ocsigen:wrap","ref":"wrap","sha":"2102767e827c7e9d6ce4f4598210fd1f6f4746cf","user":{"login":"ocsigen","id":4729424,"avatar_url":"https://avatars.githubusercontent.com/u/4729424?v=3","gravatar_id":"","url":"https://api.github.com/users/ocsigen","html_url":"https://github.com/ocsigen","followers_url":"https://api.github.com/users/ocsigen/followers","following_url":"https://api.github.com/users/ocsigen/following{/other_user}","gists_url":"https://api.github.com/users/ocsigen/gists{/gist_id}","starred_url":"https://api.github.com/users/ocsigen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocsigen/subscriptions","organizations_url":"https://api.github.com/users/ocsigen/orgs","repos_url":"https://api.github.com/users/ocsigen/repos","events_url":"https://api.github.com/users/ocsigen/events{/privacy}","received_events_url":"https://api.github.com/users/ocsigen/received_events","type":"Organization","site_admin":false},"repo":{"id":11750900,"name":"tyxml","full_name":"ocsigen/tyxml","owner":{"login":"ocsigen","id":4729424,"avatar_url":"https://avatars.githubusercontent.com/u/4729424?v=3","gravatar_id":"","url":"https://api.github.com/users/ocsigen","html_url":"https://github.com/ocsigen","followers_url":"https://api.github.com/users/ocsigen/followers","following_url":"https://api.github.com/users/ocsigen/following{/other_user}","gists_url":"https://api.github.com/users/ocsigen/gists{/gist_id}","starred_url":"https://api.github.com/users/ocsigen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocsigen/subscriptions","organizations_url":"https://api.github.com/users/ocsigen/orgs","repos_url":"https://api.github.com/users/ocsigen/repos","events_url":"https://api.github.com/users/ocsigen/events{/privacy}","received_events_url":"https://api.github.com/users/ocsigen/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ocsigen/tyxml","description":"OCaml library to build valid HTML5 and SVG trees.","fork":false,"url":"https://api.github.com/repos/ocsigen/tyxml","forks_url":"https://api.github.com/repos/ocsigen/tyxml/forks","keys_url":"https://api.github.com/repos/ocsigen/tyxml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ocsigen/tyxml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ocsigen/tyxml/teams","hooks_url":"https://api.github.com/repos/ocsigen/tyxml/hooks","issue_events_url":"https://api.github.com/repos/ocsigen/tyxml/issues/events{/number}","events_url":"https://api.github.com/repos/ocsigen/tyxml/events","assignees_url":"https://api.github.com/repos/ocsigen/tyxml/assignees{/user}","branches_url":"https://api.github.com/repos/ocsigen/tyxml/branches{/branch}","tags_url":"https://api.github.com/repos/ocsigen/tyxml/tags","blobs_url":"https://api.github.com/repos/ocsigen/tyxml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ocsigen/tyxml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ocsigen/tyxml/git/refs{/sha}","trees_url":"https://api.github.com/repos/ocsigen/tyxml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ocsigen/tyxml/statuses/{sha}","languages_url":"https://api.github.com/repos/ocsigen/tyxml/languages","stargazers_url":"https://api.github.com/repos/ocsigen/tyxml/stargazers","contributors_url":"https://api.github.com/repos/ocsigen/tyxml/contributors","subscribers_url":"https://api.github.com/repos/ocsigen/tyxml/subscribers","subscription_url":"https://api.github.com/repos/ocsigen/tyxml/subscription","commits_url":"https://api.github.com/repos/ocsigen/tyxml/commits{/sha}","git_commits_url":"https://api.github.com/repos/ocsigen/tyxml/git/commits{/sha}","comments_url":"https://api.github.com/repos/ocsigen/tyxml/comments{/number}","issue_comment_url":"https://api.github.com/repos/ocsigen/tyxml/issues/comments{/number}","contents_url":"https://api.github.com/repos/ocsigen/tyxml/contents/{+path}","compare_url":"https://api.github.com/repos/ocsigen/tyxml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ocsigen/tyxml/merges","archive_url":"https://api.github.com/repos/ocsigen/tyxml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ocsigen/tyxml/downloads","issues_url":"https://api.github.com/repos/ocsigen/tyxml/issues{/number}","pulls_url":"https://api.github.com/repos/ocsigen/tyxml/pulls{/number}","milestones_url":"https://api.github.com/repos/ocsigen/tyxml/milestones{/number}","notifications_url":"https://api.github.com/repos/ocsigen/tyxml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ocsigen/tyxml/labels{/name}","releases_url":"https://api.github.com/repos/ocsigen/tyxml/releases{/id}","created_at":"2013-07-29T22:07:48Z","updated_at":"2015-04-27T19:57:15Z","pushed_at":"2015-08-05T15:05:21Z","git_url":"git://github.com/ocsigen/tyxml.git","ssh_url":"git@github.com:ocsigen/tyxml.git","clone_url":"https://github.com/ocsigen/tyxml.git","svn_url":"https://github.com/ocsigen/tyxml","homepage":"http://ocsigen.org/tyxml/","size":20327,"stargazers_count":22,"watchers_count":22,"language":"OCaml","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":16,"mirror_url":null,"open_issues_count":10,"forks":16,"open_issues":10,"watchers":22,"default_branch":"master"}},"base":{"label":"ocsigen:master","ref":"master","sha":"33415810c68b49dceb0d8b344aaa907ea20cfc34","user":{"login":"ocsigen","id":4729424,"avatar_url":"https://avatars.githubusercontent.com/u/4729424?v=3","gravatar_id":"","url":"https://api.github.com/users/ocsigen","html_url":"https://github.com/ocsigen","followers_url":"https://api.github.com/users/ocsigen/followers","following_url":"https://api.github.com/users/ocsigen/following{/other_user}","gists_url":"https://api.github.com/users/ocsigen/gists{/gist_id}","starred_url":"https://api.github.com/users/ocsigen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocsigen/subscriptions","organizations_url":"https://api.github.com/users/ocsigen/orgs","repos_url":"https://api.github.com/users/ocsigen/repos","events_url":"https://api.github.com/users/ocsigen/events{/privacy}","received_events_url":"https://api.github.com/users/ocsigen/received_events","type":"Organization","site_admin":false},"repo":{"id":11750900,"name":"tyxml","full_name":"ocsigen/tyxml","owner":{"login":"ocsigen","id":4729424,"avatar_url":"https://avatars.githubusercontent.com/u/4729424?v=3","gravatar_id":"","url":"https://api.github.com/users/ocsigen","html_url":"https://github.com/ocsigen","followers_url":"https://api.github.com/users/ocsigen/followers","following_url":"https://api.github.com/users/ocsigen/following{/other_user}","gists_url":"https://api.github.com/users/ocsigen/gists{/gist_id}","starred_url":"https://api.github.com/users/ocsigen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocsigen/subscriptions","organizations_url":"https://api.github.com/users/ocsigen/orgs","repos_url":"https://api.github.com/users/ocsigen/repos","events_url":"https://api.github.com/users/ocsigen/events{/privacy}","received_events_url":"https://api.github.com/users/ocsigen/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ocsigen/tyxml","description":"OCaml library to build valid HTML5 and SVG trees.","fork":false,"url":"https://api.github.com/repos/ocsigen/tyxml","forks_url":"https://api.github.com/repos/ocsigen/tyxml/forks","keys_url":"https://api.github.com/repos/ocsigen/tyxml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ocsigen/tyxml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ocsigen/tyxml/teams","hooks_url":"https://api.github.com/repos/ocsigen/tyxml/hooks","issue_events_url":"https://api.github.com/repos/ocsigen/tyxml/issues/events{/number}","events_url":"https://api.github.com/repos/ocsigen/tyxml/events","assignees_url":"https://api.github.com/repos/ocsigen/tyxml/assignees{/user}","branches_url":"https://api.github.com/repos/ocsigen/tyxml/branches{/branch}","tags_url":"https://api.github.com/repos/ocsigen/tyxml/tags","blobs_url":"https://api.github.com/repos/ocsigen/tyxml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ocsigen/tyxml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ocsigen/tyxml/git/refs{/sha}","trees_url":"https://api.github.com/repos/ocsigen/tyxml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ocsigen/tyxml/statuses/{sha}","languages_url":"https://api.github.com/repos/ocsigen/tyxml/languages","stargazers_url":"https://api.github.com/repos/ocsigen/tyxml/stargazers","contributors_url":"https://api.github.com/repos/ocsigen/tyxml/contributors","subscribers_url":"https://api.github.com/repos/ocsigen/tyxml/subscribers","subscription_url":"https://api.github.com/repos/ocsigen/tyxml/subscription","commits_url":"https://api.github.com/repos/ocsigen/tyxml/commits{/sha}","git_commits_url":"https://api.github.com/repos/ocsigen/tyxml/git/commits{/sha}","comments_url":"https://api.github.com/repos/ocsigen/tyxml/comments{/number}","issue_comment_url":"https://api.github.com/repos/ocsigen/tyxml/issues/comments{/number}","contents_url":"https://api.github.com/repos/ocsigen/tyxml/contents/{+path}","compare_url":"https://api.github.com/repos/ocsigen/tyxml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ocsigen/tyxml/merges","archive_url":"https://api.github.com/repos/ocsigen/tyxml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ocsigen/tyxml/downloads","issues_url":"https://api.github.com/repos/ocsigen/tyxml/issues{/number}","pulls_url":"https://api.github.com/repos/ocsigen/tyxml/pulls{/number}","milestones_url":"https://api.github.com/repos/ocsigen/tyxml/milestones{/number}","notifications_url":"https://api.github.com/repos/ocsigen/tyxml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ocsigen/tyxml/labels{/name}","releases_url":"https://api.github.com/repos/ocsigen/tyxml/releases{/id}","created_at":"2013-07-29T22:07:48Z","updated_at":"2015-04-27T19:57:15Z","pushed_at":"2015-08-05T15:05:21Z","git_url":"git://github.com/ocsigen/tyxml.git","ssh_url":"git@github.com:ocsigen/tyxml.git","clone_url":"https://github.com/ocsigen/tyxml.git","svn_url":"https://github.com/ocsigen/tyxml","homepage":"http://ocsigen.org/tyxml/","size":20327,"stargazers_count":22,"watchers_count":22,"language":"OCaml","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":16,"mirror_url":null,"open_issues_count":10,"forks":16,"open_issues":10,"watchers":22,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ocsigen/tyxml/pulls/58"},"html":{"href":"https://github.com/ocsigen/tyxml/pull/58"},"issue":{"href":"https://api.github.com/repos/ocsigen/tyxml/issues/58"},"comments":{"href":"https://api.github.com/repos/ocsigen/tyxml/issues/58/comments"},"review_comments":{"href":"https://api.github.com/repos/ocsigen/tyxml/pulls/58/comments"},"review_comment":{"href":"https://api.github.com/repos/ocsigen/tyxml/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ocsigen/tyxml/pulls/58/commits"},"statuses":{"href":"https://api.github.com/repos/ocsigen/tyxml/statuses/2102767e827c7e9d6ce4f4598210fd1f6f4746cf"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"Drup","id":801124,"avatar_url":"https://avatars.githubusercontent.com/u/801124?v=3","gravatar_id":"","url":"https://api.github.com/users/Drup","html_url":"https://github.com/Drup","followers_url":"https://api.github.com/users/Drup/followers","following_url":"https://api.github.com/users/Drup/following{/other_user}","gists_url":"https://api.github.com/users/Drup/gists{/gist_id}","starred_url":"https://api.github.com/users/Drup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Drup/subscriptions","organizations_url":"https://api.github.com/users/Drup/orgs","repos_url":"https://api.github.com/users/Drup/repos","events_url":"https://api.github.com/users/Drup/events{/privacy}","received_events_url":"https://api.github.com/users/Drup/received_events","type":"User","site_admin":false},"comments":6,"review_comments":0,"commits":5,"additions":48,"deletions":100,"changed_files":11}}