{"action":"created","issue":{"url":"https://api.github.com/repos/rianjs/ical.net/issues/54","repository_url":"https://api.github.com/repos/rianjs/ical.net","labels_url":"https://api.github.com/repos/rianjs/ical.net/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/rianjs/ical.net/issues/54/comments","events_url":"https://api.github.com/repos/rianjs/ical.net/issues/54/events","html_url":"https://github.com/rianjs/ical.net/pull/54","id":166018150,"number":54,"title":"Attendees validating","user":{"login":"mcshaz","id":2456704,"avatar_url":"https://avatars.githubusercontent.com/u/2456704?v=3","gravatar_id":"","url":"https://api.github.com/users/mcshaz","html_url":"https://github.com/mcshaz","followers_url":"https://api.github.com/users/mcshaz/followers","following_url":"https://api.github.com/users/mcshaz/following{/other_user}","gists_url":"https://api.github.com/users/mcshaz/gists{/gist_id}","starred_url":"https://api.github.com/users/mcshaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcshaz/subscriptions","organizations_url":"https://api.github.com/users/mcshaz/orgs","repos_url":"https://api.github.com/users/mcshaz/repos","events_url":"https://api.github.com/users/mcshaz/events{/privacy}","received_events_url":"https://api.github.com/users/mcshaz/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-07-18T04:46:49Z","updated_at":"2016-07-21T01:35:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rianjs/ical.net/pulls/54","html_url":"https://github.com/rianjs/ical.net/pull/54","diff_url":"https://github.com/rianjs/ical.net/pull/54.diff","patch_url":"https://github.com/rianjs/ical.net/pull/54.patch"},"body":"several commits\r\n- Lines longer than 75 characters now folding as per spec - [issue #49](https://github.com/rianjs/ical.net/pull/49#issuecomment-233226604)\r\n- Enums now converted ToUpperInvariant, thus enum values like OPAQUE will now validate - issue #36. \r\n- The same dict.TryGetValue pattern as a commit #53, but applied to the GroupedList class. Also removed checks for dict.ContainsKey prior to Remove application wide, as dict.Remove simply returns false if the key is not found. \r\nLooking through the GroupedList code, I share (at least a small fraction of) your pain - your ideas of removing event subscription and using inbuilt lists/dictionaries is absolutely spot on - I really hope you can find the fortitude to have another shot.  I couldn't help myself and added a few notes for myself before I realised just how tenuous the design of this class is - simultaneously maintaining a dictionary and list each pointing to the same objects seems a recipe for tangled code. Most of these comments are signed with BM (Brent McSharry). \r\n- UTC DateTime now meeting spec - issue #56\r\n\r\nthis leaves only 2 of my tests failing, and failing appropriately - removing an attendee and adding timezone information\r\n\r\nIf the v3 plan will be to move more properties to enums (which makes assigning properties valid values very easy given intellisense, and does not require knowing string constants are in some namespace somewhere), further changes will need to be made to the EnumSerializer class. The options to serialize hyphenated values like 'REQ-PARTICIPANT' would include (in my voted order of preference):\r\n1.  An AngularJS style PascalCase to hyphenated  e.g. PASCAL-CASE. in that way `evt.Role = Roles.ReqParticipant`. \r\n2. The EnumSerializer examines the enum Attributes collection for a [DescriptionAttribute](https://msdn.microsoft.com/en-us/library/system.componentmodel.descriptionattribute(v=vs.110).aspx), and uses this in preference if it is present . "},"comment":{"url":"https://api.github.com/repos/rianjs/ical.net/issues/comments/234133343","html_url":"https://github.com/rianjs/ical.net/pull/54#issuecomment-234133343","issue_url":"https://api.github.com/repos/rianjs/ical.net/issues/54","id":234133343,"user":{"login":"rianjs","id":7378790,"avatar_url":"https://avatars.githubusercontent.com/u/7378790?v=3","gravatar_id":"","url":"https://api.github.com/users/rianjs","html_url":"https://github.com/rianjs","followers_url":"https://api.github.com/users/rianjs/followers","following_url":"https://api.github.com/users/rianjs/following{/other_user}","gists_url":"https://api.github.com/users/rianjs/gists{/gist_id}","starred_url":"https://api.github.com/users/rianjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rianjs/subscriptions","organizations_url":"https://api.github.com/users/rianjs/orgs","repos_url":"https://api.github.com/users/rianjs/repos","events_url":"https://api.github.com/users/rianjs/events{/privacy}","received_events_url":"https://api.github.com/users/rianjs/received_events","type":"User","site_admin":false},"created_at":"2016-07-21T01:35:51Z","updated_at":"2016-07-21T01:35:51Z","body":"Go ahead and merge; I gave you permissions to the repo. Please continue to open pull requests, though; likely I'll leave some feedback and a :+1: \r\n\r\n(It's not reflective of your development skill; all code is reviewed at work before being merged, and I find it's a model that works well for maintaining a high code quality standard.)"}}
{"actor":{"display_login":"rianjs"}}