{"action":"created","issue":{"url":"https://api.github.com/repos/sass/libsass/issues/1249","labels_url":"https://api.github.com/repos/sass/libsass/issues/1249/labels{/name}","comments_url":"https://api.github.com/repos/sass/libsass/issues/1249/comments","events_url":"https://api.github.com/repos/sass/libsass/issues/1249/events","html_url":"https://github.com/sass/libsass/pull/1249","id":82638998,"number":1249,"title":"Refactoring parser for 3.3","user":{"login":"mgreter","id":282293,"avatar_url":"https://avatars.githubusercontent.com/u/282293?v=3","gravatar_id":"","url":"https://api.github.com/users/mgreter","html_url":"https://github.com/mgreter","followers_url":"https://api.github.com/users/mgreter/followers","following_url":"https://api.github.com/users/mgreter/following{/other_user}","gists_url":"https://api.github.com/users/mgreter/gists{/gist_id}","starred_url":"https://api.github.com/users/mgreter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgreter/subscriptions","organizations_url":"https://api.github.com/users/mgreter/orgs","repos_url":"https://api.github.com/users/mgreter/repos","events_url":"https://api.github.com/users/mgreter/events{/privacy}","received_events_url":"https://api.github.com/users/mgreter/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/sass/libsass/labels/Dev%20-%20PR%20Ready","name":"Dev - PR Ready","color":"00FF00"},{"url":"https://api.github.com/repos/sass/libsass/labels/Dev%20-%20WIP","name":"Dev - WIP","color":"663300"}],"state":"open","locked":false,"assignee":{"login":"mgreter","id":282293,"avatar_url":"https://avatars.githubusercontent.com/u/282293?v=3","gravatar_id":"","url":"https://api.github.com/users/mgreter","html_url":"https://github.com/mgreter","followers_url":"https://api.github.com/users/mgreter/followers","following_url":"https://api.github.com/users/mgreter/following{/other_user}","gists_url":"https://api.github.com/users/mgreter/gists{/gist_id}","starred_url":"https://api.github.com/users/mgreter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgreter/subscriptions","organizations_url":"https://api.github.com/users/mgreter/orgs","repos_url":"https://api.github.com/users/mgreter/repos","events_url":"https://api.github.com/users/mgreter/events{/privacy}","received_events_url":"https://api.github.com/users/mgreter/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/sass/libsass/milestones/4","html_url":"https://github.com/sass/libsass/milestones/3.3","labels_url":"https://api.github.com/repos/sass/libsass/milestones/4/labels","id":912458,"number":4,"title":"3.3","description":"- Better parser code\r\n- Selector functions\r\n- Parent Selector handling","creator":{"login":"mgreter","id":282293,"avatar_url":"https://avatars.githubusercontent.com/u/282293?v=3","gravatar_id":"","url":"https://api.github.com/users/mgreter","html_url":"https://github.com/mgreter","followers_url":"https://api.github.com/users/mgreter/followers","following_url":"https://api.github.com/users/mgreter/following{/other_user}","gists_url":"https://api.github.com/users/mgreter/gists{/gist_id}","starred_url":"https://api.github.com/users/mgreter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgreter/subscriptions","organizations_url":"https://api.github.com/users/mgreter/orgs","repos_url":"https://api.github.com/users/mgreter/repos","events_url":"https://api.github.com/users/mgreter/events{/privacy}","received_events_url":"https://api.github.com/users/mgreter/received_events","type":"User","site_admin":false},"open_issues":35,"closed_issues":11,"state":"open","created_at":"2014-12-22T17:37:08Z","updated_at":"2015-06-29T09:09:45Z","due_on":"2015-07-31T22:00:00Z","closed_at":null},"comments":21,"created_at":"2015-05-30T00:15:20Z","updated_at":"2015-06-30T20:17:44Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/sass/libsass/pulls/1249","html_url":"https://github.com/sass/libsass/pull/1249","diff_url":"https://github.com/sass/libsass/pull/1249.diff","patch_url":"https://github.com/sass/libsass/pull/1249.patch"},"body":"Pushing my latest refactoring work to public since it is currently at a working state that solves all open  `@at-root` issues, plus a few other open issues. PR is still too dirty too actually commit the work to master branch. It also introduced a minor whitespace (linefeed preserving) regressions (from issue 1208), since the fix we added for it doesn't seem to be 100% correct. I will try to tackle the linefeed preserving again at a later stage (the logic for this seems to be clear so far).\r\n\r\nThe following issues should pass with this WIP branch:\r\n\r\n- Error with `&` selector interpolation in `@at-root` blocks (#1043)\r\n- & + '' needs to be wrapped in parentheses (#1170)\r\n- @at-root and #{&} produces incorrect output (#1210)\r\n- Unexpected behaviour with @at-root (1236)\r\n- Regression in parsing @at-rules (#1253)\r\n- Dynamic division with interpolation not compatible with libsass (#948)\r\n- Two more tests for `is_superselector` functions (#963)\r\n- libsass-todo-test/38_expression_in_at_directive\r\n\r\nThis branch also includes quite a few performance optimizations.\r\nIt brought my sass-spec test suite runtime from 27s down to 7s!\r\n\r\n### TODO\r\n\r\n- [x] add attribution to boost for the hash_combine function (https://github.com/boostorg/functional/blob/1bf379ab601eb52c97908cc2cc141fd6026bd708/include/boost/functional/hash/hash.hpp#L209-L213)"},"comment":{"url":"https://api.github.com/repos/sass/libsass/issues/comments/117328692","html_url":"https://github.com/sass/libsass/pull/1249#issuecomment-117328692","issue_url":"https://api.github.com/repos/sass/libsass/issues/1249","id":117328692,"user":{"login":"mgreter","id":282293,"avatar_url":"https://avatars.githubusercontent.com/u/282293?v=3","gravatar_id":"","url":"https://api.github.com/users/mgreter","html_url":"https://github.com/mgreter","followers_url":"https://api.github.com/users/mgreter/followers","following_url":"https://api.github.com/users/mgreter/following{/other_user}","gists_url":"https://api.github.com/users/mgreter/gists{/gist_id}","starred_url":"https://api.github.com/users/mgreter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgreter/subscriptions","organizations_url":"https://api.github.com/users/mgreter/orgs","repos_url":"https://api.github.com/users/mgreter/repos","events_url":"https://api.github.com/users/mgreter/events{/privacy}","received_events_url":"https://api.github.com/users/mgreter/received_events","type":"User","site_admin":false},"created_at":"2015-06-30T20:17:44Z","updated_at":"2015-06-30T20:17:44Z","body":"I heavily rebased this PR to improve the history. Also moved a lot of the simpler fixes/commits to the top, so they should be possible to apply to master first. But I didn't check if each one actually compiles!\r\n\r\n@xzyfer if you think it's good enough, I'd say hit merge :rocket: "}}