jsduck 4.0.0 → 4.0.1
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/README.md +5 -0
- data/jsduck.gemspec +2 -2
- data/lib/jsduck/aggregator.rb +8 -2
- data/lib/jsduck/app.rb +2 -1
- data/lib/jsduck/doc_type.rb +2 -0
- data/lib/jsduck/meta_tag.rb +2 -0
- data/lib/jsduck/meta_tag_renderer.rb +34 -0
- data/lib/jsduck/options.rb +2 -1
- data/lib/jsduck/override.rb +4 -8
- data/lib/jsduck/renderer.rb +5 -41
- data/lib/jsduck/signature_renderer.rb +92 -0
- data/lib/jsduck/tag/new.rb +13 -0
- metadata +4 -2
data/README.md
CHANGED
@@ -37,6 +37,10 @@ install the header files for compiling extension modules for Ruby 1.9.
|
|
37
37
|
For Debian systems you'll need the `ruby1.9-dev` package. For Red Hat
|
38
38
|
/ CentOS / Fedora use the `ruby-devel` package.
|
39
39
|
|
40
|
+
In **OSX Mountain Lion** the compilation of `therubyracer` dependency
|
41
|
+
often fails for so far unknown reasons. Most users have found a
|
42
|
+
solution in upgrading to Ruby 1.9 using [RVM][].
|
43
|
+
|
40
44
|
For **Windows** users out there, you can download the binary version,
|
41
45
|
which includes Ruby interpreter and all dependencies bundled in a
|
42
46
|
single .exe file. Grab it from the [download page][].
|
@@ -57,6 +61,7 @@ most sensible place to put it). Now you're ready to install JSDuck:
|
|
57
61
|
|
58
62
|
> gem install jsduck
|
59
63
|
|
64
|
+
[RVM]: https://rvm.io/
|
60
65
|
[download page]: https://github.com/senchalabs/jsduck/downloads
|
61
66
|
[libs download]: https://github.com/stereobooster/therubyracer/downloads
|
62
67
|
|
data/jsduck.gemspec
CHANGED
@@ -2,8 +2,8 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.required_rubygems_version = ">= 1.3.5"
|
3
3
|
|
4
4
|
s.name = 'jsduck'
|
5
|
-
s.version = '4.0.
|
6
|
-
s.date = '2012-08-
|
5
|
+
s.version = '4.0.1'
|
6
|
+
s.date = '2012-08-21'
|
7
7
|
s.summary = "Simple JavaScript Duckumentation generator"
|
8
8
|
s.description = "Documentation generator for Sencha JS frameworks"
|
9
9
|
s.homepage = "https://github.com/senchalabs/jsduck"
|
data/lib/jsduck/aggregator.rb
CHANGED
@@ -232,9 +232,15 @@ module JsDuck
|
|
232
232
|
Enum.new(@classes).process_all!
|
233
233
|
end
|
234
234
|
|
235
|
-
# Processes all overrides
|
235
|
+
# Processes all overrides.
|
236
|
+
# Returns list of override classes.
|
236
237
|
def process_overrides
|
237
|
-
Override.new(@classes
|
238
|
+
Override.new(@classes).process_all!.map do |cls|
|
239
|
+
# discard each override class
|
240
|
+
@classes.delete(cls[:name])
|
241
|
+
@documentation.delete(cls)
|
242
|
+
cls
|
243
|
+
end
|
238
244
|
end
|
239
245
|
|
240
246
|
# Are we dealing with ExtJS 4?
|
data/lib/jsduck/app.rb
CHANGED
@@ -130,7 +130,8 @@ module JsDuck
|
|
130
130
|
agr.append_ext4_event_options
|
131
131
|
end
|
132
132
|
agr.process_enums
|
133
|
-
|
133
|
+
# Ignore override classes after applying them to actual classes
|
134
|
+
@opts.external_classes += agr.process_overrides.map {|o| o[:name] }
|
134
135
|
agr.result
|
135
136
|
end
|
136
137
|
|
data/lib/jsduck/doc_type.rb
CHANGED
data/lib/jsduck/meta_tag.rb
CHANGED
@@ -17,6 +17,8 @@ module JsDuck
|
|
17
17
|
#
|
18
18
|
# {:long => "something", :short => "SOM"}
|
19
19
|
#
|
20
|
+
# Additionally the hash can contain a :tooltip which is the text
|
21
|
+
# to be shown when the signature bubble is hovered over in docs.
|
20
22
|
attr_reader :signature
|
21
23
|
|
22
24
|
# True to include all lines up to next @tag as part of this meta-tag
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'jsduck/meta_tag_registry'
|
2
|
+
|
3
|
+
module JsDuck
|
4
|
+
|
5
|
+
# Performs the rendering of meta tags.
|
6
|
+
class MetaTagRenderer
|
7
|
+
|
8
|
+
# Renders full meta tags of a particular section.
|
9
|
+
#
|
10
|
+
# Returns array of rendered HTML or nil if no meta data.
|
11
|
+
def self.render(meta_data, position)
|
12
|
+
return if meta_data.size == 0
|
13
|
+
|
14
|
+
MetaTagRegistry.instance.tags(position).map do |tag|
|
15
|
+
meta_data[tag.key]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Renders the meta-tag signatures for a class member.
|
20
|
+
# Returns a string.
|
21
|
+
def self.render_signature(member)
|
22
|
+
html = []
|
23
|
+
MetaTagRegistry.instance.signatures.each do |s|
|
24
|
+
if member[:meta][s[:key]]
|
25
|
+
title = s[:tooltip] ? "title='#{s[:tooltip]}'" : ""
|
26
|
+
html << "<strong class='#{s[:key]} signature' #{title}>#{s[:long]}</strong>"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
html.join
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/lib/jsduck/options.rb
CHANGED
@@ -79,7 +79,7 @@ module JsDuck
|
|
79
79
|
@ext4_events = nil
|
80
80
|
@meta_tag_paths = []
|
81
81
|
|
82
|
-
@version = "4.0.
|
82
|
+
@version = "4.0.1"
|
83
83
|
|
84
84
|
# Customizing output
|
85
85
|
@title = "Documentation - JSDuck"
|
@@ -138,6 +138,7 @@ module JsDuck
|
|
138
138
|
|
139
139
|
reg = MetaTagRegistry.new
|
140
140
|
reg.load([:builtins] + @meta_tag_paths)
|
141
|
+
reg[:new].create_tooltip!(@imports, @new_since)
|
141
142
|
MetaTagRegistry.instance = reg
|
142
143
|
end
|
143
144
|
|
data/lib/jsduck/override.rb
CHANGED
@@ -1,27 +1,23 @@
|
|
1
1
|
module JsDuck
|
2
2
|
|
3
3
|
class Override
|
4
|
-
def initialize(classes_hash
|
4
|
+
def initialize(classes_hash)
|
5
5
|
@classes_hash = classes_hash
|
6
|
-
@classes_array = classes_array
|
7
6
|
end
|
8
7
|
|
9
8
|
# Applies all override classes to target classes
|
9
|
+
# Returns all the processed override classes.
|
10
10
|
def process_all!
|
11
11
|
overrides = []
|
12
12
|
|
13
|
-
@
|
13
|
+
@classes_hash.each_value do |cls|
|
14
14
|
if cls[:override]
|
15
15
|
process(cls)
|
16
16
|
overrides << cls
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
overrides.each do |cls|
|
22
|
-
@classes_hash.delete(cls[:name])
|
23
|
-
@classes_array.delete(cls)
|
24
|
-
end
|
20
|
+
overrides
|
25
21
|
end
|
26
22
|
|
27
23
|
private
|
data/lib/jsduck/renderer.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require 'jsduck/meta_tag_registry'
|
2
1
|
require 'jsduck/html'
|
2
|
+
require 'jsduck/meta_tag_renderer'
|
3
|
+
require 'jsduck/signature_renderer'
|
3
4
|
|
4
5
|
module JsDuck
|
5
6
|
|
@@ -12,6 +13,7 @@ module JsDuck
|
|
12
13
|
|
13
14
|
def render(cls)
|
14
15
|
@cls = cls
|
16
|
+
@signature = SignatureRenderer.new(cls)
|
15
17
|
|
16
18
|
return [
|
17
19
|
"<div>",
|
@@ -60,9 +62,7 @@ module JsDuck
|
|
60
62
|
end
|
61
63
|
|
62
64
|
def render_meta_data(meta_data, position)
|
63
|
-
|
64
|
-
|
65
|
-
MetaTagRegistry.instance.tags(position).map {|tag| meta_data[tag.key] }
|
65
|
+
MetaTagRenderer.render(meta_data, position)
|
66
66
|
end
|
67
67
|
|
68
68
|
def render_sidebar
|
@@ -241,43 +241,7 @@ module JsDuck
|
|
241
241
|
end
|
242
242
|
|
243
243
|
def render_signature(m)
|
244
|
-
|
245
|
-
|
246
|
-
name = m[:name]
|
247
|
-
before = ""
|
248
|
-
if m[:tagname] == :method && m[:name] == "constructor"
|
249
|
-
before = "<strong class='new-keyword'>new</strong>"
|
250
|
-
name = @cls[:name]
|
251
|
-
end
|
252
|
-
|
253
|
-
if m[:tagname] == :cfg || m[:tagname] == :property || m[:tagname] == :css_var
|
254
|
-
params = "<span> : #{m[:html_type]}</span>"
|
255
|
-
else
|
256
|
-
ps = m[:params].map {|p| render_short_param(p) }.join(", ")
|
257
|
-
params = "( <span class='pre'>#{ps}</span> )"
|
258
|
-
if m[:tagname] == :method && m[:return][:type] != "undefined"
|
259
|
-
params += " : " + m[:return][:html_type]
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
after = ""
|
264
|
-
MetaTagRegistry.instance.signatures.each do |s|
|
265
|
-
after += "<strong class='#{s[:key]} signature'>#{s[:long]}</strong>" if m[:meta][s[:key]]
|
266
|
-
end
|
267
|
-
|
268
|
-
uri = "#!/api/#{m[:owner]}-#{m[:id]}"
|
269
|
-
|
270
|
-
return [
|
271
|
-
before,
|
272
|
-
"<a href='#{uri}' class='name #{expandable}'>#{name}</a>",
|
273
|
-
params,
|
274
|
-
after
|
275
|
-
]
|
276
|
-
end
|
277
|
-
|
278
|
-
def render_short_param(param)
|
279
|
-
p = param[:html_type] + " " + param[:name]
|
280
|
-
return param[:optional] ? "["+p+"]" : p
|
244
|
+
@signature.render(m)
|
281
245
|
end
|
282
246
|
|
283
247
|
def render_long_doc(m)
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'jsduck/meta_tag_renderer'
|
2
|
+
|
3
|
+
module JsDuck
|
4
|
+
|
5
|
+
# Performs the rendering of member signatures.
|
6
|
+
class SignatureRenderer
|
7
|
+
# Initializes the renderer for rendering members of the given
|
8
|
+
# class.
|
9
|
+
def initialize(cls)
|
10
|
+
@cls = cls
|
11
|
+
end
|
12
|
+
|
13
|
+
# Renders signature of the given member.
|
14
|
+
def render(member)
|
15
|
+
# Keep the code simpler by not passing around the member hash
|
16
|
+
@m = member
|
17
|
+
|
18
|
+
return [
|
19
|
+
render_new,
|
20
|
+
render_link,
|
21
|
+
render_type,
|
22
|
+
render_meta,
|
23
|
+
]
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def render_new
|
29
|
+
constructor? ? "<strong class='new-keyword'>new</strong>" : ""
|
30
|
+
end
|
31
|
+
|
32
|
+
def render_link
|
33
|
+
"<a href='#{render_url}' class='name #{render_expandable}'>#{render_name}</a>"
|
34
|
+
end
|
35
|
+
|
36
|
+
def render_url
|
37
|
+
"#!/api/#{@m[:owner]}-#{@m[:id]}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def render_expandable
|
41
|
+
@m[:shortDoc] ? "expandable" : "not-expandable"
|
42
|
+
end
|
43
|
+
|
44
|
+
def render_name
|
45
|
+
constructor? ? @cls[:name] : @m[:name]
|
46
|
+
end
|
47
|
+
|
48
|
+
def constructor?
|
49
|
+
@m[:tagname] == :method && @m[:name] == "constructor"
|
50
|
+
end
|
51
|
+
|
52
|
+
def render_type
|
53
|
+
if like_property?
|
54
|
+
render_property_type
|
55
|
+
else
|
56
|
+
render_params + render_return
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def like_property?
|
61
|
+
@m[:tagname] == :cfg || @m[:tagname] == :property || @m[:tagname] == :css_var
|
62
|
+
end
|
63
|
+
|
64
|
+
def render_property_type
|
65
|
+
"<span> : #{@m[:html_type]}</span>"
|
66
|
+
end
|
67
|
+
|
68
|
+
def render_params
|
69
|
+
ps = @m[:params].map {|p| render_single_param(p) }.join(", ")
|
70
|
+
"( <span class='pre'>#{ps}</span> )"
|
71
|
+
end
|
72
|
+
|
73
|
+
def render_single_param(param)
|
74
|
+
p = param[:html_type] + " " + param[:name]
|
75
|
+
param[:optional] ? "["+p+"]" : p
|
76
|
+
end
|
77
|
+
|
78
|
+
def render_return
|
79
|
+
method_with_return? ? (" : " + @m[:return][:html_type]) : ""
|
80
|
+
end
|
81
|
+
|
82
|
+
def method_with_return?
|
83
|
+
@m[:tagname] == :method && @m[:return][:type] != "undefined"
|
84
|
+
end
|
85
|
+
|
86
|
+
def render_meta
|
87
|
+
MetaTagRenderer.render_signature(@m)
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
data/lib/jsduck/tag/new.rb
CHANGED
@@ -11,6 +11,19 @@ module JsDuck::Tag
|
|
11
11
|
@boolean = true
|
12
12
|
end
|
13
13
|
|
14
|
+
# Initializes the tooltip text.
|
15
|
+
#
|
16
|
+
# HACK: This is a special method that's only called for the @new
|
17
|
+
# tag. It doesn't fit well into the current meta-tags system. But
|
18
|
+
# until we rework the meta-tags system, this will have to do.
|
19
|
+
def create_tooltip!(imports, new_since)
|
20
|
+
if new_since
|
21
|
+
@signature[:tooltip] = "New since #{new_since}"
|
22
|
+
elsif imports.length > 0
|
23
|
+
@signature[:tooltip] = "New since #{imports.last[:version]}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
14
27
|
def to_value(contents)
|
15
28
|
true
|
16
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsduck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-08-
|
13
|
+
date: 2012-08-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rdiscount
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- lib/jsduck/meta_tag.rb
|
198
198
|
- lib/jsduck/meta_tag_loader.rb
|
199
199
|
- lib/jsduck/meta_tag_registry.rb
|
200
|
+
- lib/jsduck/meta_tag_renderer.rb
|
200
201
|
- lib/jsduck/null_object.rb
|
201
202
|
- lib/jsduck/option_parser.rb
|
202
203
|
- lib/jsduck/options.rb
|
@@ -207,6 +208,7 @@ files:
|
|
207
208
|
- lib/jsduck/renderer.rb
|
208
209
|
- lib/jsduck/search_data.rb
|
209
210
|
- lib/jsduck/serializer.rb
|
211
|
+
- lib/jsduck/signature_renderer.rb
|
210
212
|
- lib/jsduck/source_file.rb
|
211
213
|
- lib/jsduck/source_file_parser.rb
|
212
214
|
- lib/jsduck/source_writer.rb
|