{"action":"created","issue":{"url":"https://api.github.com/repos/Test-More/Test2-Suite/issues/76","repository_url":"https://api.github.com/repos/Test-More/Test2-Suite","labels_url":"https://api.github.com/repos/Test-More/Test2-Suite/issues/76/labels{/name}","comments_url":"https://api.github.com/repos/Test-More/Test2-Suite/issues/76/comments","events_url":"https://api.github.com/repos/Test-More/Test2-Suite/issues/76/events","html_url":"https://github.com/Test-More/Test2-Suite/issues/76","id":176280497,"number":76,"title":"'st', 'stc', 'stcs', 'sta', and 'stp' dsl subs","user":{"login":"exodist","id":73914,"avatar_url":"https://avatars.githubusercontent.com/u/73914?v=3","gravatar_id":"","url":"https://api.github.com/users/exodist","html_url":"https://github.com/exodist","followers_url":"https://api.github.com/users/exodist/followers","following_url":"https://api.github.com/users/exodist/following{/other_user}","gists_url":"https://api.github.com/users/exodist/gists{/gist_id}","starred_url":"https://api.github.com/users/exodist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/exodist/subscriptions","organizations_url":"https://api.github.com/users/exodist/orgs","repos_url":"https://api.github.com/users/exodist/repos","events_url":"https://api.github.com/users/exodist/events{/privacy}","received_events_url":"https://api.github.com/users/exodist/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/Test-More/Test2-Suite/milestones/1","html_url":"https://github.com/Test-More/Test2-Suite/milestones/apocalypse%2073","labels_url":"https://api.github.com/repos/Test-More/Test2-Suite/milestones/1/labels","id":1997136,"number":1,"title":"apocalypse 73","description":"This milestone is to address the many many things that came from #73","creator":{"login":"exodist","id":73914,"avatar_url":"https://avatars.githubusercontent.com/u/73914?v=3","gravatar_id":"","url":"https://api.github.com/users/exodist","html_url":"https://github.com/exodist","followers_url":"https://api.github.com/users/exodist/followers","following_url":"https://api.github.com/users/exodist/following{/other_user}","gists_url":"https://api.github.com/users/exodist/gists{/gist_id}","starred_url":"https://api.github.com/users/exodist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/exodist/subscriptions","organizations_url":"https://api.github.com/users/exodist/orgs","repos_url":"https://api.github.com/users/exodist/repos","events_url":"https://api.github.com/users/exodist/events{/privacy}","received_events_url":"https://api.github.com/users/exodist/received_events","type":"User","site_admin":false},"open_issues":23,"closed_issues":0,"state":"open","created_at":"2016-09-12T01:59:18Z","updated_at":"2016-09-12T02:40:22Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2016-09-12T02:02:53Z","updated_at":"2016-09-13T20:10:03Z","closed_at":null,"body":"Instead of adding a ton of subs, with possible inconsistencies, we should define these 5 base dsl subs. They should be used consistently, and Compare::XXX types should know what to do with them (consistent!!!)\r\n\r\n```\r\nis(\r\n    $structure,\r\n    st Hash => sub {\r\n        my $st = shift;\r\n        # or\r\n        my $st = st_this;\r\n\r\n        stc key1 => 'val1';\r\n        stc key2 => 'val2';\r\n\r\n        stc nested => st Array => { sta empty => 1 };\r\n\r\n        stc non_empty_string => st String => { sta empty => 0 };\r\n\r\n        stc price => st Number => 12; \r\n\r\n        sta 'end'; # Or to be more explicit:\r\n        sta end => 1; # or stp etc => 1,\r\n    },  \r\n    \"name\"\r\n);\r\n```\r\n\r\n## st - define a structure\r\nst Type Val\r\nst Type \\&Builder\r\nto define a Test2::Compare::Type check\r\n\r\n## stc - structure component;\r\nstc key => 'val' # like 'field'\r\nstc idx => 'val' # for arrays (like item with an index)\r\nstc 'val' # for arrays (like item with no idx)\r\nstc $val # String/number/etc.\r\nto define components inside the structure\r\n\r\n## stcs - structure values\r\nstcs ...; # Specify several components at once\r\n\r\n## sta - structure attributes\r\nsta 'attr' - toggle attribute on\r\nsta attr => $val - set attribute to value\r\nThis is essentially calling a method on the check when used in a builder to toggle attributes\r\n\r\n## stp - structure property\r\nstp what => val\r\nThis would be like a 'prop' to check properties of the thing you got."},"comment":{"url":"https://api.github.com/repos/Test-More/Test2-Suite/issues/comments/246807842","html_url":"https://github.com/Test-More/Test2-Suite/issues/76#issuecomment-246807842","issue_url":"https://api.github.com/repos/Test-More/Test2-Suite/issues/76","id":246807842,"user":{"login":"exodist","id":73914,"avatar_url":"https://avatars.githubusercontent.com/u/73914?v=3","gravatar_id":"","url":"https://api.github.com/users/exodist","html_url":"https://github.com/exodist","followers_url":"https://api.github.com/users/exodist/followers","following_url":"https://api.github.com/users/exodist/following{/other_user}","gists_url":"https://api.github.com/users/exodist/gists{/gist_id}","starred_url":"https://api.github.com/users/exodist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/exodist/subscriptions","organizations_url":"https://api.github.com/users/exodist/orgs","repos_url":"https://api.github.com/users/exodist/repos","events_url":"https://api.github.com/users/exodist/events{/privacy}","received_events_url":"https://api.github.com/users/exodist/received_events","type":"User","site_admin":false},"created_at":"2016-09-13T20:10:03Z","updated_at":"2016-09-13T20:10:03Z","body":"Just to be clear, I don't want to remove the current dsl keywords, and I am not opposed to adding some more, but I want a generic form of the main types of actions so that we don't always NEED new keywords. Also it allows an alternative if a keyword defines common helpful syntax that you occasionally want to work around (IE requiring a block prototype the way array does)."}}
{"actor":{"display_login":"exodist"}}