sc-docs 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -2,4 +2,4 @@ source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem "sproutcore", "1.6.0.rc.1"
5
+ gem "sproutcore", "1.6.0.rc.2"
@@ -1,22 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sc-docs (0.0.1)
4
+ sc-docs (0.0.3)
5
5
  rack
6
6
  thor
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- abstract (1.0.0)
12
- chunky_png (1.1.2)
11
+ chunky_png (1.2.0)
13
12
  compass (0.11.1)
14
13
  chunky_png (~> 1.1)
15
14
  fssm (>= 0.2.7)
16
15
  sass (~> 3.1)
17
16
  daemons (1.1.3)
18
- erubis (2.6.6)
19
- abstract (>= 1.0.0)
17
+ erubis (2.7.0)
20
18
  eventmachine (0.12.10)
21
19
  extlib (0.9.15)
22
20
  fssm (0.2.7)
@@ -24,14 +22,13 @@ GEM
24
22
  json_pure (1.4.6)
25
23
  rack (1.2.2)
26
24
  sass (3.1.1)
27
- sproutcore (1.6.0.rc.1)
28
- chunky_png (~> 1.1.0)
25
+ sproutcore (1.6.0.rc.2)
29
26
  compass (~> 0.11.1)
30
- erubis (~> 2.6.6)
27
+ erubis (~> 2.6)
31
28
  extlib (~> 0.9.15)
32
29
  haml (~> 3.1.1)
33
30
  json_pure (~> 1.4.6)
34
- rack (~> 1.2.1)
31
+ rack (~> 1.2)
35
32
  thin (~> 1.2.11)
36
33
  thor (~> 0.14.3)
37
34
  thin (1.2.11)
@@ -45,4 +42,4 @@ PLATFORMS
45
42
 
46
43
  DEPENDENCIES
47
44
  sc-docs!
48
- sproutcore (= 1.6.0.rc.1)
45
+ sproutcore (= 1.6.0.rc.2)
data/README.md CHANGED
@@ -16,23 +16,19 @@ versions of SC.*
16
16
 
17
17
  ### Basic
18
18
 
19
- sc-docs preview --input_dir INPUT_DIRECTORY_PATH \
20
- --output_dir OUTPUT_DIRECTORY_PATH
19
+ sc-docs preview INPUT_DIRECTORY_PATH
21
20
 
22
21
  This documents the specified directory and then runs a preview sc-server instance.
23
22
 
24
23
  ### Deploy
25
24
 
26
- sc-docs generate --input_dir INPUT_DIRECTORY_PATH \
27
- --output_dir = OUTPUT_DIRECTORY_PATH
25
+ sc-docs generate INPUT_DIRECTORY_PATH -o OUTPUT_DIRECTORY_PATH
28
26
 
29
27
  The generate command runs sc-build and deploys to the specified directory.
30
28
 
31
29
  ### HTML Templates
32
30
 
33
- sc-docs generate --input_dir INPUT_DIRECTORY_PATH \
34
- --output_dir = OUTPUT_DIRECTORY_PATH \
35
- --template TEMPLATE_PATH
31
+ sc-docs generate INPUT_DIRECTORY_PATH -o OUTPUT_DIRECTORY_PATH -t TEMPLATE_PATH
36
32
 
37
33
 
38
34
  By default sc-docs assumes that you want to generate docs for the SproutCore based Doc Viewer. However, if you pass a template it will generate a standard HTML output.
@@ -11,25 +11,26 @@ module ScDocs
11
11
  :banner => "Path to jsdoc template (forces HTML output)"
12
12
  class_option :verbose, :aliases => ['-v'], :type => :boolean, :default => false
13
13
 
14
- desc "generate DIRECTORY", "Generate docs"
14
+ desc "generate [DIRECTORIES...]", "Generate docs"
15
15
  method_option :output_dir, :aliases => ['-o'], :type => :string, :required => true,
16
16
  :banner => "Directory to output docs to"
17
17
  method_option :project, :aliases => ['-p'], :type => :string,
18
18
  :banner => "SproutCore Project Name"
19
- def generate(directory)
20
-
19
+ def generate(*directories)
20
+ raise "At least one directory is required" if directories.empty?
21
21
  puts "Generating Documentation...\n\n"
22
- update_repo
23
- generator(directory).generate
22
+ update_repo(directories)
23
+ generator(directories).generate
24
24
  end
25
25
 
26
- desc "preview DIRECTORY", "Preview docs output"
26
+ desc "preview [DIRECTORIES...]", "Preview docs output"
27
27
  method_option :output_dir, :aliases => ['-o'], :type => :string, :required => false,
28
28
  :banner => "Directory to output docs to (defaults to a tempfile)"
