{"action":"created","comment":{"url":"https://api.github.com/repos/lampepfl/dotty/pulls/comments/75586944","id":75586944,"diff_hunk":"@@ -73,7 +73,9 @@ object DottyBuild extends Build {\n       javaSource in Test := baseDirectory.value / \"test\",\n       resourceDirectory in Compile := baseDirectory.value / \"resources\",\n       unmanagedSourceDirectories in Compile := Seq((scalaSource in Compile).value),\n+      unmanagedSourceDirectories in Compile += baseDirectory.value / \"dottydoc\" / \"src\",","path":"project/Build.scala","position":4,"original_position":4,"commit_id":"556c48ea3015fe99704ad1b04350c7ae85be58c7","original_commit_id":"556c48ea3015fe99704ad1b04350c7ae85be58c7","user":{"login":"smarter","id":63430,"avatar_url":"https://avatars.githubusercontent.com/u/63430?v=3","gravatar_id":"","url":"https://api.github.com/users/smarter","html_url":"https://github.com/smarter","followers_url":"https://api.github.com/users/smarter/followers","following_url":"https://api.github.com/users/smarter/following{/other_user}","gists_url":"https://api.github.com/users/smarter/gists{/gist_id}","starred_url":"https://api.github.com/users/smarter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarter/subscriptions","organizations_url":"https://api.github.com/users/smarter/orgs","repos_url":"https://api.github.com/users/smarter/repos","events_url":"https://api.github.com/users/smarter/events{/privacy}","received_events_url":"https://api.github.com/users/smarter/received_events","type":"User","site_admin":false},"body":"Have you tried making `dottydoc` a separate sbt project like `dotty-interfaces` and `dotty-bridge` ?","created_at":"2016-08-21T00:23:39Z","updated_at":"2016-08-21T00:23:39Z","html_url":"https://github.com/lampepfl/dotty/pull/1453#discussion_r75586944","pull_request_url":"https://api.github.com/repos/lampepfl/dotty/pulls/1453","_links":{"self":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/comments/75586944"},"html":{"href":"https://github.com/lampepfl/dotty/pull/1453#discussion_r75586944"},"pull_request":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1453"}}},"pull_request":{"url":"https://api.github.com/repos/lampepfl/dotty/pulls/1453","id":81345803,"html_url":"https://github.com/lampepfl/dotty/pull/1453","diff_url":"https://github.com/lampepfl/dotty/pull/1453.diff","patch_url":"https://github.com/lampepfl/dotty/pull/1453.patch","issue_url":"https://api.github.com/repos/lampepfl/dotty/issues/1453","number":1453,"state":"open","locked":false,"title":"Add dottydoc","user":{"login":"felixmulder","id":1530049,"avatar_url":"https://avatars.githubusercontent.com/u/1530049?v=3","gravatar_id":"","url":"https://api.github.com/users/felixmulder","html_url":"https://github.com/felixmulder","followers_url":"https://api.github.com/users/felixmulder/followers","following_url":"https://api.github.com/users/felixmulder/following{/other_user}","gists_url":"https://api.github.com/users/felixmulder/gists{/gist_id}","starred_url":"https://api.github.com/users/felixmulder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felixmulder/subscriptions","organizations_url":"https://api.github.com/users/felixmulder/orgs","repos_url":"https://api.github.com/users/felixmulder/repos","events_url":"https://api.github.com/users/felixmulder/events{/privacy}","received_events_url":"https://api.github.com/users/felixmulder/received_events","type":"User","site_admin":false},"body":"Dottydoc - GSoC\r\n============\r\n\r\nIn all ways and means dottydoc is a compiler. It uses the dotty frontend phase to do parsing and typing - after this the documentation phases take over. Similarly to dotty, dottydoc uses fused phases as a way of transforming the documentation AST.\r\n\r\nThe new scaladoc alias dottydoc is comprised of two parts: a documentation hook and a front end hook.\r\n\r\nThere are still a few missing features to dottydoc - and this PR was opened now due to the GSoC project coming to an end as well as the limitations of the CI (100 commits - will it pass the tests!?).\r\n\r\nThe missing parts are currently AFAIK:\r\n- Grouping\r\n- Usecase\r\n\r\nScaladoc has a long history, and as such features may have been overlooked, the missing parts as listed will be implemented in the coming weeks together with any missing features reported and vital.\r\n\r\nArchitecture\r\n=========\r\n\r\n```\r\n                         source files\r\n                               |\r\n                               v\r\n                       +--------------+\r\n (template) -------->  |              |\r\n                       |   dottydoc   | -----> JSON/html\r\n[resources] -------->  |              |\r\n                       +--------------+\r\n\r\n(...) == optional file\r\n[...] == optional list of files\r\n```\r\n\r\nBecause dotty needs to bootstrap, we cannot have the client UI be part of the repository if we want to use external scala dependencies. This obstacle became an incentive to do something better - and the idea of third party templates was born. Currently dottydoc supports a specific frontend format which enables users to replace the frontend if they so choose (maybe they don't like the defaults, maybe they can do better - diversity is good).\r\n\r\nTo build your own frontend this is what you'll need:\r\n\r\n```\r\n.\r\n├── template.html\r\n├── resource1.js\r\n└── resource2.css\r\n```\r\n\r\nThe templating engine supported is currently [mustache](http://mustache.github.io/)\r\n\r\nThe template will be given an instance of `Entity` for each top-level object (traits, objects, classes, packages). Entity has the following signature:\r\n\r\n```scala\r\ntrait Entity {\r\n  def name: String\r\n  /** Path from root, i.e. `scala.Option$` */\r\n  def path: List[String]\r\n  def comment: Option[Comment]\r\n  def kind: String\r\n  def parent: Entity\r\n}\r\n```\r\n\r\nThe template is then used to create a collection of static HTML pages à la the old scaladoc. Each template is also given the path to `assets` (directory) and `index` (javascript file). As such it is quite easy to build your own template. Example:\r\n\r\n```mustache\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n    <head>\r\n        <title>Dottydoc - {{name}}</title>\r\n        <script type=\"text/javascript\" src=\"{{index}}\"></script>\r\n        <script type=\"text/javascript\" src=\"{{assets}}/dottydoc.js\"></script>\r\n        <link rel=\"stylesheet\" href=\"{{assets}}/index.css\">\r\n    </head>\r\n    <body>\r\n        <div id=\"main-container\">\r\n            <h1>{{name}}</h1>\r\n        </div>\r\n        <script>\r\n            (function() {\r\n                Index.currentEntity = {{&currentEntity}};\r\n\r\n                var addMember = function(entry) {\r\n                    document.getElementById(\"main-container\").innerHTML += entry.name + \"</br>\";\r\n                };\r\n            \r\n                if (Index.currentEntity.members !== undefined)\r\n                    Index.currentEntity.members.forEach(addMember);\r\n            })();\r\n        </script>\r\n    </body>\r\n</html>\r\n```\r\n\r\nThe `Index` object will look like this after the template has been written:\r\n\r\n```\r\n{\r\n    \"packages\": {\r\n        \"scala\": { ... },\r\n        \"scala.collection\": { ... },\r\n        ...\r\n    }\r\n    \"currentEntity\": {\r\n        \"name\": ...\r\n    }\r\n}\r\n```\r\n\r\nThere is of course already a default front end in place `dottydoc-client`. This one will be used by default by sbt. This project is available here: https://github.com/lampepfl/dottydoc-client\r\n\r\nTo view the documentation rendered by the 100th commit in this PR: https://dl.dropboxusercontent.com/u/358427/gsoc-dottydoc/docs/scala/Option.html\r\n\r\nThere are parts in dottydoc that have been developed for the previous scaladoc and adapted to dottydoc most prominently by @odersky, @VladUreche @manojo - thank you for your hard work.\r\n\r\nThere is still a ton to do and I will make a small list here of things I plan to work on, and that I'd be happy to receive help on.\r\n\r\nThe great aftermath of the dottydoc PR\r\n=============================\r\n* `@usecase`\r\n* `@group`\r\n* Better search that displays members (client)\r\n* Rename docs -> API and add support for documentation as reference\r\n* Prototype markdown in doc-comments\r\n* Properly handle synthetically added methods (argument names are mangled)","created_at":"2016-08-15T17:35:45Z","updated_at":"2016-08-21T00:23:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"307fa3a26e2b0bb4ba472aab3782d2468160664c","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/lampepfl/dotty/pulls/1453/commits","review_comments_url":"https://api.github.com/repos/lampepfl/dotty/pulls/1453/comments","review_comment_url":"https://api.github.com/repos/lampepfl/dotty/pulls/comments{/number}","comments_url":"https://api.github.com/repos/lampepfl/dotty/issues/1453/comments","statuses_url":"https://api.github.com/repos/lampepfl/dotty/statuses/556c48ea3015fe99704ad1b04350c7ae85be58c7","head":{"label":"felixmulder:topic/dottydoc","ref":"topic/dottydoc","sha":"556c48ea3015fe99704ad1b04350c7ae85be58c7","user":{"login":"felixmulder","id":1530049,"avatar_url":"https://avatars.githubusercontent.com/u/1530049?v=3","gravatar_id":"","url":"https://api.github.com/users/felixmulder","html_url":"https://github.com/felixmulder","followers_url":"https://api.github.com/users/felixmulder/followers","following_url":"https://api.github.com/users/felixmulder/following{/other_user}","gists_url":"https://api.github.com/users/felixmulder/gists{/gist_id}","starred_url":"https://api.github.com/users/felixmulder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felixmulder/subscriptions","organizations_url":"https://api.github.com/users/felixmulder/orgs","repos_url":"https://api.github.com/users/felixmulder/repos","events_url":"https://api.github.com/users/felixmulder/events{/privacy}","received_events_url":"https://api.github.com/users/felixmulder/received_events","type":"User","site_admin":false},"repo":{"id":52869692,"name":"dotty","full_name":"felixmulder/dotty","owner":{"login":"felixmulder","id":1530049,"avatar_url":"https://avatars.githubusercontent.com/u/1530049?v=3","gravatar_id":"","url":"https://api.github.com/users/felixmulder","html_url":"https://github.com/felixmulder","followers_url":"https://api.github.com/users/felixmulder/followers","following_url":"https://api.github.com/users/felixmulder/following{/other_user}","gists_url":"https://api.github.com/users/felixmulder/gists{/gist_id}","starred_url":"https://api.github.com/users/felixmulder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felixmulder/subscriptions","organizations_url":"https://api.github.com/users/felixmulder/orgs","repos_url":"https://api.github.com/users/felixmulder/repos","events_url":"https://api.github.com/users/felixmulder/events{/privacy}","received_events_url":"https://api.github.com/users/felixmulder/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/felixmulder/dotty","description":"Research platform for new language concepts and compiler technologies for Scala.","fork":true,"url":"https://api.github.com/repos/felixmulder/dotty","forks_url":"https://api.github.com/repos/felixmulder/dotty/forks","keys_url":"https://api.github.com/repos/felixmulder/dotty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/felixmulder/dotty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/felixmulder/dotty/teams","hooks_url":"https://api.github.com/repos/felixmulder/dotty/hooks","issue_events_url":"https://api.github.com/repos/felixmulder/dotty/issues/events{/number}","events_url":"https://api.github.com/repos/felixmulder/dotty/events","assignees_url":"https://api.github.com/repos/felixmulder/dotty/assignees{/user}","branches_url":"https://api.github.com/repos/felixmulder/dotty/branches{/branch}","tags_url":"https://api.github.com/repos/felixmulder/dotty/tags","blobs_url":"https://api.github.com/repos/felixmulder/dotty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/felixmulder/dotty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/felixmulder/dotty/git/refs{/sha}","trees_url":"https://api.github.com/repos/felixmulder/dotty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/felixmulder/dotty/statuses/{sha}","languages_url":"https://api.github.com/repos/felixmulder/dotty/languages","stargazers_url":"https://api.github.com/repos/felixmulder/dotty/stargazers","contributors_url":"https://api.github.com/repos/felixmulder/dotty/contributors","subscribers_url":"https://api.github.com/repos/felixmulder/dotty/subscribers","subscription_url":"https://api.github.com/repos/felixmulder/dotty/subscription","commits_url":"https://api.github.com/repos/felixmulder/dotty/commits{/sha}","git_commits_url":"https://api.github.com/repos/felixmulder/dotty/git/commits{/sha}","comments_url":"https://api.github.com/repos/felixmulder/dotty/comments{/number}","issue_comment_url":"https://api.github.com/repos/felixmulder/dotty/issues/comments{/number}","contents_url":"https://api.github.com/repos/felixmulder/dotty/contents/{+path}","compare_url":"https://api.github.com/repos/felixmulder/dotty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/felixmulder/dotty/merges","archive_url":"https://api.github.com/repos/felixmulder/dotty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/felixmulder/dotty/downloads","issues_url":"https://api.github.com/repos/felixmulder/dotty/issues{/number}","pulls_url":"https://api.github.com/repos/felixmulder/dotty/pulls{/number}","milestones_url":"https://api.github.com/repos/felixmulder/dotty/milestones{/number}","notifications_url":"https://api.github.com/repos/felixmulder/dotty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/felixmulder/dotty/labels{/name}","releases_url":"https://api.github.com/repos/felixmulder/dotty/releases{/id}","deployments_url":"https://api.github.com/repos/felixmulder/dotty/deployments","created_at":"2016-03-01T10:47:55Z","updated_at":"2016-05-03T10:53:51Z","pushed_at":"2016-08-19T13:37:48Z","git_url":"git://github.com/felixmulder/dotty.git","ssh_url":"git@github.com:felixmulder/dotty.git","clone_url":"https://github.com/felixmulder/dotty.git","svn_url":"https://github.com/felixmulder/dotty","homepage":"","size":19723,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":3,"forks":0,"open_issues":3,"watchers":0,"default_branch":"master"}},"base":{"label":"lampepfl:master","ref":"master","sha":"5a5f9d7ed37ca6449ef61ee5e0f6fbf9731df795","user":{"login":"lampepfl","id":2684793,"avatar_url":"https://avatars.githubusercontent.com/u/2684793?v=3","gravatar_id":"","url":"https://api.github.com/users/lampepfl","html_url":"https://github.com/lampepfl","followers_url":"https://api.github.com/users/lampepfl/followers","following_url":"https://api.github.com/users/lampepfl/following{/other_user}","gists_url":"https://api.github.com/users/lampepfl/gists{/gist_id}","starred_url":"https://api.github.com/users/lampepfl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lampepfl/subscriptions","organizations_url":"https://api.github.com/users/lampepfl/orgs","repos_url":"https://api.github.com/users/lampepfl/repos","events_url":"https://api.github.com/users/lampepfl/events{/privacy}","received_events_url":"https://api.github.com/users/lampepfl/received_events","type":"Organization","site_admin":false},"repo":{"id":7035651,"name":"dotty","full_name":"lampepfl/dotty","owner":{"login":"lampepfl","id":2684793,"avatar_url":"https://avatars.githubusercontent.com/u/2684793?v=3","gravatar_id":"","url":"https://api.github.com/users/lampepfl","html_url":"https://github.com/lampepfl","followers_url":"https://api.github.com/users/lampepfl/followers","following_url":"https://api.github.com/users/lampepfl/following{/other_user}","gists_url":"https://api.github.com/users/lampepfl/gists{/gist_id}","starred_url":"https://api.github.com/users/lampepfl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lampepfl/subscriptions","organizations_url":"https://api.github.com/users/lampepfl/orgs","repos_url":"https://api.github.com/users/lampepfl/repos","events_url":"https://api.github.com/users/lampepfl/events{/privacy}","received_events_url":"https://api.github.com/users/lampepfl/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/lampepfl/dotty","description":"Research platform for new language concepts and compiler technologies for Scala.","fork":false,"url":"https://api.github.com/repos/lampepfl/dotty","forks_url":"https://api.github.com/repos/lampepfl/dotty/forks","keys_url":"https://api.github.com/repos/lampepfl/dotty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lampepfl/dotty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lampepfl/dotty/teams","hooks_url":"https://api.github.com/repos/lampepfl/dotty/hooks","issue_events_url":"https://api.github.com/repos/lampepfl/dotty/issues/events{/number}","events_url":"https://api.github.com/repos/lampepfl/dotty/events","assignees_url":"https://api.github.com/repos/lampepfl/dotty/assignees{/user}","branches_url":"https://api.github.com/repos/lampepfl/dotty/branches{/branch}","tags_url":"https://api.github.com/repos/lampepfl/dotty/tags","blobs_url":"https://api.github.com/repos/lampepfl/dotty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lampepfl/dotty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lampepfl/dotty/git/refs{/sha}","trees_url":"https://api.github.com/repos/lampepfl/dotty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lampepfl/dotty/statuses/{sha}","languages_url":"https://api.github.com/repos/lampepfl/dotty/languages","stargazers_url":"https://api.github.com/repos/lampepfl/dotty/stargazers","contributors_url":"https://api.github.com/repos/lampepfl/dotty/contributors","subscribers_url":"https://api.github.com/repos/lampepfl/dotty/subscribers","subscription_url":"https://api.github.com/repos/lampepfl/dotty/subscription","commits_url":"https://api.github.com/repos/lampepfl/dotty/commits{/sha}","git_commits_url":"https://api.github.com/repos/lampepfl/dotty/git/commits{/sha}","comments_url":"https://api.github.com/repos/lampepfl/dotty/comments{/number}","issue_comment_url":"https://api.github.com/repos/lampepfl/dotty/issues/comments{/number}","contents_url":"https://api.github.com/repos/lampepfl/dotty/contents/{+path}","compare_url":"https://api.github.com/repos/lampepfl/dotty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lampepfl/dotty/merges","archive_url":"https://api.github.com/repos/lampepfl/dotty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lampepfl/dotty/downloads","issues_url":"https://api.github.com/repos/lampepfl/dotty/issues{/number}","pulls_url":"https://api.github.com/repos/lampepfl/dotty/pulls{/number}","milestones_url":"https://api.github.com/repos/lampepfl/dotty/milestones{/number}","notifications_url":"https://api.github.com/repos/lampepfl/dotty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lampepfl/dotty/labels{/name}","releases_url":"https://api.github.com/repos/lampepfl/dotty/releases{/id}","deployments_url":"https://api.github.com/repos/lampepfl/dotty/deployments","created_at":"2012-12-06T12:57:33Z","updated_at":"2016-08-19T15:36:02Z","pushed_at":"2016-08-19T13:37:49Z","git_url":"git://github.com/lampepfl/dotty.git","ssh_url":"git@github.com:lampepfl/dotty.git","clone_url":"https://github.com/lampepfl/dotty.git","svn_url":"https://github.com/lampepfl/dotty","homepage":"","size":26877,"stargazers_count":1186,"watchers_count":1186,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":153,"mirror_url":null,"open_issues_count":172,"forks":153,"open_issues":172,"watchers":1186,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1453"},"html":{"href":"https://github.com/lampepfl/dotty/pull/1453"},"issue":{"href":"https://api.github.com/repos/lampepfl/dotty/issues/1453"},"comments":{"href":"https://api.github.com/repos/lampepfl/dotty/issues/1453/comments"},"review_comments":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1453/comments"},"review_comment":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1453/commits"},"statuses":{"href":"https://api.github.com/repos/lampepfl/dotty/statuses/556c48ea3015fe99704ad1b04350c7ae85be58c7"}}}}
{"actor":{"display_login":"smarter"}}