Browse files

Implemented Rake tasks for generating documentation via Appledoc very…

… simply. refs #48

* Implemented `rake docs:install` for generating and installing a docset
* Implemented `rake docs:upload` for posting generated documentation to restkit.org
* Introduced new VERSION file for coordinating the version of the library. To be used in forthcoming release automation.
* Added notes about API documentation to the README
  • Loading branch information...
1 parent 695c262 commit 462cf35be456269b500d9221ce96700e6283d4a6 @blakewatters blakewatters committed Apr 14, 2011
View
1 .gitignore
@@ -2,6 +2,7 @@
Build
build
DerivedData
+Docs/API
# temp nibs and swap files
*~.nib
View
6 README.md
@@ -48,6 +48,12 @@ Documentation & Example Code
Documentation and example code is being added as quickly as possible. Please check the Docs/ and Examples/ subdirectories to see what's available. The [RestKit Google Group](http://groups.google.com/group/restkit) is an invaluable resource for getting help working with the library.
+RestKit has API documentation available on the web. You can access the documentation in several ways:
+
+1. Online in your web browser. Visit http://restkit.org/api/
+1. Directly within Xcode. Visit your Xcode Preferences and view the Documentation tab. Click + and add the RestKit feed: http://restkit.org/api/org.restkit.RestKit.atom
+1. Generate the documentation directly from the project source code. Run `rake docs` to generate and `rake docs:install` to install into Xcode
+
Installation
=========================
View
106 Rakefile
@@ -38,21 +38,109 @@ namespace :uispec do
end
end
+def restkit_version
+ @restkit_version ||= ENV['VERSION'] || File.read("VERSION").chomp
+end
+
+def apple_doc_command
+ "Vendor/appledoc/appledoc -t Vendor/appledoc/Templates -o Docs/API -p RestKit -v #{restkit_version} -c \"Two Toasters\" " +
+ "--company-id org.restkit --warn-undocumented-object --warn-undocumented-member --warn-empty-description --warn-unknown-directive " +
+ "--warn-invalid-crossref --warn-missing-arg --no-repeat-first-par "
+end
+
+def run(command)
+ puts "Executing: `#{command}`"
+ system(command)
+end
+
desc "Run all specs"
task :default => 'uispec:all'
desc "Build RestKit for iOS and Mac OS X"
task :build do
- system("xcodebuild -workspace RestKit.xcodeproj/project.xcworkspace -scheme RestKit -sdk iphoneos4.3")
- system("xcodebuild -workspace RestKit.xcodeproj/project.xcworkspace -scheme RestKit -sdk macosx10.6")
+ run("xcodebuild -workspace RestKit.xcodeproj/project.xcworkspace -scheme RestKit -sdk iphoneos4.3 clean build")
+ run("xcodebuild -workspace RestKit.xcodeproj/project.xcworkspace -scheme RestKit -sdk macosx10.6 clean build")
end
desc "Generate documentation via appledoc"
-task :docs do
- # TODO: Read the version
- # TODO: Build doc-set
- # TODO: Customize the
- system("Vendor/appledoc/appledoc -o Docs/API -p RestKit -v 0.9 -h --no-create-docset -c \"Two Toasters\" -h " +
- "--warn-undocumented-object --warn-undocumented-member --warn-empty-description --warn-unknown-directive " +
- "--warn-invalid-crossref --warn-missing-arg Code/")
+task :docs => 'docs:generate'
+
+namespace :docs do
+ task :generate do
+ command = apple_doc_command << " --no-create-docset --keep-intermediate-files --create-html Code/"
+ run(command)
+ puts "Generated HTML documentationa at Docs/API/html"
+ end
+
+ desc "Check that documentation can be built from the source code via appledoc successfully."
+ task :check do
+ command = apple_doc_command << " --no-create-html Code/"
+ run(command)
+ if $? != 0
+ puts "Documentation failed to generate with exit code #{$?}"
+ exit($?)
+ else
+ puts "Documentation processing with appledoc was successful."
+ end
+ end
+
+ desc "Generate & install a docset into Xcode from the current sources"
+ task :install do
+ command = apple_doc_command << " --install-docset Code/"
+ run(command)
+ end
+
+ desc "Build and upload the documentation set to the remote server"
+ task :upload do
+ version = ENV['VERSION'] || File.read("VERSION").chomp
+ puts "Generating RestKit docset for version #{version}..."
+ command = apple_doc_command <<
+ " --keep-intermediate-files" <<
+ " --docset-feed-name \"RestKit #{version} Documentation\"" <<
+ " --docset-feed-url http://restkit.org/api/%DOCSETATOMFILENAME" <<
+ " --docset-package-url http://restkit.org/api/%DOCSETPACKAGEFILENAME --publish-docset Code/"
+ run(command)
+ if $? == 0
+ puts "Uploading docset to restkit.org..."
+ command = "rsync -rvpPe ssh --delete Docs/API/html/ restkit.org:/var/www/public/restkit.org/public/api/#{version}"
+ run(command)
+
+ if $? == 0
+ command = "rsync -rvpPe ssh Docs/API/publish/ restkit.org:/var/www/public/restkit.org/public/api/"
+ run(command)
+ end
+ end
+ end
+end
+
+def is_port_open?(ip, port)
+ require 'socket'
+ require 'timeout'
+
+ begin
+ Timeout::timeout(1) do
+ begin
+ s = TCPSocket.new(ip, port)
+ s.close
+ return true
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
+ return false
+ end
+ end
+ rescue Timeout::Error
+ end
+
+ return false
+end
+
+task :ensure_server_is_running do
+ unless is_port_open?('127.0.0.1', 4567)
+ puts "Unable to find RestKit Specs server listening on port 4567. Run `rake uispec:server` and try again."
+ exit(-1)
+ end
+end
+
+desc "Validate a branch is ready for merging by checking for common issues"
+task :validate => [:build, 'docs:check', :ensure_server_is_running, 'uispec:all'] do
+ puts "All tests passed OK. Proceed with merge."
end
View
1 VERSION
@@ -0,0 +1 @@
+0.9
View
1 Vendor/appledoc/Templates/docset/Contents/Resources/Documents/documents-template
@@ -0,0 +1 @@
+This is used only as placeholder for location of Documents directory!
View
60 Vendor/appledoc/Templates/docset/Contents/Resources/nodes-template.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<DocSetNodes version="1.0">
+ <TOC>
+ <Node type="folder">
+ <Name>{{projectName}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#hasClasses}}
+ <Node type="folder">
+ <Name>{{strings/docset/classesTitle}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#classes}}{{>NodeRef}}
+ {{/classes}}
+ </Subnodes>
+ </Node>
+ {{/hasClasses}}
+ {{#hasCategories}}
+ <Node type="folder">
+ <Name>{{strings/docset/categoriesTitle}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#categories}}{{>NodeRef}}
+ {{/categories}}
+ </Subnodes>
+ </Node>
+ {{/hasCategories}}
+ {{#hasProtocols}}
+ <Node type="folder">
+ <Name>{{strings/docset/protocolsTitle}}</Name>
+ <Path>{{indexFilename}}</Path>
+ <Subnodes>
+ {{#protocols}}{{>NodeRef}}
+ {{/protocols}}
+ </Subnodes>
+ </Node>
+ {{/hasProtocols}}
+ </Subnodes>
+ </Node>
+ </TOC>
+ <Library>
+ {{#classes}}{{>Node}}
+ {{/classes}}
+ {{#categories}}{{>Node}}
+ {{/categories}}
+ {{#protocols}}{{>Node}}
+ {{/protocols}}
+ </Library>
+</DocSetNodes>
+
+Section Node
+ <Node id="{{id}}"{{#type}} type="{{type}}"{{/type}}>
+ <Name>{{name}}</Name>
+ <Path>{{path}}</Path>
+ </Node>
+EndSection
+
+Section NodeRef
+ <NodeRef refid="{{id}}"/>
+EndSection
View
61 Vendor/appledoc/Templates/docset/Contents/Resources/tokens-template.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Tokens version="1.0">
+ <File path="{{filePath}}">
+ {{#object}}
+ <Token>
+ {{>TokenIdentifier}}
+ {{>Abstract}}
+ {{>DeclaredIn}}
+ {{>RelatedTokens}}
+ {{#refid}}<NodeRef refid="{{refid}}"/>{{/refid}}
+ </Token>
+ {{/object}}
+ {{#members}}
+ <Token>
+ {{>TokenIdentifier}}
+ {{>Abstract}}
+ {{>DeclaredIn}}
+ {{>RelatedTokens}}
+ <Declaration>{{>MethodDeclaration}}</Declaration>
+ {{#hasParameters}}<Parameters>
+ {{#parameters}}<Parameter>
+ <Name>{{name}}</Name>
+ {{>Abstract}}
+ </Parameter>{{/parameters}}
+ </Parameters>{{/hasParameters}}
+ {{#returnValue}}<ReturnValue>{{>Abstract}}</ReturnValue>{{/returnValue}}
+ {{#anchor}}<Anchor>{{anchor}}</Anchor>{{/anchor}}
+ </Token>
+ {{/members}}
+ </File>
+</Tokens>
+
+Section TokenIdentifier
+ <TokenIdentifier>{{identifier}}</TokenIdentifier>
+EndSection
+
+Section DeclaredIn
+ <DeclaredIn>{{declaredin}}</DeclaredIn>
+EndSection
+
+Section RelatedTokens
+ {{#hasRelatedTokens}}
+ <RelatedTokens>
+ {{#relatedTokens}}<TokenIdentifier>{{.}}</TokenIdentifier>
+ {{/relatedTokens}}
+ </RelatedTokens>
+ {{/hasRelatedTokens}}
+EndSection
+
+Section Abstract
+<Abstract>{{#abstract}}{{>GBCommentComponentsList}}{{/abstract}}</Abstract>
+EndSection
+
+Section MethodDeclaration
+{{#formattedComponents}}{{value}}{{/formattedComponents}}
+EndSection
+
+Section GBCommentComponentsList
+{{#components}}{{&textValue}}{{/components}}
+EndSection
+
View
38 Vendor/appledoc/Templates/docset/Contents/info-template.plist
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ {{#bundleIdentifier}}<key>CFBundleIdentifier</key>
+ <string>{{bundleIdentifier}}</string>{{/bundleIdentifier}}
+ {{#bundleName}}<key>CFBundleName</key>
+ <string>{{bundleName}}</string>{{/bundleName}}
+ {{#bundleVersion}}<key>CFBundleShortVersionString</key>
+ <string>{{bundleVersion}}</string>
+ <key>CFBundleVersion</key>
+ <string>{{bundleVersion}}</string>{{/bundleVersion}}
+ {{#certificateIssuer}}<key>DocSetCertificateIssuer</key>
+ <string>{{certificateIssuer}}</string>{{/certificateIssuer}}
+ {{#certificateSigner}}<key>DocSetCertificateSigner</key>
+ <string>{{certificateSigner}}</string>{{/certificateSigner}}
+ {{#description}}<key>DocSetDescription</key>
+ <string>{{description}}</string>{{/description}}
+ {{#fallbackURL}}<key>DocSetFallbackURL</key>
+ <string>{{fallbackURL}}</string>{{/fallbackURL}}
+ {{#feedName}}<key>DocSetFeedName</key>
+ <string>{{feedName}}</string>{{/feedName}}
+ {{#feedURL}}<key>DocSetFeedURL</key>
+ <string>{{feedURL}}</string>{{/feedURL}}
+ {{#minimumXcodeVersion}}<key>DocSetMinimumXcodeVersion</key>
+ <string>{{minimumXcodeVersion}}</string>{{/minimumXcodeVersion}}
+ {{#platformFamily}}<key>DocSetPlatformFamily</key>
+ <string>{{platformFamily}}</string>{{/platformFamily}}
+ {{#publisherIdentifier}}<key>DocSetPublisherIdentifier</key>
+ <string>{{publisherIdentifier}}</string>{{/publisherIdentifier}}
+ {{#publisherName}}<key>DocSetPublisherName</key>
+ <string>{{publisherName}}</string>{{/publisherName}}
+ {{#copyrightMessage}}<key>NSHumanReadableCopyright</key>
+ <string>{{copyrightMessage}}</string>{{/copyrightMessage}}
+</dict>
+</plist>
View
520 Vendor/appledoc/Templates/html/css/styles.css
@@ -0,0 +1,520 @@
+body {
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ font-size: 13px;
+ color: #000;
+}
+
+code {
+ font-family: Courier, Consolas, monospace;
+ font-size: 13px;
+ color: #666;
+}
+
+pre {
+ font-family: Courier, Consolas, monospace;
+ font-size: 13px;
+ line-height: 18px;
+ tab-interval: 0.5em;
+ border: 1px solid #C7CFD5;
+ background-color: #F1F5F9;
+ color: #666;
+ padding: 0.3em 1em;
+}
+
+ul {
+ list-style-type: square;
+}
+
+li {
+ margin-bottom: 10px;
+}
+
+p:first-child {
+ margin-top: 0.5em;
+}
+
+a code,
+a {
+ text-decoration: none;
+ color: #36C;
+}
+
+a:hover code,
+a:hover {
+ text-decoration: underline;
+ color: #36C;
+}
+
+/* @group Common page elements */
+
+#top_header {
+ height: 55px;
+ left: 0;
+ min-width: 598px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 900;
+}
+
+#footer {
+ clear: both;
+ padding-top: 20px;
+ text-align: center;
+}
+
+#contents {
+ border-top: 1px solid #2B334F;
+ position: absolute;
+ top: 56px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-top: 1em;
+ min-width: 550px;
+}
+
+#contents.isShowingTOC {
+ left: 230px;
+ min-width: 320px;
+}
+
+#overview_contents {
+ padding-left: 2em;
+ padding-right: 2em;
+ padding-top: 1em;
+ min-width: 550px;
+}
+
+.copyright {
+ font-size: 12px;
+}
+
+.generator {
+ font-size: 11px;
+}
+
+.main-navigation ul li {
+ display: inline;
+ margin-left: 15px;
+ list-style: none;
+}
+
+.navigation-top {
+ clear: both;
+ float: right;
+}
+
+.navigation-bottom {
+ clear: both;
+ float: right;
+ margin-top: 20px;
+ margin-bottom: -10px;
+}
+
+.open > .disclosure {
+ background-image: url("../img/disclosure_open.png");
+}
+
+.disclosure {
+ background: url("../img/disclosure.png") no-repeat scroll 0 0;
+}
+
+.disclosure, .nodisclosure {
+ display: inline-block;
+ height: 8px;
+ margin-right: 5px;
+ position: relative;
+ width: 9px;
+}
+
+/* @end */
+
+/* @group Header */
+
+#top_header #title {
+ background: url("../img/title_background.png") repeat-x 0 0 #8A98A9;
+ border-bottom: 1px solid #B6B6B6;
+ height: 25px;
+ overflow: hidden;
+}
+
+#top_header h1 {
+ font-size: 115%;
+ font-weight: normal;
+ margin: 0;
+ padding: 3px 0 2px;
+ text-align: center;
+ text-shadow: 0 1px 0 #D5D5D5;
+ white-space: nowrap;
+}
+
+#headerButtons {
+ background-color: #D8D8D8;
+ background-image: url("../img/button_bar_background.png");
+ border-bottom: 1px solid #EDEDED;
+ border-top: 1px solid #2B334F;
+ font-size: 8pt;
+ height: 28px;
+ left: 0;
+ list-style: none outside none;
+ margin: 0;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ right: 0;
+ top: 26px;
+}
+
+#headerButtons li {
+ background-repeat: no-repeat;
+ display: inline;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding: 0;
+}
+
+#toc_button button {
+ border-color: #ACACAC;
+ border-style: none solid none none;
+ border-width: 0 1px 0 0;
+ height: 28px;
+ margin: 0;
+ padding-left: 30px;
+ text-align: left;
+ width: 230px;
+}
+
+li#jumpto_button {
+ left: 230px;
+ margin-left: 0;
+ position: absolute;
+}
+
+li#jumpto_button select {
+ height: 22px;
+ margin: 5px 2px 0 10px;
+ max-width: 300px;
+}
+
+/* @end */
+
+/* @group Table of contents */
+
+#tocContainer.isShowingTOC {
+ border-right: 1px solid #ACACAC;
+ display: block;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+}
+
+#tocContainer {
+ background-color: #E4EBF7;
+ border-top: 1px solid #2B334F;
+ bottom: 0;
+ display: none;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ top: 56px;
+ width: 229px;
+}
+
+#tocContainer > ul#toc {
+ font-size: 11px;
+ margin: 0;
+ padding: 12px 0 18px;
+ width: 209px;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+#tocContainer > ul#toc > li {
+ margin: 0;
+ padding: 0 0 7px 30px;
+ text-indent: -15px;
+}
+
+#tocContainer > ul#toc > li > .sectionName a {
+ color: #000000;
+ font-weight: bold;
+}
+
+#tocContainer > ul#toc > li > .sectionName a:hover {
+ text-decoration: none;
+}
+
+#tocContainer > ul#toc li.children > ul {
+ display: none;
+ height: 0;
+}
+
+#tocContainer > ul#toc > li > ul {
+ margin: 0;
+ padding: 0;
+}
+
+#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
+ margin-left: 0;
+ margin-bottom: 0;
+ padding-left: 15px;
+}
+
+#tocContainer > ul#toc > li ul {
+ list-style: none;
+ margin-right: 0;
+ padding-right: 0;
+}
+
+#tocContainer > ul#toc li.children.open > ul {
+ display: block;
+ height: auto;
+ margin-left: -15px;
+ padding-left: 0;
+}
+
+#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
+ margin-left: 0;
+ padding-left: 15px;
+}
+
+#tocContainer li ul li {
+ margin-top: 0.583em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+#tocContainer li ul li span.sectionName {
+ white-space: normal;
+}
+
+#tocContainer > ul#toc > li > ul > li > .sectionName a {
+ font-weight: bold;
+}
+
+#tocContainer > ul#toc > li > ul a {
+ color: #4F4F4F;
+}
+
+/* @end */
+
+/* @group Index formatting */
+
+.index-title {
+ font-size: 13px;
+ font-weight: normal;
+}
+
+.index-column {
+ float: left;
+ width: 30%;
+ min-width: 200px;
+ font-size: 11px;
+}
+
+.index-column ul {
+ margin: 8px 0 0 0;
+ padding: 0;
+ list-style: none;
+}
+
+.index-column ul li {
+ margin: 0 0 3px 0;
+ padding: 0;
+}
+
+.hierarchy-column {
+ min-width: 400px;
+}
+
+.hierarchy-column ul {
+ margin: 3px 0 0 15px;
+}
+
+.hierarchy-column ul li {
+ list-style-type: square;
+}
+
+/* @end */
+
+/* @group Common formatting elements */
+
+.title {
+ font-weight: normal;
+ font-size: 250%;
+ margin-top:0;
+}
+
+.subtitle,
+.index-overview h1 {
+ font-weight: normal;
+ font-size: 180%;
+ color: #3C4C6C;
+ border-bottom: 1px solid #5088C5;
+}
+
+.subsubtitle {
+ font-weight: normal;
+ font-size: 145%;
+ height: 0.7em;
+}
+
+.warning {
+ border: 1px solid #5088C5;
+ background-color: #F0F3F7;
+ margin-bottom: 0.5em;
+ padding: 0em 0.8em;
+}
+
+.bug {
+ border: 1px solid #000;
+ background-color: #ffffcc;
+ margin-bottom: 0.5em;
+ padding: 0em 0.8em;
+}
+
+/* @end */
+
+/* @group Common layout */
+
+.section {
+ margin-top: 3em;
+}
+
+/* @end */
+
+/* @group Object specification section */
+
+.section-specification {
+ margin-left: 2.5em;
+ margin-right: 2.5em;
+ font-size: 12px;
+}
+
+.section-specification table {
+ border-top: 1px solid #d6e0e5;
+}
+
+.section-specification td {
+ vertical-align: top;
+ border-bottom: 1px solid #d6e0e5;
+ padding: .6em;
+}
+
+.section-specification .specification-title {
+ font-weight: bold;
+}
+
+/* @end */
+
+/* @group Tasks section */
+
+.task-list {
+ list-style-type: none;
+ padding-left: 0px;
+}
+
+.task-list li {
+ margin-bottom: 3px;
+}
+
+.task-item-suffix {
+ color: #996;
+ font-size: 12px;
+ font-style: italic;
+ margin-left: 0.5em;
+}
+
+span.tooltip span.tooltip {
+ font-size: 1.0em;
+ display: none;
+ padding: 0.2em 0.3em;
+ border: 1px solid #aaa;
+ background-color: #fdfec8;
+ color: #000;
+ text-align: left;
+}
+
+span.tooltip span.tooltip p {
+ margin: 0.1em 0.3em;
+}
+
+span.tooltip:hover span.tooltip {
+ display: block;
+ position: absolute;
+ margin-left: 2em;
+}
+
+/* @end */
+
+/* @group Method section */
+
+.section-method {
+ margin-top: 2.3em;
+}
+
+.method-title {
+ margin-bottom: 1.5em;
+}
+
+.method-subtitle {
+ margin-top: 0.7em;
+ margin-bottom: 0.2em;
+}
+
+.method-subsection p {
+ margin-top: 0.4em;
+ margin-bottom: 0.8em;
+}
+
+.method-declaration {
+ margin-top:1.182em;
+ margin-bottom:.909em;
+}
+
+.method-declaration code {
+ font:14px Courier, Consolas, monospace;
+ color:#000;
+}
+
+.declaration {
+ color: #000;
+}
+
+.argument-def {
+ margin-top: 0.3em;
+ margin-bottom: 0.3em;
+}
+
+.argument-def dd {
+ margin-left: 1.25em;
+}
+
+.see-also-section ul {
+ list-style-type: none;
+ padding-left: 0px;
+ margin-top: 0;
+}
+
+.see-also-section li {
+ margin-bottom: 3px;
+}
+
+.see-also-section p {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.declared-in-ref {
+ color: #666;
+}
+
+/* @end */
+
View
28 Vendor/appledoc/Templates/html/document-template.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <meta id="xcode-display" name="xcode-display" content="render"/>
+ <meta name="viewport" content="width=550" />
+ <link rel="stylesheet" type="text/css" href="{{page/cssPath}}" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <article>
+ <a title="{{page/title}}" name="top"></a>
+ <div id="container">
+ {{#object/comment}}{{#longDescription}}{{>GBCommentComponentsList}}{{/longDescription}}{{/object/comment}}
+ </div>
+ </article>
+ </body>
+</html>
+
+
+Section GBCommentComponentsList
+{{#components}}{{>GBCommentComponent}}{{/components}}
+EndSection
+
+Section GBCommentComponent
+{{&htmlValue}}
+EndSection
View
79 Vendor/appledoc/Templates/html/hierarchy-template.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="css/styles.css" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <article>
+ <div id="overview_contents" role="main">
+ <div class="main-navigation navigation-top">
+ {{>Navigation}}
+ </div>
+ <div id="header">
+ <div class="section-header">
+ <h1 class="title title-header">{{page/title}}</h1>
+ </div>
+ </div>
+ <div id="container">
+ {{#hasClasses}}
+ <div class="index-column hierarchy-column">
+ <h2 class="index-title">{{strings/hierarchyPage/classesTitle}}</h2>
+ {{>Classes}}
+ </div>
+ {{/hasClasses}}
+
+ {{#hasProtocolsOrCategories}}
+ <div class="index-column">
+ {{#hasProtocols}}
+ <h2 class="index-title">{{strings/hierarchyPage/protocolsTitle}}</h2>
+ <ul>
+ {{#protocols}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/protocols}}
+ </ul>
+ {{/hasProtocols}}
+ {{#hasCategories}}
+ <h2 class="index-title">{{strings/hierarchyPage/categoriesTitle}}</h2>
+ <ul>
+ {{#categories}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/categories}}
+ </ul>
+ {{/hasCategories}}
+ </div>
+ {{/hasProtocolsOrCategories}}
+ </div>
+ <div class="main-navigation navigation-bottom">
+ {{>Navigation}}
+ </div>
+ <div id="footer">
+ <hr />
+ <div class="footer-copyright">
+ {{#page}}<p><span class="copyright">&copy; {{copyrightDate}} {{copyrightHolder}}. All rights reserved. (Last updated: {{lastUpdatedDate}})</span>{{/page}}<br />
+ {{#strings/appledocData}}
+ <span class="generator">Generated by <a href="{{homepage}}">{{tool}} {{version}} (build {{build}})</a>.</span></p>
+ {{/strings/appledocData}}
+
+ </div>
+ </div>
+ </div>
+ </article>
+ </body>
+</html>
+
+Section Classes
+{{#hasClasses}}
+ <ul>
+ {{#classes}}
+ <li>{{#href}}<a href="{{href}}">{{/href}}{{name}}{{#href}}</a>{{/href}}{{>Classes}}</li>
+ {{/classes}}
+ </ul>
+{{/hasClasses}}
+EndSection
+
+Section Navigation
+<a href="index.html">Previous</a>
+EndSection
View
BIN Vendor/appledoc/Templates/html/img/button_bar_background.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN Vendor/appledoc/Templates/html/img/disclosure.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN Vendor/appledoc/Templates/html/img/disclosure_open.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN Vendor/appledoc/Templates/html/img/title_background.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
83 Vendor/appledoc/Templates/html/index-template.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="css/styles.css" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <article>
+ <div id="overview_contents" role="main">
+ <div class="main-navigation navigation-top">
+ {{>Navigation}}
+ </div>
+ <div id="header">
+ <div class="section-header">
+ <h1 class="title title-header">{{page/title}}</h1>
+ </div>
+ </div>
+ <div id="container">
+ {{#indexDescription}}
+ <div class="section section-overview index-overview">
+ {{#comment}}
+ {{#hasLongDescription}}
+ {{#longDescription}}{{#components}}{{&htmlValue}}{{/components}}{{/longDescription}}
+ {{/hasLongDescription}}
+ {{/comment}}
+ </div>
+ {{/indexDescription}}
+
+ {{#hasClasses}}
+ <div class="index-column">
+ <h2 class="index-title">{{strings/indexPage/classesTitle}}</h2>
+ <ul>
+ {{#classes}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/classes}}
+ </ul>
+ </div>
+ {{/hasClasses}}
+
+ {{#hasProtocolsOrCategories}}
+ <div class="index-column">
+ {{#hasProtocols}}
+ <h2 class="index-title">{{strings/indexPage/protocolsTitle}}</h2>
+ <ul>
+ {{#protocols}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/protocols}}
+ </ul>
+ {{/hasProtocols}}
+ {{#hasCategories}}
+ <h2 class="index-title">{{strings/indexPage/categoriesTitle}}</h2>
+ <ul>
+ {{#categories}}
+ <li><a href="{{href}}">{{title}}</a></li>
+ {{/categories}}
+ </ul>
+ {{/hasCategories}}
+ </div>
+ {{/hasProtocolsOrCategories}}
+ </div>
+ <div class="main-navigation navigation-bottom">
+ {{>Navigation}}
+ </div>
+ <div id="footer">
+ <hr />
+ <div class="footer-copyright">
+ {{#page}}<p><span class="copyright">&copy; {{copyrightDate}} {{copyrightHolder}}. All rights reserved. (Last updated: {{lastUpdatedDate}})</span>{{/page}}<br />
+ {{#strings/appledocData}}
+ <span class="generator">Generated by <a href="{{homepage}}">{{tool}} {{version}} (build {{build}})</a>.</span></p>
+ {{/strings/appledocData}}
+
+ </div>
+ </div>
+ </div>
+ </article>
+ </body>
+</html>
+
+Section Navigation
+<a href="hierarchy.html">Next</a>
+EndSection
View
408 Vendor/appledoc/Templates/html/object-template.html
@@ -0,0 +1,408 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>{{page/title}}</title>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
+ <meta id="xcode-display" name="xcode-display" content="render"/>
+ <meta name="viewport" content="width=550" />
+ <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+ {{#strings/appledocData}}<meta name="generator" content="{{tool}} {{version}} (build {{build}})" />{{/strings/appledocData}}
+ </head>
+ <body>
+ <header id="top_header">
+ <div id="title" role="banner">
+ <h1 class="hideInXcode">{{page/title}}</h1>
+ </div>
+ <ul id="headerButtons" role="toolbar">
+ <li id="toc_button">
+ <button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
+ </li>
+ <li id="jumpto_button" role="navigation">
+ {{>JumpTo}}
+ </li>
+ </ul>
+ </header>
+ <nav id="tocContainer" class="isShowingTOC">
+ <ul id="toc" role="tree">
+ {{>TableOfContents}}
+ </ul>
+ </nav>
+ <article>
+ <div id="contents" class="isShowingTOC" role="main">
+ <a title="{{page/title}}" name="top"></a>
+ <div class="main-navigation navigation-top">
+ {{>Navigation}}
+ </div>
+ <div id="header">
+ <div class="section-header">
+ <h1 class="title title-header">{{page/title}}</h1>
+ </div>
+ </div>
+ <div id="container">
+ {{#page/specifications}}
+ {{#used}}<div class="section section-specification"><table cellspacing="0"><tbody>{{/used}}
+ {{#values}}{{>ObjectSpecification}}{{/values}}
+ {{#used}}</tbody></table></div>{{/used}}
+ {{/page/specifications}}
+
+ {{#object/comment}}
+ {{#hasLongDescription}}
+ <div class="section section-overview">
+ <a title="{{strings/objectOverview/title}}" name="overview"></a>
+ <h2 class="subtitle subtitle-overview">{{strings/objectOverview/title}}</h2>
+ {{#longDescription}}{{>GBCommentComponentsList}}{{/longDescription}}
+ </div>
+ {{/hasLongDescription}}
+ {{/object/comment}}
+
+ {{#object/methods}}
+ {{#hasSections}}
+ <div class="section section-tasks">
+ <a title="{{strings/objectTasks/title}}" name="tasks"></a>
+ <h2 class="subtitle subtitle-tasks">{{strings/objectTasks/title}}</h2>
+ {{#sections}}
+
+ {{#sectionName}}<a title="{{#sectionName}}{{.}}{{/sectionName}}" name="task_{{#sectionName}}{{.}}{{/sectionName}}"></a>{{/sectionName}}
+ {{>TaskTitle}}
+ <ul class="task-list">
+ {{#methods}}{{>TaskMethod}}{{/methods}}
+ </ul>
+ {{/sections}}
+ </div>
+ {{/hasSections}}
+ {{/object/methods}}
+
+ {{#object/methods}}
+ {{#hasProperties}}
+ <div class="section section-methods">
+ <a title="{{strings/objectMethods/propertiesTitle}}" name="properties"></a>
+ <h2 class="subtitle subtitle-methods">{{strings/objectMethods/propertiesTitle}}</h2>
+ {{#properties}}
+ {{>Method}}
+ {{/properties}}
+ </div>
+ {{/hasProperties}}
+
+ {{#hasClassMethods}}
+ <div class="section section-methods">
+ <a title="{{strings/objectMethods/classMethodsTitle}}" name="class_methods"></a>
+ <h2 class="subtitle subtitle-methods">{{strings/objectMethods/classMethodsTitle}}</h2>
+ {{#classMethods}}
+ {{>Method}}
+ {{/classMethods}}
+ </div>
+ {{/hasClassMethods}}
+
+ {{#hasInstanceMethods}}
+ <div class="section section-methods">
+ <a title="{{strings/objectMethods/instanceMethodsTitle}}" name="instance_methods"></a>
+ <h2 class="subtitle subtitle-methods">{{strings/objectMethods/instanceMethodsTitle}}</h2>
+ {{#instanceMethods}}
+ {{>Method}}
+ {{/instanceMethods}}
+ </div>
+ {{/hasInstanceMethods}}
+ {{/object/methods}}
+ </div>
+ <div class="main-navigation navigation-bottom">
+ {{>Navigation}}
+ </div>
+ <div id="footer">
+ <hr />
+ <div class="footer-copyright">
+ {{#page}}<p><span class="copyright">&copy; {{copyrightDate}} {{copyrightHolder}}. All rights reserved. (Last updated: {{lastUpdatedDate}})</span>{{/page}}<br />
+ {{#strings/appledocData}}
+ <span class="generator">Generated by <a href="{{homepage}}">{{tool}} {{version}} (build {{build}})</a>.</span></p>
+ {{/strings/appledocData}}
+ </div>
+ </div>
+ </div>
+ </article>
+ <script type="text/javascript">
+ function jumpToChange()
+ {
+ window.location.hash = this.options[this.selectedIndex].value;
+ }
+
+ function toggleTOC()
+ {
+ var contents = document.getElementById('contents');
+ var tocContainer = document.getElementById('tocContainer');
+
+ if (this.getAttribute('class') == 'open')
+ {
+ this.setAttribute('class', '');
+ contents.setAttribute('class', '');
+ tocContainer.setAttribute('class', '');
+
+ window.name = "hideTOC";
+ }
+ else
+ {
+ this.setAttribute('class', 'open');
+ contents.setAttribute('class', 'isShowingTOC');
+ tocContainer.setAttribute('class', 'isShowingTOC');
+
+ window.name = "";
+ }
+ return false;
+ }
+
+ function toggleTOCEntryChildren(e)
+ {
+ e.stopPropagation();
+ var currentClass = this.getAttribute('class');
+ if (currentClass == 'children') {
+ this.setAttribute('class', 'children open');
+ }
+ else if (currentClass == 'children open') {
+ this.setAttribute('class', 'children');
+ }
+ return false;
+ }
+
+ function tocEntryClick(e)
+ {
+ e.stopPropagation();
+ return true;
+ }
+
+ function init()
+ {
+ var selectElement = document.getElementById('jumpTo');
+ selectElement.addEventListener('change', jumpToChange, false);
+
+ var tocButton = document.getElementById('table_of_contents');
+ tocButton.addEventListener('click', toggleTOC, false);
+
+ var taskTreeItem = document.getElementById('task_treeitem');
+ if (taskTreeItem.getElementsByTagName('li').length > 0)
+ {
+ taskTreeItem.setAttribute('class', 'children');
+ taskTreeItem.firstChild.setAttribute('class', 'disclosure');
+ }
+
+ var tocList = document.getElementById('toc');
+
+ var tocEntries = tocList.getElementsByTagName('li');
+ for (var i = 0; i < tocEntries.length; i++) {
+ tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
+ }
+
+ var tocLinks = tocList.getElementsByTagName('a');
+ for (var i = 0; i < tocLinks.length; i++) {
+ tocLinks[i].addEventListener('click', tocEntryClick, false);
+ }
+
+ if (window.name == "hideTOC") {
+ toggleTOC.call(tocButton);
+ }
+ }
+
+ window.onload = init;
+ </script>
+ </body>
+</html>
+
+
+Section Method
+<div class="section-method">
+ <a name="{{htmlReferenceName}}" title="{{methodSelector}}"></a>
+ <h3 class="subsubtitle method-title">{{methodSelector}}</h3>
+
+ {{#comment}}
+ {{#hasShortDescription}}
+ <div class="method-subsection brief-description">
+ {{#shortDescription}}{{>GBCommentComponent}}{{/shortDescription}}
+ </div>
+ {{/hasShortDescription}}
+
+ <div class="method-subsection method-declaration"><code>{{>MethodDeclaration}}</code></div>
+
+ {{#hasMethodParameters}}
+ <div class="method-subsection arguments-section parameters">
+ <h4 class="method-subtitle parameter-title">{{strings/objectMethods/parametersTitle}}</h4>
+ {{#methodParameters}}
+ <dl class="argument-def parameter-def">
+ <dt><em>{{argumentName}}</em></dt>
+ <dd>{{#argumentDescription}}{{>GBCommentComponentsList}}{{/argumentDescription}}</dd>
+ </dl>
+ {{/methodParameters}}
+ </div>
+ {{/hasMethodParameters}}
+
+ {{#hasMethodResult}}
+ <div class="method-subsection return">
+ <h4 class="method-subtitle parameter-title">{{strings/objectMethods/resultTitle}}</h4>
+ {{#methodResult}}{{>GBCommentComponentsList}}{{/methodResult}}
+ </div>
+ {{/hasMethodResult}}
+
+ {{#hasLongDescription}}
+ <div class="method-subsection discussion-section">
+ <h4 class="method-subtitle">{{strings/objectMethods/discussionTitle}}</h4>
+ {{#longDescription}}{{>GBCommentComponentsList}}{{/longDescription}}
+ </div>
+ {{/hasLongDescription}}
+
+ {{#hasMethodExceptions}}
+ <div class="method-subsection arguments-section exceptions">
+ <h4 class="method-subtitle exception-title">{{strings/objectMethods/exceptionsTitle}}</h4>
+ {{#methodExceptions}}
+ <dl class="argument-def exception-def">
+ <dt><em>{{argumentName}}</em></dt>
+ <dd>{{#argumentDescription}}{{>GBCommentComponentsList}}{{/argumentDescription}}</dd>
+ </dl>
+ {{/methodExceptions}}
+ </div>
+ {{/hasMethodExceptions}}
+
+ {{#hasRelatedItems}}
+ <div class="method-subsection see-also-section">
+ <h4 class="method-subtitle">{{strings/objectMethods/seeAlsoTitle}}</h4>
+ <ul>
+ {{#relatedItems/components}}
+ <li><code>{{>GBCommentComponent}}</code></li>
+ {{/relatedItems/components}}
+ </ul>
+ </div>
+ {{/hasRelatedItems}}
+
+ {{#prefferedSourceInfo}}
+ <div class="method-subsection declared-in-section">
+ <h4 class="method-subtitle">{{strings/objectMethods/declaredInTitle}}</h4>
+ <code class="declared-in-ref">{{filename}}</code><br />
+ </div>
+ {{/prefferedSourceInfo}}
+ {{/comment}}
+</div>
+EndSection
+
+Section MethodDeclaration
+{{#formattedComponents}}{{#emphasized}}<em>{{/emphasized}}{{#href}}<a href="{{&href}}">{{/href}}{{value}}{{#href}}</a>{{/href}}{{#emphasized}}</em>{{/emphasized}}{{/formattedComponents}}
+EndSection
+
+
+Section TaskTitle
+{{#hasMultipleSections}}<h3 class="subsubtitle task-title">{{#sectionName}}{{.}}{{/sectionName}}{{^sectionName}}{{strings/objectTasks/otherMethodsSectionName}}{{/sectionName}}</h3>{{/hasMultipleSections}}
+{{^hasMultipleSections}}{{#sectionName}}<h3 class="subsubtitle task-title">{{.}}</h3>{{/sectionName}}{{/hasMultipleSections}}
+EndSection
+
+Section TaskMethod
+<li>
+ <span class="tooltip">
+ <code><a href="{{htmlLocalReference}}">{{>TaskSelector}}</a></code>
+ {{#comment}}{{#hasShortDescription}}<span class="tooltip">{{#shortDescription}}{{>GBCommentComponent}}{{/shortDescription}}</span>{{/hasShortDescription}}{{/comment}}
+ </span>
+ {{#isProperty}}<span class="task-item-suffix">{{strings/objectTasks/property}}</span>{{/isProperty}}
+ {{#isRequired}}<span class="task-item-suffix">{{strings/objectTasks/requiredMethod}}</span>{{/isRequired}}
+</li>
+EndSection
+
+Section TaskSelector
+{{#isInstanceMethod}}&ndash;&nbsp;{{/isInstanceMethod}}{{#isClassMethod}}+&nbsp;{{/isClassMethod}}{{#isProperty}}&nbsp;&nbsp;{{/isProperty}}{{methodSelector}}
+EndSection
+
+
+Section GBCommentComponentsList
+{{#components}}{{>GBCommentComponent}}{{/components}}
+EndSection
+
+Section GBCommentComponent
+{{&htmlValue}}
+EndSection
+
+Section ObjectSpecification
+<tr>
+ <td class="specification-title">{{title}}</td>
+ <td class="specification-value">{{#values}}{{#href}}<a href="{{&href}}">{{/href}}{{string}}{{#href}}</a>{{/href}}{{&delimiter}}{{/values}}</td>
+</tr>
+EndSection
+
+
+Section Navigation
+<ul>
+ <li><a href="../index.html">Index</a></li>
+ <li><a href="../hierarchy.html">Hierarchy</a></li>
+</ul>
+EndSection
+
+Section JumpTo
+<select id="jumpTo">
+ <option value="top">Jump To&#133;</option>
+ {{#object/comment}}
+ <option value="overview">{{strings/objectOverview/title}}</option>
+ {{/object/comment}}
+
+ {{#object/methods}}
+ {{#hasSections}}
+ <option value="tasks">{{strings/objectTasks/title}}</option>
+ {{/hasSections}}
+ {{/object/methods}}
+
+ {{#object/methods}}
+ {{#hasProperties}}
+ <option value="properties">{{strings/objectMethods/propertiesTitle}}</option>
+ {{#properties}}
+ <option value="{{htmlReferenceName}}">&nbsp;&nbsp;&nbsp;&nbsp;{{methodSelector}}</option>
+ {{/properties}}
+ {{/hasProperties}}
+
+ {{#hasClassMethods}}
+ <option value="class_methods">{{strings/objectMethods/classMethodsTitle}}</option>
+ {{#classMethods}}
+ <option value="{{htmlReferenceName}}">&nbsp;&nbsp;&nbsp;&nbsp;{{prefixedMethodSelector}}</option>
+ {{/classMethods}}
+ {{/hasClassMethods}}
+
+ {{#hasInstanceMethods}}
+ <option value="instance_methods">{{strings/objectMethods/instanceMethodsTitle}}</option>
+ {{#instanceMethods}}
+ <option value="{{htmlReferenceName}}">&nbsp;&nbsp;&nbsp;&nbsp;{{prefixedMethodSelector}}</option>
+ {{/instanceMethods}}
+ {{/hasInstanceMethods}}
+ {{/object/methods}}
+</select>
+EndSection
+
+Section TableOfContents
+{{#object/comment}}
+<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">{{strings/objectOverview/title}}</a></span></li>
+{{/object/comment}}
+
+{{#object/methods}}
+{{#hasSections}}
+<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">{{strings/objectTasks/title}}</a></span><ul>
+ {{#sections}}{{#sectionName}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#task_{{#sectionName}}{{.}}{{/sectionName}}">{{#sectionName}}{{.}}{{/sectionName}}</a></span></li>
+ {{/sectionName}}{{/sections}}
+</ul></li>
+{{/hasSections}}
+{{/object/methods}}
+
+{{#object/methods}}
+{{#hasProperties}}
+<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#properties">{{strings/objectMethods/propertiesTitle}}</a></span><ul>
+ {{#properties}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#{{htmlReferenceName}}">{{methodSelector}}</a></span></li>
+ {{/properties}}
+</ul></li>
+{{/hasProperties}}
+
+{{#hasClassMethods}}
+<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#class_methods">{{strings/objectMethods/classMethodsTitle}}</a></span><ul>
+ {{#classMethods}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#{{htmlReferenceName}}">{{methodSelector}}</a></span></li>
+ {{/classMethods}}
+</ul></li>
+{{/hasClassMethods}}
+
+{{#hasInstanceMethods}}
+<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#instance_methods">{{strings/objectMethods/instanceMethodsTitle}}</a></span><ul>
+ {{#instanceMethods}}
+ <li><span class="nodisclosure"></span><span class="sectionName"><a href="#{{htmlReferenceName}}">{{methodSelector}}</a></span></li>
+ {{/instanceMethods}}
+</ul></li>
+{{/hasInstanceMethods}}
+{{/object/methods}}
+EndSection

0 comments on commit 462cf35

Please sign in to comment.