29
- def preview(directory)
29
+ def preview(*directories)
30
+ raise "At least one directory is required" if directories.empty?
30
31
  puts "Building Documentation Preview...\n\n"
31
- update_repo
32
- with_temp_output{ generator(directory).preview }
32
+ update_repo(directories)
33
+ with_temp_output{ generator(directories).preview }
33
34
  end
34
35
 
35
36
  private
@@ -38,18 +39,20 @@ module ScDocs
38
39
  @output_dir || options[:output_dir]
39
40
  end
40
41
 
41
- def generator(directory)
42
+ def generator(directories)
42
43
  opts = options.merge(:output_dir => output_dir)
43
- (opts[:template] ? HtmlGenerator : ScGenerator).new(directory, opts)
44
+ (opts[:template] ? HtmlGenerator : ScGenerator).new(directories, opts)
44
45
  end
45
46
 
46
- def update_repo
47
+ def update_repo(directories)
47
48
  return unless options[:update]
49
+ return unless directories.length == 1
50
+ directory = directories[0]
48
51
 
49
52
  puts "Updating repository...\n\n" if options[:verbose]
50
53
 
51
- if File.directory? input_dir and File.directory? "#{input_dir}/.git"
52
- Dir.chdir input_dir do
54
+ if File.directory? directory and File.directory? "#{directory}/.git"
55
+ Dir.chdir directory do
53
56
  run("git fetch", print_output)
54
57
  run("git rebase origin master", print_output)
55
58
  end
@@ -5,24 +5,30 @@ require 'sc_docs/server'
5
5
  module ScDocs
6
6
  class Generator
7
7
 
8
- attr_reader :input_dir
8
+ attr_reader :input_dirs
9
9
 
10
10
  attr_reader :output_dir
11
11
 
12
12
  attr_reader :template
13
13
 
14
+ attr_reader :smartdown
15
+
14
16
  attr_reader :verbose
15
17
 
16
- def initialize(directory, options={})
17
- @input_dir = File.expand_path(directory)
18
+ def initialize(directories, options={})
19
+ @input_dirs = directories.map{|d| File.expand_path(d) }
18
20
  @output_dir = File.expand_path(options[:output_dir])
21
+ @smartdown = false
19
22
  @verbose = options[:verbose]
20
23
  end
21
24
 
22
25
  def command
23
26
  @command ||= begin
24
27
  run_js_path = File.expand_path("../../../vendor/jsdoc/app/run.js", __FILE__)
25
- command = "#{run_js_path} -apsv -r=20 -t=\"#{template}\" \"#{input_dir}\" -d=\"#{output_dir}\" -f=class.js -l=Docs.Class"
28
+ command = "#{run_js_path} -a -v -r=20 -t=\"#{template}\" #{input_dirs.map{|d| %{"#{d}"} }.join(' ')} " <<
29
+ "-d=\"#{output_dir}\" -f=class.js -l=Docs.Class"
30
+ command << " --smartdown" if smartdown
31
+ command
26
32
  end
27
33
  end
28
34
 
@@ -71,11 +77,19 @@ module ScDocs
71
77
 
72
78
  class HtmlGenerator < Generator
73
79
 
74
- def initialize(directory, options={})
80
+ def initialize(directories, options={})
75
81
  super
76
- @template = File.expand_path(options[:template])
82
+ @template = lookup_template(options[:template])
83
+ @smartdown = true
77
84
  end
78
85
 
86
+ private
87
+
88
+ def lookup_template(name)
89
+ path = File.expand_path("../templates/#{name}", __FILE__)
90
+ File.exist?(path) ? path : File.expand_path(name)
91
+ end
92
+
79
93
  end
80
94
 
81
95
  class ScGenerator < Generator
@@ -84,7 +98,7 @@ module ScDocs
84
98
 
85
99
  attr_reader :project_name
86
100
 
87
- def initialize(directory, options={})
101
+ def initialize(directories, options={})
88
102
  super
89
103
  @template = File.expand_path("../templates/sc_fixture", __FILE__)
90
104
  @app_dir = File.expand_path(options[:output_dir])
@@ -6,7 +6,7 @@
6
6
  <meta name="description" content="A framework for building fast, desktop caliber web applications." />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
8
  <link rel="stylesheet" href="/css/api.css" />
9
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
9
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
10
10
  <script src="/js/jquery-bbq.js"></script>
11
11
  <script src="/js/api.js"></script>
12
12
  <script src="/js/lib/modernizr-1.7.min.js"></script>
@@ -15,423 +15,419 @@
15
15
  <![endif]-->
16
16
  </head>
17
17
 
