{"action":"created","comment":{"url":"https://api.github.com/repos/modeset/teaspoon/pulls/comments/26000450","id":26000450,"diff_hunk":"@@ -39,13 +39,15 @@\n  * LiquidMetal\n  * Copyright (c) 2009, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org)\n  */\n-var LiquidMetal=function(){var l=0.0;var m=1.0;var n=0.8;var o=0.9;var p=0.85;return{score:function(a,b){if(b.length==0)return n;if(b.length>a.length)return l;var c=this.buildScoreArray(a,b);var d=0.0;for(var i=0;i<c.length;i++){d+=c[i]}return(d/c.length)},buildScoreArray:function(a,b){var d=new Array(a.length);var e=a.toLowerCase();var f=b.toLowerCase().split(\"\");var g=-1;var h=false;for(var i=0;i<f.length;i++){var c=f[i];var j=e.indexOf(c,g+1);if(j<0)return fillArray(d,l);if(j==0)h=true;if(isNewWord(a,j)){d[j-1]=1;fillArray(d,p,g+1,j-1)}else if(isUpperCase(a,j)){fillArray(d,p,g+1,j)}else{fillArray(d,l,g+1,j)}d[j]=m;g=j}var k=h?o:n;fillArray(d,k,g+1);return d}};function isUpperCase(a,b){var c=a.charAt(b);return(\"A\"<=c&&c<=\"Z\")}function isNewWord(a,b){var c=a.charAt(b-1);return(c==\" \"||c==\"\\t\")}function fillArray(a,b,c,d){c=Math.max(c||0,0);d=Math.min(d||a.length,a.length);for(var i=c;i<d;i++){a[i]=b}return a}}();\n-\n-/*!\n- * uSelector\n- * author: Fabio Miranda Costa | github: fabiomcosta | twitter: @fabiomiranda | license: MIT-style license\n- */\n-(function(h,i){var f,c,j,k,m={},e,l,q=/^\\s+|\\s+$/g,r=!!i.querySelectorAll,g=function(d,b,a){f=a||[];e=b||g.context;if(r)try{n(e.querySelectorAll(d));return f}catch(v){}l=e.ownerDocument||e;d=d.replace(q,\"\");for(c={};d=d.replace(/([#.:])?([^#.:]*)/,s););d=(b=c.id)&&c.tag||c.classes||c.pseudos||!b&&(c.classes||c.pseudos)?t:o;if(b){if(a=b=l.getElementById(b))if(!(a=l===e))a:{a=b;do if(a===e){a=true;break a}while(a=a.parentNode);a=false}a&&d([b])}else d(e.getElementsByTagName(c.tag||\"*\"));return f},u=function(d){if(c.tag){var b=d.nodeName.toUpperCase();if(c.tag==\"*\"){if(b<\"@\")return false}else if(b!=c.tag)return false}if(c.id&&d.getAttribute(\"id\")!=c.id)return false;if(j=c.classes){var a=\" \"+d.className+\" \";for(b=j.length;b--;)if(a.indexOf(\" \"+j[b]+\" \")<0)return false}if(k=c.pseudos)for(b=k.length;b--;){a=m[k[b]];if(!(a&&a.call(g,d)))return false}return true},s=function(d,b,a){if(b)if(b==\"#\")c.id=a;else if(b==\".\")if(c.classes)c.classes.push(a);else c.classes=[a];else{if(b==\":\")if(c.pseudos)c.pseudos.push(a);else c.pseudos=[a]}else c.tag=a.toUpperCase();return\"\"},p=Array.prototype.slice,n=function(d){f=p.call(d,0)},o=function(d){for(var b=0,a;a=d[b++];)f.push(a)};try{p.call(i.documentElement.childNodes,0)}catch(w){n=o}var t=function(d){for(var b=0,a;a=d[b++];)u(a)&&f.push(a)};g.pseudos=m;g.context=i;h.uSelector=g;h.$u||(h.$u=g)})(this,document);\n+var LiquidMetal=function(){var l=0.0;var m=1.0;var n=0.8;var o=0.9;var p=0.85;return{score:function(a,b){if(b.length==0)\n+return n;if(b.length>a.length)return l;var c=this.buildScoreArray(a,b);var d=0.0;for(var i=0;i<c.length;i++){d+=c[i]}\n+return(d/c.length)},buildScoreArray:function(a,b){var d=new Array(a.length);var e=a.toLowerCase();\n+var f=b.toLowerCase().split(\"\");var g=-1;var h=false;for(var i=0;i<f.length;i++){var c=f[i];var j=e.indexOf(c,g+1);\n+if(j<0)return fillArray(d,l);if(j==0)h=true;if(isNewWord(a,j)){d[j-1]=1;fillArray(d,p,g+1,j-1)}else if(isUpperCase(a,j))","path":"app/assets/javascripts/teaspoon-teaspoon.js","position":26,"original_position":26,"commit_id":"0b868b9e3ff9c17250691f988635ab29adca918b","original_commit_id":"0b868b9e3ff9c17250691f988635ab29adca918b","user":{"login":"houndci","id":6697940,"avatar_url":"https://avatars.githubusercontent.com/u/6697940?v=3","gravatar_id":"","url":"https://api.github.com/users/houndci","html_url":"https://github.com/houndci","followers_url":"https://api.github.com/users/houndci/followers","following_url":"https://api.github.com/users/houndci/following{/other_user}","gists_url":"https://api.github.com/users/houndci/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci/subscriptions","organizations_url":"https://api.github.com/users/houndci/orgs","repos_url":"https://api.github.com/users/houndci/repos","events_url":"https://api.github.com/users/houndci/events{/privacy}","received_events_url":"https://api.github.com/users/houndci/received_events","type":"User","site_admin":false},"body":"Line is too long.<br>Expected '{' and instead saw 'return'.<br>Use '===' to compare with '0'.<br>Expected '{' and instead saw 'h'.<br>Missing semicolon.","created_at":"2015-03-07T23:06:01Z","updated_at":"2015-03-07T23:06:01Z","html_url":"https://github.com/modeset/teaspoon/pull/321#discussion_r26000450","pull_request_url":"https://api.github.com/repos/modeset/teaspoon/pulls/321","_links":{"self":{"href":"https://api.github.com/repos/modeset/teaspoon/pulls/comments/26000450"},"html":{"href":"https://github.com/modeset/teaspoon/pull/321#discussion_r26000450"},"pull_request":{"href":"https://api.github.com/repos/modeset/teaspoon/pulls/321"}}},"pull_request":{"url":"https://api.github.com/repos/modeset/teaspoon/pulls/321","id":30235963,"html_url":"https://github.com/modeset/teaspoon/pull/321","diff_url":"https://github.com/modeset/teaspoon/pull/321.diff","patch_url":"https://github.com/modeset/teaspoon/pull/321.patch","issue_url":"https://api.github.com/repos/modeset/teaspoon/issues/321","number":321,"state":"open","locked":false,"title":"Framework API","user":{"login":"jejacks0n","id":13765,"avatar_url":"https://avatars.githubusercontent.com/u/13765?v=3","gravatar_id":"","url":"https://api.github.com/users/jejacks0n","html_url":"https://github.com/jejacks0n","followers_url":"https://api.github.com/users/jejacks0n/followers","following_url":"https://api.github.com/users/jejacks0n/following{/other_user}","gists_url":"https://api.github.com/users/jejacks0n/gists{/gist_id}","starred_url":"https://api.github.com/users/jejacks0n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jejacks0n/subscriptions","organizations_url":"https://api.github.com/users/jejacks0n/orgs","repos_url":"https://api.github.com/users/jejacks0n/repos","events_url":"https://api.github.com/users/jejacks0n/events{/privacy}","received_events_url":"https://api.github.com/users/jejacks0n/received_events","type":"User","site_admin":false},"body":"This extracts the various javascript frameworks into sub-gems, which will eventually be released on their own, with a dependency on teaspoon (aka teaspoon-core).\r\n\r\nThis creates better separation, reduces complexity of the core library, and enables future frameworks to be more easily integrated. There is a similar concept that will happen on the client end as well.\r\n\r\nIt adds a framework concept with a simple DSL, and a way to register a framework with teaspoon. Frameworks can adjust installation steps, specify which versions of the javascript framework are available, and provide their own support libraries.\r\n\r\n```ruby\r\nclass FooFramework < Teaspoon::Framework\r\n  framework_name :jasmine\r\n  register_version \"1.3.1\", \"jasmine/1.3.1\", \"teaspoon-jasmine\"\r\n  add_asset_path File.expand_path(\"../teaspoon/jasmine/assets\", __FILE__)\r\n\r\n  # installation\r\n  add_template_path File.expand_path(\"../teaspoon/jasmine/templates\", __FILE__)\r\n  install_to \"spec\" do\r\n    ext = options[:coffee] ? \".coffee\" : \".js\"\r\n    copy_file \"spec_helper#{ext}\", \"spec/javascripts/spec_helper#{ext}\"\r\n  end\r\nend\r\nTeaspoon.register_framework(FooFramework)\r\n```\r\n\r\n### Phase 2:\r\n\r\n- move coffeescript assets into the various sub-gems.\r\n- figure out how to provide a build mechanism for compiling those coffeescript files.\r\n- adjust integration tests to better test each of the various scenarios so we can ensure these gems continue to work with teaspoon (this is mostly in place already, but it needs to be filled out more, and should be made easier to add additional tests to)","created_at":"2015-03-01T03:15:53Z","updated_at":"2015-03-07T23:06:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1794050cecd31270120825dbc60a5c3a342dcc88","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/modeset/teaspoon/pulls/321/commits","review_comments_url":"https://api.github.com/repos/modeset/teaspoon/pulls/321/comments","review_comment_url":"https://api.github.com/repos/modeset/teaspoon/pulls/comments{/number}","comments_url":"https://api.github.com/repos/modeset/teaspoon/issues/321/comments","statuses_url":"https://api.github.com/repos/modeset/teaspoon/statuses/0b868b9e3ff9c17250691f988635ab29adca918b","head":{"label":"modeset:framework-api","ref":"framework-api","sha":"0b868b9e3ff9c17250691f988635ab29adca918b","user":{"login":"modeset","id":775768,"avatar_url":"https://avatars.githubusercontent.com/u/775768?v=3","gravatar_id":"","url":"https://api.github.com/users/modeset","html_url":"https://github.com/modeset","followers_url":"https://api.github.com/users/modeset/followers","following_url":"https://api.github.com/users/modeset/following{/other_user}","gists_url":"https://api.github.com/users/modeset/gists{/gist_id}","starred_url":"https://api.github.com/users/modeset/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/modeset/subscriptions","organizations_url":"https://api.github.com/users/modeset/orgs","repos_url":"https://api.github.com/users/modeset/repos","events_url":"https://api.github.com/users/modeset/events{/privacy}","received_events_url":"https://api.github.com/users/modeset/received_events","type":"Organization","site_admin":false},"repo":{"id":7048939,"name":"teaspoon","full_name":"modeset/teaspoon","owner":{"login":"modeset","id":775768,"avatar_url":"https://avatars.githubusercontent.com/u/775768?v=3","gravatar_id":"","url":"https://api.github.com/users/modeset","html_url":"https://github.com/modeset","followers_url":"https://api.github.com/users/modeset/followers","following_url":"https://api.github.com/users/modeset/following{/other_user}","gists_url":"https://api.github.com/users/modeset/gists{/gist_id}","starred_url":"https://api.github.com/users/modeset/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/modeset/subscriptions","organizations_url":"https://api.github.com/users/modeset/orgs","repos_url":"https://api.github.com/users/modeset/repos","events_url":"https://api.github.com/users/modeset/events{/privacy}","received_events_url":"https://api.github.com/users/modeset/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/modeset/teaspoon","description":"Teaspoon: Javascript test runner for Rails. Run tests in the browser or headless with PhantomJS, Selenium WebDriver or Capybara Webkit.","fork":false,"url":"https://api.github.com/repos/modeset/teaspoon","forks_url":"https://api.github.com/repos/modeset/teaspoon/forks","keys_url":"https://api.github.com/repos/modeset/teaspoon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/modeset/teaspoon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/modeset/teaspoon/teams","hooks_url":"https://api.github.com/repos/modeset/teaspoon/hooks","issue_events_url":"https://api.github.com/repos/modeset/teaspoon/issues/events{/number}","events_url":"https://api.github.com/repos/modeset/teaspoon/events","assignees_url":"https://api.github.com/repos/modeset/teaspoon/assignees{/user}","branches_url":"https://api.github.com/repos/modeset/teaspoon/branches{/branch}","tags_url":"https://api.github.com/repos/modeset/teaspoon/tags","blobs_url":"https://api.github.com/repos/modeset/teaspoon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/modeset/teaspoon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/modeset/teaspoon/git/refs{/sha}","trees_url":"https://api.github.com/repos/modeset/teaspoon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/modeset/teaspoon/statuses/{sha}","languages_url":"https://api.github.com/repos/modeset/teaspoon/languages","stargazers_url":"https://api.github.com/repos/modeset/teaspoon/stargazers","contributors_url":"https://api.github.com/repos/modeset/teaspoon/contributors","subscribers_url":"https://api.github.com/repos/modeset/teaspoon/subscribers","subscription_url":"https://api.github.com/repos/modeset/teaspoon/subscription","commits_url":"https://api.github.com/repos/modeset/teaspoon/commits{/sha}","git_commits_url":"https://api.github.com/repos/modeset/teaspoon/git/commits{/sha}","comments_url":"https://api.github.com/repos/modeset/teaspoon/comments{/number}","issue_comment_url":"https://api.github.com/repos/modeset/teaspoon/issues/comments{/number}","contents_url":"https://api.github.com/repos/modeset/teaspoon/contents/{+path}","compare_url":"https://api.github.com/repos/modeset/teaspoon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/modeset/teaspoon/merges","archive_url":"https://api.github.com/repos/modeset/teaspoon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/modeset/teaspoon/downloads","issues_url":"https://api.github.com/repos/modeset/teaspoon/issues{/number}","pulls_url":"https://api.github.com/repos/modeset/teaspoon/pulls{/number}","milestones_url":"https://api.github.com/repos/modeset/teaspoon/milestones{/number}","notifications_url":"https://api.github.com/repos/modeset/teaspoon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/modeset/teaspoon/labels{/name}","releases_url":"https://api.github.com/repos/modeset/teaspoon/releases{/id}","created_at":"2012-12-07T06:44:11Z","updated_at":"2015-03-07T22:52:40Z","pushed_at":"2015-03-07T23:04:13Z","git_url":"git://github.com/modeset/teaspoon.git","ssh_url":"git@github.com:modeset/teaspoon.git","clone_url":"https://github.com/modeset/teaspoon.git","svn_url":"https://github.com/modeset/teaspoon","homepage":"","size":5267,"stargazers_count":969,"watchers_count":969,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":136,"mirror_url":null,"open_issues_count":7,"forks":136,"open_issues":7,"watchers":969,"default_branch":"master"}},"base":{"label":"modeset:master","ref":"master","sha":"129670f5dc495cd80ef0398e5903a37dae1dabb2","user":{"login":"modeset","id":775768,"avatar_url":"https://avatars.githubusercontent.com/u/775768?v=3","gravatar_id":"","url":"https://api.github.com/users/modeset","html_url":"https://github.com/modeset","followers_url":"https://api.github.com/users/modeset/followers","following_url":"https://api.github.com/users/modeset/following{/other_user}","gists_url":"https://api.github.com/users/modeset/gists{/gist_id}","starred_url":"https://api.github.com/users/modeset/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/modeset/subscriptions","organizations_url":"https://api.github.com/users/modeset/orgs","repos_url":"https://api.github.com/users/modeset/repos","events_url":"https://api.github.com/users/modeset/events{/privacy}","received_events_url":"https://api.github.com/users/modeset/received_events","type":"Organization","site_admin":false},"repo":{"id":7048939,"name":"teaspoon","full_name":"modeset/teaspoon","owner":{"login":"modeset","id":775768,"avatar_url":"https://avatars.githubusercontent.com/u/775768?v=3","gravatar_id":"","url":"https://api.github.com/users/modeset","html_url":"https://github.com/modeset","followers_url":"https://api.github.com/users/modeset/followers","following_url":"https://api.github.com/users/modeset/following{/other_user}","gists_url":"https://api.github.com/users/modeset/gists{/gist_id}","starred_url":"https://api.github.com/users/modeset/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/modeset/subscriptions","organizations_url":"https://api.github.com/users/modeset/orgs","repos_url":"https://api.github.com/users/modeset/repos","events_url":"https://api.github.com/users/modeset/events{/privacy}","received_events_url":"https://api.github.com/users/modeset/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/modeset/teaspoon","description":"Teaspoon: Javascript test runner for Rails. Run tests in the browser or headless with PhantomJS, Selenium WebDriver or Capybara Webkit.","fork":false,"url":"https://api.github.com/repos/modeset/teaspoon","forks_url":"https://api.github.com/repos/modeset/teaspoon/forks","keys_url":"https://api.github.com/repos/modeset/teaspoon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/modeset/teaspoon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/modeset/teaspoon/teams","hooks_url":"https://api.github.com/repos/modeset/teaspoon/hooks","issue_events_url":"https://api.github.com/repos/modeset/teaspoon/issues/events{/number}","events_url":"https://api.github.com/repos/modeset/teaspoon/events","assignees_url":"https://api.github.com/repos/modeset/teaspoon/assignees{/user}","branches_url":"https://api.github.com/repos/modeset/teaspoon/branches{/branch}","tags_url":"https://api.github.com/repos/modeset/teaspoon/tags","blobs_url":"https://api.github.com/repos/modeset/teaspoon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/modeset/teaspoon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/modeset/teaspoon/git/refs{/sha}","trees_url":"https://api.github.com/repos/modeset/teaspoon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/modeset/teaspoon/statuses/{sha}","languages_url":"https://api.github.com/repos/modeset/teaspoon/languages","stargazers_url":"https://api.github.com/repos/modeset/teaspoon/stargazers","contributors_url":"https://api.github.com/repos/modeset/teaspoon/contributors","subscribers_url":"https://api.github.com/repos/modeset/teaspoon/subscribers","subscription_url":"https://api.github.com/repos/modeset/teaspoon/subscription","commits_url":"https://api.github.com/repos/modeset/teaspoon/commits{/sha}","git_commits_url":"https://api.github.com/repos/modeset/teaspoon/git/commits{/sha}","comments_url":"https://api.github.com/repos/modeset/teaspoon/comments{/number}","issue_comment_url":"https://api.github.com/repos/modeset/teaspoon/issues/comments{/number}","contents_url":"https://api.github.com/repos/modeset/teaspoon/contents/{+path}","compare_url":"https://api.github.com/repos/modeset/teaspoon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/modeset/teaspoon/merges","archive_url":"https://api.github.com/repos/modeset/teaspoon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/modeset/teaspoon/downloads","issues_url":"https://api.github.com/repos/modeset/teaspoon/issues{/number}","pulls_url":"https://api.github.com/repos/modeset/teaspoon/pulls{/number}","milestones_url":"https://api.github.com/repos/modeset/teaspoon/milestones{/number}","notifications_url":"https://api.github.com/repos/modeset/teaspoon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/modeset/teaspoon/labels{/name}","releases_url":"https://api.github.com/repos/modeset/teaspoon/releases{/id}","created_at":"2012-12-07T06:44:11Z","updated_at":"2015-03-07T22:52:40Z","pushed_at":"2015-03-07T23:04:13Z","git_url":"git://github.com/modeset/teaspoon.git","ssh_url":"git@github.com:modeset/teaspoon.git","clone_url":"https://github.com/modeset/teaspoon.git","svn_url":"https://github.com/modeset/teaspoon","homepage":"","size":5267,"stargazers_count":969,"watchers_count":969,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":136,"mirror_url":null,"open_issues_count":7,"forks":136,"open_issues":7,"watchers":969,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/modeset/teaspoon/pulls/321"},"html":{"href":"https://github.com/modeset/teaspoon/pull/321"},"issue":{"href":"https://api.github.com/repos/modeset/teaspoon/issues/321"},"comments":{"href":"https://api.github.com/repos/modeset/teaspoon/issues/321/comments"},"review_comments":{"href":"https://api.github.com/repos/modeset/teaspoon/pulls/321/comments"},"review_comment":{"href":"https://api.github.com/repos/modeset/teaspoon/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/modeset/teaspoon/pulls/321/commits"},"statuses":{"href":"https://api.github.com/repos/modeset/teaspoon/statuses/0b868b9e3ff9c17250691f988635ab29adca918b"}}}}