{"action":"created","comment":{"url":"https://api.github.com/repos/flowbased/fbp/pulls/comments/67546444","id":67546444,"diff_hunk":"@@ -136,6 +226,28 @@ describe 'FBP parser', ->\n         chai.expect(graphData.inports).to.be.an 'undefined'\n         chai.expect(graphData.outports).to.be.an 'undefined'\n \n+  describe 'with FBP string containing a JSON IIP string', ->","path":"spec/fbp.coffee","position":110,"original_position":110,"commit_id":"01307c139d614144c2a9ed5ff3813a1b20f30757","original_commit_id":"01307c139d614144c2a9ed5ff3813a1b20f30757","user":{"login":"tlrobinson","id":18193,"avatar_url":"https://avatars.githubusercontent.com/u/18193?v=3","gravatar_id":"","url":"https://api.github.com/users/tlrobinson","html_url":"https://github.com/tlrobinson","followers_url":"https://api.github.com/users/tlrobinson/followers","following_url":"https://api.github.com/users/tlrobinson/following{/other_user}","gists_url":"https://api.github.com/users/tlrobinson/gists{/gist_id}","starred_url":"https://api.github.com/users/tlrobinson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tlrobinson/subscriptions","organizations_url":"https://api.github.com/users/tlrobinson/orgs","repos_url":"https://api.github.com/users/tlrobinson/repos","events_url":"https://api.github.com/users/tlrobinson/events{/privacy}","received_events_url":"https://api.github.com/users/tlrobinson/received_events","type":"User","site_admin":false},"body":"Sorry I forgot about this. It should be fine since i'm using peg.js' own JSON grammar, which I assume has been thoroughly tested, but I can do a followup PR to add a test if you want.","created_at":"2016-06-17T17:29:23Z","updated_at":"2016-06-17T17:29:23Z","html_url":"https://github.com/flowbased/fbp/pull/58#discussion_r67546444","pull_request_url":"https://api.github.com/repos/flowbased/fbp/pulls/58","_links":{"self":{"href":"https://api.github.com/repos/flowbased/fbp/pulls/comments/67546444"},"html":{"href":"https://github.com/flowbased/fbp/pull/58#discussion_r67546444"},"pull_request":{"href":"https://api.github.com/repos/flowbased/fbp/pulls/58"}}},"pull_request":{"url":"https://api.github.com/repos/flowbased/fbp/pulls/58","id":73331731,"html_url":"https://github.com/flowbased/fbp/pull/58","diff_url":"https://github.com/flowbased/fbp/pull/58.diff","patch_url":"https://github.com/flowbased/fbp/pull/58.patch","issue_url":"https://api.github.com/repos/flowbased/fbp/issues/58","number":58,"state":"closed","locked":false,"title":"Support anonymous nodes, default ports, JSON IIPs, etc","user":{"login":"tlrobinson","id":18193,"avatar_url":"https://avatars.githubusercontent.com/u/18193?v=3","gravatar_id":"","url":"https://api.github.com/users/tlrobinson","html_url":"https://github.com/tlrobinson","followers_url":"https://api.github.com/users/tlrobinson/followers","following_url":"https://api.github.com/users/tlrobinson/following{/other_user}","gists_url":"https://api.github.com/users/tlrobinson/gists{/gist_id}","starred_url":"https://api.github.com/users/tlrobinson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tlrobinson/subscriptions","organizations_url":"https://api.github.com/users/tlrobinson/orgs","repos_url":"https://api.github.com/users/tlrobinson/repos","events_url":"https://api.github.com/users/tlrobinson/events{/privacy}","received_events_url":"https://api.github.com/users/tlrobinson/received_events","type":"User","site_admin":false},"body":"This PR does a bunch of things. I can try to split them up into multiple PRs but I'd rather not because some of them are interdependent.\r\n\r\n* Allow sending other valid JSON types as IIPs #10\r\n* Allow anonymous nodes #11\r\n* Declare components before connecting them. #12\r\n* Parser seems to need blanks around the arrows. #21\r\n* default ports #32\r\n\r\nYou can now write incredibly succinct networks, e.x.\r\n\r\n```\r\n(stdin) -> (uppercase) -> (stdout)\r\n```\r\n\r\n**Allow sending other valid JSON types as IIPs**\r\n\r\nResolves #10\r\n\r\nYou can now do things like:\r\n\r\n```\r\n1234 -> IN Display(Output)\r\n\"foo\" -> IN Display(Output)\r\n[1,2,3,4] -> IN Display(Output)\r\n{ \"foo\": \"bar\" } -> IN Display(Output)\r\n{ \"foo\": { \"bar\": { \"baz\": 1234 }}} -> IN Display(Output)\r\n```\r\n\r\n`true`, `false`, and `null` don't work because they are valid node names.\r\n\r\nI'm just using the JSON grammar straight from peg.js' example directory.\r\n\r\n**Allow anonymous nodes**\r\n\r\nResolves #11\r\n\r\nNodes without a name are supported. Internally they are given a unique name based on the component name and index to help debugging.\r\n\r\n```\r\n'foo' -> IN (Output)\r\n```\r\n\r\nThe `Output` component is internally named `_output_1`.\r\n\r\n**Declare components before connecting them**\r\n\r\nResolves #12\r\n\r\nLets you declare a component without connecting it immediately:\r\n\r\n```\r\nDisplay(Output)\r\n'foo' -> Display\r\n```\r\n\r\n**Parser seems to need blanks around the arrows.**\r\n\r\nResolves #21\r\n\r\nYou can now do \r\n\r\n```\r\n(A)->(B)\r\n```\r\n\r\n**Default Ports**\r\n\r\nResolves #32\r\n\r\nThe port name can be left off in which case it will default to \"IN\" or \"OUT\". The following are equivalent:\r\n\r\n```\r\n(A) -> (B)\r\n(A) OUT -> IN (B)\r\n(A) OUT -> (B)\r\n(A) -> IN (B)\r\n```\r\n\r\nIn certain causes this is not allowed due to ambiguity, e.x. \r\n\r\n```(A) OUT -> X Y -> (C)```\r\n\r\nIs X the inport and Y the component, or is X the component and Y the outport?\r\n","created_at":"2016-06-10T07:28:45Z","updated_at":"2016-06-17T17:29:23Z","closed_at":"2016-06-17T13:44:40Z","merged_at":"2016-06-17T13:44:39Z","merge_commit_sha":"43bdd2f6ec02579faaa8f5f71b8cde6ede9961e9","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/flowbased/fbp/pulls/58/commits","review_comments_url":"https://api.github.com/repos/flowbased/fbp/pulls/58/comments","review_comment_url":"https://api.github.com/repos/flowbased/fbp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flowbased/fbp/issues/58/comments","statuses_url":"https://api.github.com/repos/flowbased/fbp/statuses/01307c139d614144c2a9ed5ff3813a1b20f30757","head":{"label":"tlrobinson:json_iip","ref":"json_iip","sha":"01307c139d614144c2a9ed5ff3813a1b20f30757","user":{"login":"tlrobinson","id":18193,"avatar_url":"https://avatars.githubusercontent.com/u/18193?v=3","gravatar_id":"","url":"https://api.github.com/users/tlrobinson","html_url":"https://github.com/tlrobinson","followers_url":"https://api.github.com/users/tlrobinson/followers","following_url":"https://api.github.com/users/tlrobinson/following{/other_user}","gists_url":"https://api.github.com/users/tlrobinson/gists{/gist_id}","starred_url":"https://api.github.com/users/tlrobinson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tlrobinson/subscriptions","organizations_url":"https://api.github.com/users/tlrobinson/orgs","repos_url":"https://api.github.com/users/tlrobinson/repos","events_url":"https://api.github.com/users/tlrobinson/events{/privacy}","received_events_url":"https://api.github.com/users/tlrobinson/received_events","type":"User","site_admin":false},"repo":{"id":60808320,"name":"fbp","full_name":"tlrobinson/fbp","owner":{"login":"tlrobinson","id":18193,"avatar_url":"https://avatars.githubusercontent.com/u/18193?v=3","gravatar_id":"","url":"https://api.github.com/users/tlrobinson","html_url":"https://github.com/tlrobinson","followers_url":"https://api.github.com/users/tlrobinson/followers","following_url":"https://api.github.com/users/tlrobinson/following{/other_user}","gists_url":"https://api.github.com/users/tlrobinson/gists{/gist_id}","starred_url":"https://api.github.com/users/tlrobinson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tlrobinson/subscriptions","organizations_url":"https://api.github.com/users/tlrobinson/orgs","repos_url":"https://api.github.com/users/tlrobinson/repos","events_url":"https://api.github.com/users/tlrobinson/events{/privacy}","received_events_url":"https://api.github.com/users/tlrobinson/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tlrobinson/fbp","description":"FBP flow definition language parser","fork":true,"url":"https://api.github.com/repos/tlrobinson/fbp","forks_url":"https://api.github.com/repos/tlrobinson/fbp/forks","keys_url":"https://api.github.com/repos/tlrobinson/fbp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tlrobinson/fbp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tlrobinson/fbp/teams","hooks_url":"https://api.github.com/repos/tlrobinson/fbp/hooks","issue_events_url":"https://api.github.com/repos/tlrobinson/fbp/issues/events{/number}","events_url":"https://api.github.com/repos/tlrobinson/fbp/events","assignees_url":"https://api.github.com/repos/tlrobinson/fbp/assignees{/user}","branches_url":"https://api.github.com/repos/tlrobinson/fbp/branches{/branch}","tags_url":"https://api.github.com/repos/tlrobinson/fbp/tags","blobs_url":"https://api.github.com/repos/tlrobinson/fbp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tlrobinson/fbp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tlrobinson/fbp/git/refs{/sha}","trees_url":"https://api.github.com/repos/tlrobinson/fbp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tlrobinson/fbp/statuses/{sha}","languages_url":"https://api.github.com/repos/tlrobinson/fbp/languages","stargazers_url":"https://api.github.com/repos/tlrobinson/fbp/stargazers","contributors_url":"https://api.github.com/repos/tlrobinson/fbp/contributors","subscribers_url":"https://api.github.com/repos/tlrobinson/fbp/subscribers","subscription_url":"https://api.github.com/repos/tlrobinson/fbp/subscription","commits_url":"https://api.github.com/repos/tlrobinson/fbp/commits{/sha}","git_commits_url":"https://api.github.com/repos/tlrobinson/fbp/git/commits{/sha}","comments_url":"https://api.github.com/repos/tlrobinson/fbp/comments{/number}","issue_comment_url":"https://api.github.com/repos/tlrobinson/fbp/issues/comments{/number}","contents_url":"https://api.github.com/repos/tlrobinson/fbp/contents/{+path}","compare_url":"https://api.github.com/repos/tlrobinson/fbp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tlrobinson/fbp/merges","archive_url":"https://api.github.com/repos/tlrobinson/fbp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tlrobinson/fbp/downloads","issues_url":"https://api.github.com/repos/tlrobinson/fbp/issues{/number}","pulls_url":"https://api.github.com/repos/tlrobinson/fbp/pulls{/number}","milestones_url":"https://api.github.com/repos/tlrobinson/fbp/milestones{/number}","notifications_url":"https://api.github.com/repos/tlrobinson/fbp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tlrobinson/fbp/labels{/name}","releases_url":"https://api.github.com/repos/tlrobinson/fbp/releases{/id}","deployments_url":"https://api.github.com/repos/tlrobinson/fbp/deployments","created_at":"2016-06-09T21:28:57Z","updated_at":"2016-06-09T21:28:58Z","pushed_at":"2016-06-13T07:48:24Z","git_url":"git://github.com/tlrobinson/fbp.git","ssh_url":"git@github.com:tlrobinson/fbp.git","clone_url":"https://github.com/tlrobinson/fbp.git","svn_url":"https://github.com/tlrobinson/fbp","homepage":null,"size":165,"stargazers_count":0,"watchers_count":0,"language":"CoffeeScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flowbased:master","ref":"master","sha":"7db082f77396ac2fec8443fe90384b038051d958","user":{"login":"flowbased","id":7716763,"avatar_url":"https://avatars.githubusercontent.com/u/7716763?v=3","gravatar_id":"","url":"https://api.github.com/users/flowbased","html_url":"https://github.com/flowbased","followers_url":"https://api.github.com/users/flowbased/followers","following_url":"https://api.github.com/users/flowbased/following{/other_user}","gists_url":"https://api.github.com/users/flowbased/gists{/gist_id}","starred_url":"https://api.github.com/users/flowbased/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flowbased/subscriptions","organizations_url":"https://api.github.com/users/flowbased/orgs","repos_url":"https://api.github.com/users/flowbased/repos","events_url":"https://api.github.com/users/flowbased/events{/privacy}","received_events_url":"https://api.github.com/users/flowbased/received_events","type":"Organization","site_admin":false},"repo":{"id":10370136,"name":"fbp","full_name":"flowbased/fbp","owner":{"login":"flowbased","id":7716763,"avatar_url":"https://avatars.githubusercontent.com/u/7716763?v=3","gravatar_id":"","url":"https://api.github.com/users/flowbased","html_url":"https://github.com/flowbased","followers_url":"https://api.github.com/users/flowbased/followers","following_url":"https://api.github.com/users/flowbased/following{/other_user}","gists_url":"https://api.github.com/users/flowbased/gists{/gist_id}","starred_url":"https://api.github.com/users/flowbased/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flowbased/subscriptions","organizations_url":"https://api.github.com/users/flowbased/orgs","repos_url":"https://api.github.com/users/flowbased/repos","events_url":"https://api.github.com/users/flowbased/events{/privacy}","received_events_url":"https://api.github.com/users/flowbased/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/flowbased/fbp","description":"FBP flow definition language parser","fork":false,"url":"https://api.github.com/repos/flowbased/fbp","forks_url":"https://api.github.com/repos/flowbased/fbp/forks","keys_url":"https://api.github.com/repos/flowbased/fbp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flowbased/fbp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flowbased/fbp/teams","hooks_url":"https://api.github.com/repos/flowbased/fbp/hooks","issue_events_url":"https://api.github.com/repos/flowbased/fbp/issues/events{/number}","events_url":"https://api.github.com/repos/flowbased/fbp/events","assignees_url":"https://api.github.com/repos/flowbased/fbp/assignees{/user}","branches_url":"https://api.github.com/repos/flowbased/fbp/branches{/branch}","tags_url":"https://api.github.com/repos/flowbased/fbp/tags","blobs_url":"https://api.github.com/repos/flowbased/fbp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flowbased/fbp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flowbased/fbp/git/refs{/sha}","trees_url":"https://api.github.com/repos/flowbased/fbp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flowbased/fbp/statuses/{sha}","languages_url":"https://api.github.com/repos/flowbased/fbp/languages","stargazers_url":"https://api.github.com/repos/flowbased/fbp/stargazers","contributors_url":"https://api.github.com/repos/flowbased/fbp/contributors","subscribers_url":"https://api.github.com/repos/flowbased/fbp/subscribers","subscription_url":"https://api.github.com/repos/flowbased/fbp/subscription","commits_url":"https://api.github.com/repos/flowbased/fbp/commits{/sha}","git_commits_url":"https://api.github.com/repos/flowbased/fbp/git/commits{/sha}","comments_url":"https://api.github.com/repos/flowbased/fbp/comments{/number}","issue_comment_url":"https://api.github.com/repos/flowbased/fbp/issues/comments{/number}","contents_url":"https://api.github.com/repos/flowbased/fbp/contents/{+path}","compare_url":"https://api.github.com/repos/flowbased/fbp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flowbased/fbp/merges","archive_url":"https://api.github.com/repos/flowbased/fbp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flowbased/fbp/downloads","issues_url":"https://api.github.com/repos/flowbased/fbp/issues{/number}","pulls_url":"https://api.github.com/repos/flowbased/fbp/pulls{/number}","milestones_url":"https://api.github.com/repos/flowbased/fbp/milestones{/number}","notifications_url":"https://api.github.com/repos/flowbased/fbp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flowbased/fbp/labels{/name}","releases_url":"https://api.github.com/repos/flowbased/fbp/releases{/id}","deployments_url":"https://api.github.com/repos/flowbased/fbp/deployments","created_at":"2013-05-29T21:47:56Z","updated_at":"2016-05-12T17:21:10Z","pushed_at":"2016-06-17T14:19:13Z","git_url":"git://github.com/flowbased/fbp.git","ssh_url":"git@github.com:flowbased/fbp.git","clone_url":"https://github.com/flowbased/fbp.git","svn_url":"https://github.com/flowbased/fbp","homepage":null,"size":181,"stargazers_count":36,"watchers_count":36,"language":"CoffeeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":15,"mirror_url":null,"open_issues_count":12,"forks":15,"open_issues":12,"watchers":36,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flowbased/fbp/pulls/58"},"html":{"href":"https://github.com/flowbased/fbp/pull/58"},"issue":{"href":"https://api.github.com/repos/flowbased/fbp/issues/58"},"comments":{"href":"https://api.github.com/repos/flowbased/fbp/issues/58/comments"},"review_comments":{"href":"https://api.github.com/repos/flowbased/fbp/pulls/58/comments"},"review_comment":{"href":"https://api.github.com/repos/flowbased/fbp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flowbased/fbp/pulls/58/commits"},"statuses":{"href":"https://api.github.com/repos/flowbased/fbp/statuses/01307c139d614144c2a9ed5ff3813a1b20f30757"}}}}
{"actor":{"display_login":"tlrobinson"}}