18
- <body id="docs">
19
- <!-- ============================== header ================================= -->
20
- <!-- begin static/header.html -->
21
- {+include("static/header.html")+}
22
- <!-- end static/header.html -->
18
+ <body id="docs">
19
+ <!-- ============================== header ================================= -->
20
+ <!-- begin static/header.html -->
21
+ {+include("static/header.html")+}
22
+ <!-- end static/header.html -->
23
23
 
24
24
  <!-- ============================== classes index ============================ -->
25
-
26
- <section id="list">
27
- <header>
28
- <form action="#" role="search">
29
- <input type="text" />
30
- <a href="#" class="search-reset"></a>
31
- </form>
32
- </header>
33
- <div>
34
- {+publish.classesIndex+}
35
- </div>
25
+
26
+ <section id="list">
27
+ <header>
28
+ <form action="#" role="search">
29
+ <input type="text" />
30
+ <a href="#" class="search-reset"></a>
31
+ </form>
32
+ </header>
33
+ <div>
34
+ {+publish.classesIndex+}
35
+ </div>
36
36
  </section>
37
- <footer>
38
- <a href="http://groups.google.com/group/sproutcore" class="button secondary">SUBSCRIBE TO MAILING LIST</a>
39
- </footer>
40
-
41
- <div role="main">
37
+ <footer>
38
+ <a href="http://groups.google.com/group/sproutcore" class="button secondary">SUBSCRIBE TO MAILING LIST</a>
39
+ </footer>
40
+
41
+ <div role="main">
42
42
  <section id="documentation">
43
43
  <!-- ============================== class title ============================ -->
