{"action":"created","issue":{"url":"https://api.github.com/repos/mapbox/geojsonhint/issues/37","repository_url":"https://api.github.com/repos/mapbox/geojsonhint","labels_url":"https://api.github.com/repos/mapbox/geojsonhint/issues/37/labels{/name}","comments_url":"https://api.github.com/repos/mapbox/geojsonhint/issues/37/comments","events_url":"https://api.github.com/repos/mapbox/geojsonhint/issues/37/events","html_url":"https://github.com/mapbox/geojsonhint/pull/37","id":139964032,"number":37,"title":"[needs review] initial updates to support IETF spec","user":{"login":"perrygeo","id":1151287,"avatar_url":"https://avatars.githubusercontent.com/u/1151287?v=3","gravatar_id":"","url":"https://api.github.com/users/perrygeo","html_url":"https://github.com/perrygeo","followers_url":"https://api.github.com/users/perrygeo/followers","following_url":"https://api.github.com/users/perrygeo/following{/other_user}","gists_url":"https://api.github.com/users/perrygeo/gists{/gist_id}","starred_url":"https://api.github.com/users/perrygeo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/perrygeo/subscriptions","organizations_url":"https://api.github.com/users/perrygeo/orgs","repos_url":"https://api.github.com/users/perrygeo/repos","events_url":"https://api.github.com/users/perrygeo/events{/privacy}","received_events_url":"https://api.github.com/users/perrygeo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2016-03-10T17:52:57Z","updated_at":"2016-07-11T17:15:31Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mapbox/geojsonhint/pulls/37","html_url":"https://github.com/mapbox/geojsonhint/pull/37","diff_url":"https://github.com/mapbox/geojsonhint/pull/37.diff","patch_url":"https://github.com/mapbox/geojsonhint/pull/37.patch"},"body":"This PR updates fixtures and hint logic for some additional topics covered by the [draft IETF GeoJSON spec](https://github.com/geojson/draft-geojson). This includes:\r\n\r\n* [x] objects may have extensions\r\n* [x] position should not have > 3 elements\r\n* [x] No geometries with \"features\", \"geometry\", \"properties\".\r\n* [x] No features with \"features\", \"coordinates\".\r\n* [x] No collections with \"properties\", \"coordinates\".\r\n* [x] GeoJSON types should be case-sensitive\r\n* [x] Should not have single-geometry geometry collections\r\n* [x] Should not have empty or null geometry collections\r\n* [x] Should not have nested geometry collections\r\n* [x] Right-Hand Rule for (multi)polygons\r\n* [x] Warn if > x decimal places precision\r\n* [x] specifying any `crs` object is not recommended\r\n* [x] bbox should be an array of 4 or 6 numeric elements\r\n\r\nI'm feeling pretty good about the test cases but this is not quite ready yet. TODO\r\n\r\n* [x] coding style review for changes in object.js (the `for` loops reveal my rusty old school javascript)\r\n* [x] generally, are there better ways to structure the additional logic?\r\n* [x] review error messages for sentence case, quotes, language consistency (\"member\" vs \"property\") and reserved words (should, must, etc)\r\n* [ ] The IETF spec recommends provisions for geometries and bboxs that cross the anti-meridian yet this is difficult to test for since it is non-deterministic (e.g. any multi-position geometry or collection could *theoretically* cross the antimeridian). I'm skeptical of putting in heuristics to detect this case.\r\n* [x] I chose a threshold of ~9~ 6 decimal places max to warn about excessive precision. Any more detail and we're outside of the range of professional survey equipment.\r\n* [x] I'd like another set of eyes to make sure my interpretation of the spec is correct and that nothing has been omitted.\r\n* [x] There's enough logic in the right hand rule code to warrant pulling it into a separate module with dedicated tests.\r\n* [x] Need to benchmark and profile the code; adding the right hand rule and other constructs *may* slow it down on large datasets and I'd like to quantify that and identify any hotspots that we could optimize.\r\n* [x] Per chat with @tmcw : Since many of the new constructs are not strictly required/prohibited, we may want to introduce the concept of warning levels. A list of \"errors\" vs \"warnings\" might be sufficient?\r\n\r\n/cc @tmcw @sgillies \r\n"},"comment":{"url":"https://api.github.com/repos/mapbox/geojsonhint/issues/comments/231801019","html_url":"https://github.com/mapbox/geojsonhint/pull/37#issuecomment-231801019","issue_url":"https://api.github.com/repos/mapbox/geojsonhint/issues/37","id":231801019,"user":{"login":"tmcw","id":32314,"avatar_url":"https://avatars.githubusercontent.com/u/32314?v=3","gravatar_id":"","url":"https://api.github.com/users/tmcw","html_url":"https://github.com/tmcw","followers_url":"https://api.github.com/users/tmcw/followers","following_url":"https://api.github.com/users/tmcw/following{/other_user}","gists_url":"https://api.github.com/users/tmcw/gists{/gist_id}","starred_url":"https://api.github.com/users/tmcw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmcw/subscriptions","organizations_url":"https://api.github.com/users/tmcw/orgs","repos_url":"https://api.github.com/users/tmcw/repos","events_url":"https://api.github.com/users/tmcw/events{/privacy}","received_events_url":"https://api.github.com/users/tmcw/received_events","type":"User","site_admin":false},"created_at":"2016-07-11T17:15:31Z","updated_at":"2016-07-11T17:15:31Z","body":"👍 reviewed and covered another blind spot for geojsonhint. Going to merge this now - awesome work @perrygeo ! - and do the vfile refactor in another PR, and then go live!"}}
{"actor":{"display_login":"tmcw"}}