sc-docs 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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>