44
- <h1 class="classTitle">
45
- {!
46
- var classType = "";
47
-
48
- if (data.isBuiltin()) {
49
- classType += "Built-In ";
50
- }
51
-
52
- if (data.isNamespace) {
53
- if (data.is('FUNCTION')) {
54
- classType += "Function: ";
55
- }
56
- classType += "Namespace: ";
57
- }
58
- else {
59
- classType += "Class: ";
60
- }
61
- !}
62
- {+classType+}{+data.alias+}
63
- </h1>
64
-
65
- <!-- ============================== class summary ========================== -->
66
- <p class="description">
67
- <span class="extends">
68
- <if test="data.augments.length"><br />Extends
69
- {+
70
- data.augments
71
- .sort()
72
- .map(
73
- function($) { return new Link().toSymbol($); }
74
- )
75
- .join(", ")
76
- +}.<br />
77
- </if>
78
- </span>
79
-
80
- {+data.classDesc+}
81
-
82
- <if test="!data.isBuiltin()">{# isn't defined in any file #}
83
- <span class="definedin">Defined in: {+new Link().toSrc(data.srcFile)+}.</span>
84
- </if>
85
- </p>
44
+ <h1 class="classTitle">
45
+ {!
46
+ var classType = "";
47
+
48
+ if (data.isBuiltin()) {
49
+ classType += "Built-In ";
50
+ }
51
+
52
+ if (data.isNamespace) {
53
+ if (data.is('FUNCTION')) {
54
+ classType += "Function: ";
55
+ }
56
+ classType += "Namespace: ";
57
+ }
58
+ else {
59
+ classType += "Class: ";
60
+ }
61
+ !}
62
+ {+classType+}{+data.alias+}
63
+ </h1>
64
+
65
+ <!-- ============================== class summary ========================== -->
66
+ <p class="description">
67
+ <span class="extends">
68
+ <if test="data.augments.length"><br />Extends
69
+ {+
70
+ data.augments
71
+ .sort()
72
+ .map(
73
+ function($) { return new Link().toSymbol($); }
74
+ )
75
+ .join(", ")
76
+ +}.<br />
77
+ </if>
78
+ </span>
79
+
80
+ {+data.classDesc+}
81
+
82
+ <if test="!data.isBuiltin()">{# isn't defined in any file #}
83
+ <span class="definedin">Defined in: {+new Link().toSrc(data.srcFile)+}.</span>
84
+ </if>
85
+ </p>
86
86
 
87
87
 
88
88
  <!-- ============================== properties summary ===================== -->
89
- <if test="data.properties.length">
90
- {! var ownProperties = data.properties.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
91
- <if test="ownProperties.length">
92
- <h2>Field Summary</h2>
93
- <div id="properties">
89
+ {! var ownProperties = []; !}
90
+ <if test="data.properties.length">
91
+ {! ownProperties = data.properties.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
92
+ <h2>Field Summary</h2>
93
+ <div id="properties">
94
+ <if test="ownProperties.length">
94
95
  <ul>
95
- <for each="member" in="ownProperties">
96
- <li>
97
- <if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if>{+new Link().toSymbol(member.alias).withText(member.name)+}
98
- </li>
99
- </for>
96
+ <for each="member" in="ownProperties">
97
+ <li>
98
+ <if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if>{+new Link().toSymbol(member.alias).withText(member.name)+}
99
+ </li>
100
+ </for>
100
101
  </ul>
101
- </if>
102
-
103
- <if test="data.inheritsFrom.length">
104
- <dl class="inheritsList">
105
- {!
106
- var borrowedMembers = data.properties.filter(function($) {return $.memberOf != data.alias});
107
-
108
- var contributers = [];
109
- borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
110
- for (var i = 0, l = contributers.length; i < l; i++) {
111
- output +=
112
- "<dt>Fields borrowed from class "+new Link().toSymbol(contributers[i])+": </dt>"
113
- +
114
- "<dd>" +
115
- borrowedMembers
116
- .filter(
117
- function($) { return $.memberOf == contributers[i] }
118
- )
119
- .sort(makeSortby("name"))
120
- .map(
121
- function($) { return new Link().toSymbol($.alias).withText($.name) }
122
- )
123
- .join(", ")
124
- +
125
- "</dd>";
126
- }
127
- !}
128
- </dl>
102
+ </if>
103
+
104
+ <if test="data.inheritsFrom.length">
105
+ {!
106
+ var borrowedMembers = data.properties.filter(function($) {return $.memberOf != data.alias}),
107
+ contributors = [];
108
+ borrowedMembers.map(function($) { if (contributors.indexOf($.memberOf) === -1) contributors.push($.memberOf) });
109
+ !}
110
+ <if test="contributors.length">
111
+ <dl class="inheritsList">
112
+ <for each="contributor" in="contributors">
113
+ <dt>Fields borrowed from class {+new Link().toSymbol(contributor)+}: </dt>
114
+ <dd>{+ borrowedMembers.filter(function($) { return $.memberOf == contributor })
115
+ .sort(makeSortby("name"))
116
+ .map(function($) { return new Link().toSymbol($.alias).withText($.name) })
117
+ .join(", ") +}</dd>
118
+ </for>
119
+ </dl>
120
+ </if>
121
+ </if>
129
122
  </div>
130
- </if>
131
- </if>
123
+ </if>
132
124
 
133
125
 
134
126
 
135
127
 
136
128
  <!-- ============================== methods summary ======================== -->
137
- <if test="data.methods.length">
138
- {! var ownMethods = data.methods.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
139
- <if test="ownMethods.length">
140
- <h2>Methods</h2>
129
+ {!
130
+ var ownMethods = data.methods.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")),
131
+ classMethods = ownMethods.filter(function($){return !$.alias.match(/#/)}),
132
+ instanceMethods = ownMethods.filter(function($){return $.alias.match(/#/)}),
133
+ methodGroups = [["Class", classMethods], ["Instance", instanceMethods ]];
134
+ !}
135
+ <for each="group" in="methodGroups">
136
+ {! var name = group[0], methods = group[1]; !}
137
+ <if test="methods.length">
138
+ <h2>{+name+} Methods</h2>
141
139
  <ul class="methods">
142
- <for each="member" in="ownMethods">
143
- <li class="fixedFont">{+new Link().toSymbol(member.alias).withText(member.name.replace(/\^\d+$/, '')) +}</li>
144
- </for>
140
+ <for each="member" in="methods">
141
+ <li class="fixedFont">{+new Link().toSymbol(member.alias).withText(member.name.replace(/\^\d+$/, '')) +}</li>
142
+ </for>
145
143
  </ul>
146
- </if>
147
-
148
-
149
- </if>
144
+ </if>
145
+ </for>
150
146
  <!-- ============================== events summary ======================== -->
151
- <if test="data.events.length">
152
- {! var ownEvents = data.events.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
153
- <if test="ownEvents.length">
154
- <table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class {+data.alias+}.">
155
- <caption>Event Summary</caption>
156
- <thead>
157
- <tr>
158
- <th scope="col">Event Attributes</th>
159
- <th scope="col">Event Name and Description</th>
160
- </tr>
161
- </thead>
162
- <tbody>
163
- <for each="member" in="ownEvents">
164
- <tr>
165
- <td class="attributes">
166
- </td>
167
- <td class="nameDescription">
168
- <div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>{+makeSignature(member.params)+}
169
- </div>
170
- <div class="description">{+resolveLinks(summarize(member.desc))+}</div>
171
- </td>
172
- </tr>
173
- </for>
174
- </tbody>
175
- </table>
176
- </if>
177
-
178
-
179
- </if>
180
-
181
-
182
-
183
- <!-- ============================== field details ========================== -->
184
- <if test="defined(ownProperties) && ownProperties.length">
185
- <h2>
186
- Field Detail
187
- </h2>
188
- <for each="member" in="ownProperties">
189
- <a name="{+Link.symbolNameToLinkName(member)+}"> </a>
190
- <if test="member.type"><span class="light">{+new Link().toSymbol(member.type)+}</span></if>
191
- <span class="property"><if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b></span>
192
-
193
- <div class="description">
194
- {+resolveLinks(member.desc)+}
195
- <if test="member.srcFile != data.srcFile">
196
- <br />
197
- <span class="definedin">Defined in: </span> {+new Link().toSrc(member.srcFile)+}.
198
- </if>
199
- <if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
200
- </div>
201
-
202
- <if test="member.example.length">
203
- <for each="example" in="member.example">
204
- <pre class="code">{+example+}</pre>
205
- </for>
206
- </if>
207
-
208
- <if test="member.deprecated">
209
- <dl class="detailList">
210
- <dt class="heading">Deprecated:</dt>
211
- <dt>
212
- {+ resolveLinks(member.deprecated) +}
213
- </dt>
214
- </dl>
215
- </if>
216
- <if test="member.since">
217
- <dl class="detailList">
218
- <dt class="heading">Since:</dt>
219
- <dd>{+ member.since +}</dd>
220
- </dl>
221
- </if>
222
- <if test="member.see.length">
223
- <dl class="detailList">
224
- <dt class="heading">See:</dt>
225
- <for each="item" in="member.see">
226
- <dd>{+ new Link().toSymbol(item) +}</dd>
227
- </for>
228
- </dl>
229
- </if>
230
- <if test="member.defaultValue">
231
- <dl class="detailList">
232
- <dt class="heading">Default Value:</dt>
233
- <dd>
234
- {+resolveLinks(member.defaultValue)+}
235
- </dd>
236
- </dl>
237
- </if>
238
-
239
- </for>
240
- </if>
241
-
242
-
243
- <!-- ============================== method details ========================= -->
244
- <if test="defined(ownMethods) && ownMethods.length">
245
- <h2>Method Detail</h2>
246
- <for each="member" in="ownMethods">
247
- <a name="{+Link.symbolNameToLinkName(member)+}"> </a>
248
- <div class="fixedFont">
249
-
250
- <span class="methodname">{+member.name.replace(/\^\d+$/, '')+}</span>
251
- </div>
252
- <div class="description">
253
- {+resolveLinks(member.desc)+}
254
- <if test="member.srcFile != data.srcFile">
255
- <br />
256
- <span class="definedin">Defined in: {+new Link().toSrc(member.srcFile)+}.</span>
257
- </if>
258
- <if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
259
- </div>
260
-
261
- <if test="member.example.length">
262
- <for each="example" in="member.example">
263
- <pre class="code">{+example+}</pre>
264
- </for>
265
- </if>
266
-
267
- <if test="member.params.length">
268
- <dl class="parameters">
269
- <dt class="heading">Parameters:</dt>
270
- <for each="item" in="member.params">
271
- <dt>
272
- {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}<b>{+item.name+}</b>
273
- <if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
274
- </dt>
275
- <dd>{+resolveLinks(item.desc)+}</dd>
276
- </for>
277
- </dl>
278
- </if>
279
- <if test="member.deprecated">
280
- <dl class="detailList">
281
- <dt class="heading">Deprecated:</dt>
282
- <dt>
283
- {+ resolveLinks(member.deprecated) +}
284
- </dt>
285
- </dl>
286
- </if>
287
- <if test="member.since">
288
- <dl class="detailList">
289
- <dt class="heading">Since:</dt>
290
- <dd>{+ member.since +}</dd>
291
- </dl>
292
- </dl>
293
- </if>
294
- <if test="member.exceptions.length">
295
- <dl class="detailList">
296
- <dt class="heading">Throws:</dt>
297
- <for each="item" in="member.exceptions">
298
- <dt>
299
- {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+} <b>{+item.name+}</b>
300
- </dt>
301
- <dd>{+resolveLinks(item.desc)+}</dd>
302
- </for>
303
- </dl>
304
- </if>
305
- <if test="member.returns.length">
306
- <dl class="returns">
307
- <dt class="heading">Returns:</dt>
308
- <for each="item" in="member.returns">
309
- <dd>{+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
310
- </for>
311
- </dl>
312
- </if>
313
- <if test="member.requires.length">
314
- <dl class="detailList">
315
- <dt class="heading">Requires:</dt>
316
- <for each="item" in="member.requires">
317
- <dd>{+ resolveLinks(item) +}</dd>
318
- </for>
319
- </dl>
320
- </if>
321
- <if test="member.see.length">
322
- <dl class="detailList">
323
- <dt class="heading">See:</dt>
324
- <for each="item" in="member.see">
325
- <dd>{+ new Link().toSymbol(item) +}</dd>
326
- </for>
327
- </dl>
328
- </if>
329
-
330
- </for>
331
- </if>
332
-
333
- <!-- ============================== event details ========================= -->
334
- <if test="defined(ownEvents) && ownEvents.length">
335
- <div class="sectionTitle">
336
- Event Detail
337
- </div>
338
- <for each="member" in="ownEvents">
339
- <a name="event:{+Link.symbolNameToLinkName(member)+}"> </a>
340
- <div class="fixedFont">
341
-
342
- <if test="member.type"><span class="light">{+new Link().toSymbol(member.type)+}</span></if>
343
- <if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b>{+makeSignature(member.params)+}
344
-
345
- </div>
346
- <div class="description">
347
- {+resolveLinks(member.desc)+}
348
- <if test="member.srcFile != data.srcFile">
349
- <br />
350
- <span class="definedin">Defined in: {+new Link().toSrc(member.srcFile)+}.</span>
351
- </if>
352
- <if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
353
- </div>
354
-
355
- <if test="member.example.length">
356
- <for each="example" in="member.example">
357
- <pre class="code">{+example+}</pre>
358
- </for>
359
- </if>
360
-
361
- <if test="member.params.length">
362
- <dl class="detailList">
363
- <dt class="heading">Parameters:</dt>
364
- <for each="item" in="member.params">
365
- <dt>
366
- {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}<b>{+item.name+}</b>
367
- <if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
368
- </dt>
369
- <dd>{+ resolveLinks(item.desc) +}</dd>
370
- </for>
371
- </dl>
372
- </if>
373
- <if test="member.deprecated">
374
- <dl class="detailList">
375
- <dt class="heading">Deprecated:</dt>
376
- <dt>
377
- {+ resolveLinks(member.deprecated) +}
378
- </dt>
379
- </dl>
380
- </if>
381
- <if test="member.since">
382
- <dl class="detailList">
383
- <dt class="heading">Since:</dt>
384
- <dd>{+ member.since +}</dd>
385
- </dl>
386
- </dl>
387
- </if>
388
- <if test="member.exceptions.length">
389
- <dl class="detailList">
390
- <dt class="heading">Throws:</dt>
391
- <for each="item" in="member.exceptions">
392
- <dt>
393
- {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+} <b>{+item.name+}</b>
394
- </dt>
395
- <dd>{+ resolveLinks(item.desc) +}</dd>
396
- </for>
397
- </dl>
398
- </if>
399
- <if test="member.returns.length">
400
- <dl class="detailList">
401
- <dt class="heading">Returns:</dt>
402
- <for each="item" in="member.returns">
403
- <dd>{+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
404
- </for>
405
- </dl>
406
- </if>
407
- <if test="member.requires.length">
408
- <dl class="detailList">
409
- <dt class="heading">Requires:</dt>
410
- <for each="item" in="member.requires">
411
- <dd>{+ resolveLinks(item) +}</dd>
412
- </for>
413
- </dl>
414
- </if>
415
- <if test="member.see.length">
416
- <dl class="detailList">
417
- <dt class="heading">See:</dt>
418
- <for each="item" in="member.see">
419
- <dd>{+ new Link().toSymbol(item) +}</dd>
420
- </for>
421
- </dl>
422
- </if>
423
-
424
- </for>
425
- </if>
426
-
427
-
428
-
147
+ <if test="data.events.length">
148
+ {! var ownEvents = data.events.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
149
+ <if test="ownEvents.length">
150
+ <table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class {+data.alias+}.">
151
+ <caption>Event Summary</caption>
152
+ <thead>
153
+ <tr>
154
+ <th scope="col">Event Attributes</th>
155
+ <th scope="col">Event Name and Description</th>
156
+ </tr>
157
+ </thead>
158
+ <tbody>
159
+ <for each="member" in="ownEvents">
160
+ <tr>
161
+ <td class="attributes">
162
+ </td>
163
+ <td class="nameDescription">
164
+ <div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>{+makeSignature(member.params)+}
165
+ </div>
166
+ <div class="description">{+resolveLinks(summarize(member.desc))+}</div>
167
+ </td>
168
+ </tr>
169
+ </for>
170
+ </tbody>
171
+ </table>
172
+ </if>
173
+
174
+
175
+ </if>
176
+
177
+
178
+
179
+ <!-- ============================== field details ========================== -->
180
+ <if test="ownProperties.length">
181
+ <h2>
182
+ Field Detail
183
+ </h2>
184
+ <for each="member" in="ownProperties">
185
+ <a name="{+Link.symbolNameToLinkName(member)+}"> </a>
186
+ <if test="member.type"><span class="light">{+new Link().toSymbol(member.type)+}</span></if>
187
+ <span class="property"><if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b></span>
188
+
189
+ <div class="description">
190
+ {+resolveLinks(member.desc)+}
191
+ <if test="member.srcFile != data.srcFile">
192
+ <br />
193
+ <span class="definedin">Defined in: </span> {+new Link().toSrc(member.srcFile)+}.
194
+ </if>
195
+ <if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
196
+ </div>
197
+
198
+ <if test="member.example.length">
199
+ <for each="example" in="member.example">
200
+ <pre class="code">{+example+}</pre>
201
+ </for>
202
+ </if>
203
+
204
+ <if test="member.deprecated">
205
+ <dl class="detailList">
206
+ <dt class="heading">Deprecated:</dt>
207
+ <dt>
208
+ {+ resolveLinks(member.deprecated) +}
209
+ </dt>
210
+ </dl>
211
+ </if>
212
+ <if test="member.since">
213
+ <dl class="detailList">
214
+ <dt class="heading">Since:</dt>
215
+ <dd>{+ member.since +}</dd>
216
+ </dl>
217
+ </if>
218
+ <if test="member.see.length">
219
+ <dl class="detailList">
220
+ <dt class="heading">See:</dt>
221
+ <for each="item" in="member.see">
222
+ <dd>{+ new Link().toSymbol(item) +}</dd>
223
+ </for>
224
+ </dl>
225
+ </if>
226
+ <if test="member.defaultValue">
227
+ <dl class="detailList">
228
+ <dt class="heading">Default Value:</dt>
229
+ <dd>
230
+ {+resolveLinks(member.defaultValue)+}
231
+ </dd>
232
+ </dl>
233
+ </if>
234
+
235
+ </for>
236
+ </if>
237
+
238
+
239
+ <!-- ============================== method details ========================= -->
240
+ <for each="group" in="methodGroups">
241
+ {! var name = group[0], methods = group[1]; !}
242
+ <if test="methods.length">
243
+ <h2>{+name+} Method Detail</h2>
244
+ <for each="member" in="methods">
245
+ <a name="{+Link.symbolNameToLinkName(member)+}"> </a>
246
+ <div class="fixedFont">
247
+ <span class="methodname">{+member.name.replace(/\^\d+$/, '')+}</span>
248
+ </div>
249
+ <div class="description">
250
+ {+resolveLinks(member.desc)+}
251
+ <if test="member.srcFile != data.srcFile">
252
+ <br />
253
+ <span class="definedin">Defined in: {+new Link().toSrc(member.srcFile)+}.</span>
254
+ </if>
255
+ <if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
256
+ </div>
257
+
258
+ <if test="member.example.length">
259
+ <for each="example" in="member.example">
260
+ <pre class="code">{+example+}</pre>
261
+ </for>
262
+ </if>
263
+
264
+ <if test="member.params.length">
265
+ <dl class="parameters">
266
+ <dt class="heading">Parameters:</dt>
267
+ <for each="item" in="member.params">
268
+ <dt>
269
+ {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}<b>{+item.name+}</b>
270
+ <if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
271
+ </dt>
272
+ <dd>{+resolveLinks(item.desc)+}</dd>
273
+ </for>
274
+ </dl>
275
+ </if>
276
+ <if test="member.deprecated">
277
+ <dl class="detailList">
278
+ <dt class="heading">Deprecated:</dt>
279
+ <dt>
280
+ {+ resolveLinks(member.deprecated) +}
281
+ </dt>
282
+ </dl>
283
+ </if>
284
+ <if test="member.since">
285
+ <dl class="detailList">
286
+ <dt class="heading">Since:</dt>
287
+ <dd>{+ member.since +}</dd>
288
+ </dl>
289
+ </dl>
290
+ </if>
291
+ <if test="member.exceptions.length">
292
+ <dl class="detailList">
293
+ <dt class="heading">Throws:</dt>
294
+ <for each="item" in="member.exceptions">
295
+ <dt>
296
+ {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+} <b>{+item.name+}</b>
297
+ </dt>
298
+ <dd>{+resolveLinks(item.desc)+}</dd>
299
+ </for>
300
+ </dl>
301
+ </if>
302
+ <if test="member.returns.length">
303
+ <dl class="returns">
304
+ <dt class="heading">Returns:</dt>
305
+ <for each="item" in="member.returns">
306
+ <dd>{+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
307
+ </for>
308
+ </dl>
309
+ </if>
310
+ <if test="member.requires.length">
311
+ <dl class="detailList">
312
+ <dt class="heading">Requires:</dt>
313
+ <for each="item" in="member.requires">
314
+ <dd>{+ resolveLinks(item) +}</dd>
315
+ </for>
316
+ </dl>
317
+ </if>
318
+ <if test="member.see.length">
319
+ <dl class="detailList">
320
+ <dt class="heading">See:</dt>
321
+ <for each="item" in="member.see">
322
+ <dd>{+ new Link().toSymbol(item) +}</dd>
323
+ </for>
324
+ </dl>
325
+ </if>
326
+
327
+ </for>
328
+ </if>
329
+ </for>
330
+
331
+ <!-- ============================== event details ========================= -->
332
+ <if test="defined(ownEvents) && ownEvents.length">
333
+ <div class="sectionTitle">
334
+ Event Detail
335
+ </div>
336
+ <for each="member" in="ownEvents">
337
+ <a name="event:{+Link.symbolNameToLinkName(member)+}"> </a>
338
+ <div class="fixedFont">
339
+ <if test="member.type"><span class="light">{+new Link().toSymbol(member.type)+}</span></if>
340
+ <if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b>{+makeSignature(member.params)+}
341
+ </div>
342
+ <div class="description">
343
+ {+resolveLinks(member.desc)+}
344
+ <if test="member.srcFile != data.srcFile">
345
+ <br />
346
+ <span class="definedin">Defined in: {+new Link().toSrc(member.srcFile)+}.</span>
347
+ </if>
348
+ <if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
349
+ </div>
350
+
351
+ <if test="member.example.length">
352
+ <for each="example" in="member.example">
353
+ <pre class="code">{+example+}</pre>
354
+ </for>
355
+ </if>
356
+
357
+ <if test="member.params.length">
358
+ <dl class="detailList">
359
+ <dt class="heading">Parameters:</dt>
360
+ <for each="item" in="member.params">
361
+ <dt>
362
+ {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}<b>{+item.name+}</b>
363
+ <if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
364
+ </dt>
365
+ <dd>{+ resolveLinks(item.desc) +}</dd>
366
+ </for>
367
+ </dl>
368
+ </if>
369
+ <if test="member.deprecated">
370
+ <dl class="detailList">
371
+ <dt class="heading">Deprecated:</dt>
372
+ <dt>
373
+ {+ resolveLinks(member.deprecated) +}
374
+ </dt>
375
+ </dl>
376
+ </if>
377
+ <if test="member.since">
378
+ <dl class="detailList">
379
+ <dt class="heading">Since:</dt>
380
+ <dd>{+ member.since +}</dd>
381
+ </dl>
382
+ </dl>
383
+ </if>
384
+ <if test="member.exceptions.length">
385
+ <dl class="detailList">
386
+ <dt class="heading">Throws:</dt>
387
+ <for each="item" in="member.exceptions">
388
+ <dt>
389
+ {+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+} <b>{+item.name+}</b>
390
+ </dt>
391
+ <dd>{+ resolveLinks(item.desc) +}</dd>
392
+ </for>
393
+ </dl>
394
+ </if>
395
+ <if test="member.returns.length">
396
+ <dl class="detailList">
397
+ <dt class="heading">Returns:</dt>
398
+ <for each="item" in="member.returns">
399
+ <dd>{+((item.type)?"<span class=\"light fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
400
+ </for>
401
+ </dl>
402
+ </if>
403
+ <if test="member.requires.length">
404
+ <dl class="detailList">
405
+ <dt class="heading">Requires:</dt>
406
+ <for each="item" in="member.requires">
407
+ <dd>{+ resolveLinks(item) +}</dd>
408
+ </for>
409
+ </dl>
410
+ </if>
411
+ <if test="member.see.length">
412
+ <dl class="detailList">
413
+ <dt class="heading">See:</dt>
414
+ <for each="item" in="member.see">
415
+ <dd>{+ new Link().toSymbol(item) +}</dd>
416
+ </for>
417
+ </dl>
418
+ </if>
419
+
420
+ </for>
421
+ </if>
422
+
423
+
424
+
429
425
  <!-- ============================== footer ================================= -->
430
- <div class="fineprint" style="clear:both">
431
- <if test="JSDOC.opt.D.copyright">&copy;{+JSDOC.opt.D.copyright+}<br /></if>
432
- Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> {+JSDOC.VERSION+} on {+new Date()+}
433
- </div>
426
+ <div class="fineprint" style="clear:both">
427
+ <if test="JSDOC.opt.D.copyright">&copy;{+JSDOC.opt.D.copyright+}<br /></if>
428
+ Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> {+JSDOC.VERSION+} on {+new Date()+}
429
+ </div>
434
430
  </section>
435
- </div>
436
- </body>
431
+ </div>
432
+ </body>
437
433
  </html>