jsduck 5.0.0.beta2 → 5.0.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +14 -4
- data/bin/jsduck +3 -1
- data/jsduck.gemspec +2 -2
- data/lib/jsduck/app.rb +8 -0
- data/lib/jsduck/assets.rb +3 -0
- data/lib/jsduck/batch_processor.rb +2 -0
- data/lib/jsduck/categories/class_name.rb +2 -26
- data/lib/jsduck/categories/factory.rb +5 -43
- data/lib/jsduck/columns.rb +56 -0
- data/lib/jsduck/doc/delimited_parser.rb +105 -0
- data/lib/jsduck/doc/scanner.rb +2 -1
- data/lib/jsduck/doc/standard_tag_parser.rb +37 -71
- data/lib/jsduck/guide_anchors.rb +32 -0
- data/lib/jsduck/guide_toc.rb +49 -0
- data/lib/jsduck/guides.rb +14 -32
- data/lib/jsduck/inline/video.rb +2 -8
- data/lib/jsduck/js/ast.rb +13 -305
- data/lib/jsduck/js/class.rb +245 -0
- data/lib/jsduck/js/event.rb +34 -0
- data/lib/jsduck/js/fires.rb +42 -0
- data/lib/jsduck/js/method.rb +94 -0
- data/lib/jsduck/js/method_calls.rb +40 -0
- data/lib/jsduck/js/node.rb +29 -0
- data/lib/jsduck/js/property.rb +64 -0
- data/lib/jsduck/js/{function.rb → returns.rb} +8 -3
- data/lib/jsduck/js/scoped_traverser.rb +42 -0
- data/lib/jsduck/logger.rb +13 -1
- data/lib/jsduck/merger.rb +34 -27
- data/lib/jsduck/news.rb +128 -0
- data/lib/jsduck/options.rb +59 -2
- data/lib/jsduck/params_merger.rb +47 -0
- data/lib/jsduck/process/accessors.rb +8 -2
- data/lib/jsduck/process/fires.rb +71 -0
- data/lib/jsduck/process/importer.rb +19 -1
- data/lib/jsduck/render/class.rb +11 -4
- data/lib/jsduck/render/signature_util.rb +14 -0
- data/lib/jsduck/tag/alias.rb +0 -20
- data/lib/jsduck/tag/alternate_class_names.rb +0 -5
- data/lib/jsduck/tag/cfg.rb +30 -5
- data/lib/jsduck/tag/class.rb +45 -2
- data/lib/jsduck/tag/css_mixin.rb +8 -4
- data/lib/jsduck/tag/css_var.rb +26 -5
- data/lib/jsduck/tag/default.rb +2 -8
- data/lib/jsduck/tag/enum.rb +7 -10
- data/lib/jsduck/tag/event.rb +12 -4
- data/lib/jsduck/tag/extends.rb +0 -6
- data/lib/jsduck/tag/fires.rb +53 -0
- data/lib/jsduck/tag/icons/cfg.png +0 -0
- data/lib/jsduck/tag/icons/css_mixin.png +0 -0
- data/lib/jsduck/tag/icons/css_var.png +0 -0
- data/lib/jsduck/tag/icons/event.png +0 -0
- data/lib/jsduck/tag/icons/method.png +0 -0
- data/lib/jsduck/tag/icons/property.png +0 -0
- data/lib/jsduck/tag/member_tag.rb +130 -0
- data/lib/jsduck/tag/method.rb +44 -4
- data/lib/jsduck/tag/param.rb +8 -60
- data/lib/jsduck/tag/property.rb +28 -5
- data/lib/jsduck/tag/tag.rb +3 -75
- data/lib/jsduck/tag/type.rb +1 -11
- data/lib/jsduck/tag_registry.rb +6 -48
- data/lib/jsduck/web/css.rb +8 -1
- data/lib/jsduck/web/data.rb +2 -1
- data/lib/jsduck/web/index_html.rb +1 -0
- data/lib/jsduck/web/member_icons.rb +43 -0
- data/lib/jsduck/web/search.rb +3 -2
- data/lib/jsduck/web/writer.rb +8 -0
- metadata +31 -27
- data/lib/jsduck/docs_code_comparer.rb +0 -44
- data/lib/jsduck/render/signature.rb +0 -94
- data/lib/jsduck/tag/autodetected.rb +0 -21
- data/lib/jsduck/tag/name.rb +0 -36
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'jsduck/util/singleton'
|
2
|
-
|
3
|
-
module JsDuck
|
4
|
-
|
5
|
-
# Compares documentation and code hashes.
|
6
|
-
# Provides an utility method to help with merging.
|
7
|
-
class DocsCodeComparer
|
8
|
-
include Util::Singleton
|
9
|
-
|
10
|
-
# Sets the value of a field in result hash based on its value in
|
11
|
-
# docs and code hashes.
|
12
|
-
#
|
13
|
-
# - When docs has the key, gets value from there.
|
14
|
-
#
|
15
|
-
# - When code has the key and matches with docs, gets value from
|
16
|
-
# there, and also remembers the fact that we're using
|
17
|
-
# auto-detected value by recording it in :autodetected field.
|
18
|
-
#
|
19
|
-
def merge_if_matches(h, key, docs, code)
|
20
|
-
if docs[key]
|
21
|
-
h[key] = docs[key]
|
22
|
-
elsif code[key] && matches?(docs, code)
|
23
|
-
h[key] = code[key]
|
24
|
-
mark_autodetected(h, key)
|
25
|
-
else
|
26
|
-
# nothing
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# True if the name detected from code matches with explicitly
|
31
|
-
# documented name. Also true when no explicit name documented.
|
32
|
-
def matches?(docs, code)
|
33
|
-
return docs[:name] == nil || docs[:name] == code[:name]
|
34
|
-
end
|
35
|
-
|
36
|
-
# Stores the key as flag into h[:autodetcted]
|
37
|
-
def mark_autodetected(h, key)
|
38
|
-
h[:autodetected] = {} unless h[:autodetected]
|
39
|
-
h[:autodetected][key] = true
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
@@ -1,94 +0,0 @@
|
|
1
|
-
require 'jsduck/render/tags'
|
2
|
-
require 'jsduck/tag_registry'
|
3
|
-
|
4
|
-
module JsDuck
|
5
|
-
module Render
|
6
|
-
|
7
|
-
# Performs the rendering of member signatures.
|
8
|
-
class Signature
|
9
|
-
# Initializes the renderer for rendering members of the given
|
10
|
-
# class.
|
11
|
-
def initialize(cls)
|
12
|
-
@cls = cls
|
13
|
-
end
|
14
|
-
|
15
|
-
# Renders signature of the given member.
|
16
|
-
def render(member)
|
17
|
-
# Keep the code simpler by not passing around the member hash
|
18
|
-
@m = member
|
19
|
-
|
20
|
-
return [
|
21
|
-
render_new,
|
22
|
-
render_link,
|
23
|
-
render_type,
|
24
|
-
render_tag_signature,
|
25
|
-
]
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def render_new
|
31
|
-
constructor? ? "<strong class='new-keyword'>new</strong>" : ""
|
32
|
-
end
|
33
|
-
|
34
|
-
def render_link
|
35
|
-
"<a href='#{render_url}' class='name #{render_expandable}'>#{render_name}</a>"
|
36
|
-
end
|
37
|
-
|
38
|
-
def render_url
|
39
|
-
"#!/api/#{@m[:owner]}-#{@m[:id]}"
|
40
|
-
end
|
41
|
-
|
42
|
-
def render_expandable
|
43
|
-
@m[:short_doc] ? "expandable" : "not-expandable"
|
44
|
-
end
|
45
|
-
|
46
|
-
def render_name
|
47
|
-
constructor? ? @cls[:name] : @m[:name]
|
48
|
-
end
|
49
|
-
|
50
|
-
def constructor?
|
51
|
-
@m[:tagname] == :method && @m[:name] == "constructor"
|
52
|
-
end
|
53
|
-
|
54
|
-
def render_type
|
55
|
-
if like_property?
|
56
|
-
render_property_type
|
57
|
-
else
|
58
|
-
render_params + render_return
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def like_property?
|
63
|
-
TagRegistry.member_type_names(:property_like).include?(@m[:tagname])
|
64
|
-
end
|
65
|
-
|
66
|
-
def render_property_type
|
67
|
-
"<span> : #{@m[:html_type]}</span>"
|
68
|
-
end
|
69
|
-
|
70
|
-
def render_params
|
71
|
-
ps = @m[:params].map {|p| render_single_param(p) }.join(", ")
|
72
|
-
"( <span class='pre'>#{ps}</span> )"
|
73
|
-
end
|
74
|
-
|
75
|
-
def render_single_param(param)
|
76
|
-
param[:optional] ? "["+param[:name]+"]" : param[:name]
|
77
|
-
end
|
78
|
-
|
79
|
-
def render_return
|
80
|
-
method_with_return? ? (" : " + @m[:return][:html_type]) : ""
|
81
|
-
end
|
82
|
-
|
83
|
-
def method_with_return?
|
84
|
-
@m[:tagname] == :method && @m[:return] != nil
|
85
|
-
end
|
86
|
-
|
87
|
-
def render_tag_signature
|
88
|
-
Render::Tags.render_signature(@m)
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require "jsduck/tag/tag"
|
2
|
-
require "jsduck/docs_code_comparer"
|
3
|
-
|
4
|
-
module JsDuck::Tag
|
5
|
-
# There is no @autodetected tag.
|
6
|
-
#
|
7
|
-
# This tag class exists to take care of the merging of :autodetected
|
8
|
-
# field.
|
9
|
-
class Autodetected < Tag
|
10
|
-
def initialize
|
11
|
-
@tagname = :autodetected
|
12
|
-
@merge_context = [:class, :member]
|
13
|
-
end
|
14
|
-
|
15
|
-
def merge(h, docs, code)
|
16
|
-
if docs[:autodetected] || code[:autodetected]
|
17
|
-
h[:autodetected] = (code[:autodetected] || {}).merge(docs[:autodetected] || {})
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/jsduck/tag/name.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require "jsduck/tag/tag"
|
2
|
-
|
3
|
-
module JsDuck::Tag
|
4
|
-
# There is no @name tag.
|
5
|
-
#
|
6
|
-
# The :name field is generated by several tags like @class, @method,
|
7
|
-
# @cfg, ...
|
8
|
-
#
|
9
|
-
# This class exists to take care of the merging of :name field.
|
10
|
-
class Name < Tag
|
11
|
-
def initialize
|
12
|
-
@merge_context = [:class, :member]
|
13
|
-
end
|
14
|
-
|
15
|
-
# When docs contains :name, it's taken from there.
|
16
|
-
#
|
17
|
-
# When code contains :name, we only take the full name when
|
18
|
-
# dealing with a class, otherwise we just take the last part of
|
19
|
-
# the dot.separate.name.
|
20
|
-
#
|
21
|
-
# :name defaults to empty string.
|
22
|
-
def merge(h, docs, code)
|
23
|
-
if docs[:name]
|
24
|
-
h[:name] = docs[:name]
|
25
|
-
elsif code[:name]
|
26
|
-
if h[:tagname] == :class
|
27
|
-
h[:name] = code[:name]
|
28
|
-
else
|
29
|
-
h[:name] = code[:name].split(/\./).last
|
30
|
-
end
|
31
|
-
else
|
32
|
-
h[:name] = ""
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|