jsduck 5.0.0.beta01 → 5.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +1 -0
- data/README.md +6 -32
- data/Rakefile +5 -5
- data/bin/jsduck +0 -1
- data/js-classes/String.js +3 -5
- data/jsduck.gemspec +3 -2
- data/lib/jsduck/aggregator.rb +1 -3
- data/lib/jsduck/app.rb +2 -2
- data/lib/jsduck/categories/file.rb +0 -6
- data/lib/jsduck/class.rb +1 -2
- data/lib/jsduck/doc/parser.rb +12 -5
- data/lib/jsduck/doc/scanner.rb +6 -0
- data/lib/jsduck/doc/standard_tag_parser.rb +10 -5
- data/lib/jsduck/doc/subproperties.rb +9 -2
- data/lib/jsduck/docs_code_comparer.rb +20 -7
- data/lib/jsduck/exporter/app.rb +18 -13
- data/lib/jsduck/exporter/full.rb +18 -21
- data/lib/jsduck/format/doc.rb +0 -1
- data/lib/jsduck/format/html_stack.rb +1 -2
- data/lib/jsduck/format/subproperties.rb +2 -2
- data/lib/jsduck/inline/auto_link.rb +1 -1
- data/lib/jsduck/inline/img.rb +1 -1
- data/lib/jsduck/inline/link.rb +4 -6
- data/lib/jsduck/inline/video.rb +1 -2
- data/lib/jsduck/js/ast.rb +1 -1
- data/lib/jsduck/js/esprima.rb +24 -9
- data/lib/jsduck/logger.rb +50 -12
- data/lib/jsduck/members_index.rb +1 -2
- data/lib/jsduck/merger.rb +20 -2
- data/lib/jsduck/options.rb +125 -24
- data/lib/jsduck/process/accessors.rb +21 -8
- data/lib/jsduck/process/enums.rb +2 -3
- data/lib/jsduck/process/ext4_events.rb +2 -1
- data/lib/jsduck/process/global_members.rb +1 -2
- data/lib/jsduck/process/importer.rb +2 -6
- data/lib/jsduck/process/inherit_class.rb +58 -0
- data/lib/jsduck/process/inherit_doc.rb +6 -175
- data/lib/jsduck/process/inherit_members.rb +257 -0
- data/lib/jsduck/process/lint.rb +18 -7
- data/lib/jsduck/process/overrides.rb +1 -2
- data/lib/jsduck/render/class.rb +1 -1
- data/lib/jsduck/tag/alias.rb +2 -1
- data/lib/jsduck/tag/alternate_class_names.rb +1 -0
- data/lib/jsduck/tag/aside.rb +3 -3
- data/lib/jsduck/tag/author.rb +18 -3
- data/lib/jsduck/tag/autodetected.rb +21 -0
- data/lib/jsduck/tag/boolean_tag.rb +1 -1
- data/lib/jsduck/tag/cfg.rb +7 -3
- data/lib/jsduck/tag/class.rb +1 -1
- data/lib/jsduck/tag/class_list_tag.rb +1 -1
- data/lib/jsduck/tag/constructor.rb +1 -1
- data/lib/jsduck/tag/css_var.rb +1 -1
- data/lib/jsduck/tag/default.rb +1 -1
- data/lib/jsduck/tag/deprecated_tag.rb +1 -1
- data/lib/jsduck/tag/docauthor.rb +2 -0
- data/lib/jsduck/tag/enum.rb +2 -2
- data/lib/jsduck/tag/event.rb +1 -1
- data/lib/jsduck/tag/extends.rb +1 -1
- data/lib/jsduck/tag/ftype.rb +2 -1
- data/lib/jsduck/tag/inheritdoc.rb +1 -1
- data/lib/jsduck/tag/localdoc.rb +33 -0
- data/lib/jsduck/tag/markdown.rb +1 -1
- data/lib/jsduck/tag/member.rb +1 -1
- data/lib/jsduck/tag/method.rb +1 -1
- data/lib/jsduck/tag/mixins.rb +1 -0
- data/lib/jsduck/tag/override.rb +1 -1
- data/lib/jsduck/tag/param.rb +16 -5
- data/lib/jsduck/tag/preventable.rb +1 -1
- data/lib/jsduck/tag/property.rb +7 -3
- data/lib/jsduck/tag/ptype.rb +2 -1
- data/lib/jsduck/tag/requires.rb +1 -0
- data/lib/jsduck/tag/return.rb +2 -1
- data/lib/jsduck/tag/since.rb +1 -5
- data/lib/jsduck/tag/tag.rb +21 -12
- data/lib/jsduck/tag/throws.rb +2 -1
- data/lib/jsduck/tag/type.rb +2 -2
- data/lib/jsduck/tag/uses.rb +1 -0
- data/lib/jsduck/tag/xtype.rb +2 -1
- data/lib/jsduck/tag_loader.rb +26 -15
- data/lib/jsduck/tag_registry.rb +20 -11
- data/lib/jsduck/web/css.rb +22 -0
- data/lib/jsduck/web/data.rb +50 -0
- data/lib/jsduck/web/icons.rb +31 -0
- data/lib/jsduck/web/index_html.rb +88 -0
- data/lib/jsduck/web/search.rb +148 -0
- data/lib/jsduck/{source/writer.rb → web/source.rb} +2 -2
- data/lib/jsduck/web/template.rb +52 -0
- data/lib/jsduck/web/writer.rb +84 -0
- metadata +513 -488
- data/lib/jsduck/app_data.rb +0 -41
- data/lib/jsduck/icons.rb +0 -29
- data/lib/jsduck/index_html.rb +0 -84
- data/lib/jsduck/search_data.rb +0 -146
- data/lib/jsduck/template_dir.rb +0 -50
- data/lib/jsduck/web_writer.rb +0 -87
data/lib/jsduck/app_data.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'jsduck/util/json'
|
2
|
-
require 'jsduck/icons'
|
3
|
-
require 'jsduck/search_data'
|
4
|
-
require 'jsduck/tag_registry'
|
5
|
-
|
6
|
-
module JsDuck
|
7
|
-
|
8
|
-
# Creates big JS file with data for Docs app.
|
9
|
-
class AppData
|
10
|
-
def initialize(relations, assets, opts)
|
11
|
-
@relations = relations
|
12
|
-
@assets = assets
|
13
|
-
@opts = opts
|
14
|
-
end
|
15
|
-
|
16
|
-
# Writes classes, guides, videos, and search data to one big .js file
|
17
|
-
def write(filename)
|
18
|
-
js = "Docs = " + Util::Json.generate({
|
19
|
-
:data => {
|
20
|
-
:classes => Icons.new.create(@relations.classes),
|
21
|
-
:guides => @assets.guides.to_array,
|
22
|
-
:videos => @assets.videos.to_array,
|
23
|
-
:examples => @assets.examples.to_array,
|
24
|
-
:search => SearchData.new.create(@relations.classes, @assets),
|
25
|
-
:tests => @opts.tests,
|
26
|
-
:signatures => TagRegistry.signatures,
|
27
|
-
:memberTypes => TagRegistry.member_types,
|
28
|
-
:localStorageDb => @opts.local_storage_db,
|
29
|
-
:showPrintButton => @opts.seo,
|
30
|
-
:touchExamplesUi => @opts.touch_examples_ui,
|
31
|
-
:source => @opts.source,
|
32
|
-
:commentsUrl => @opts.comments_url,
|
33
|
-
:commentsDomain => @opts.comments_domain,
|
34
|
-
}
|
35
|
-
}) + ";\n"
|
36
|
-
File.open(filename, 'w') {|f| f.write(js) }
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
data/lib/jsduck/icons.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module JsDuck
|
2
|
-
|
3
|
-
# Creates an array of small hashes documenting name, parent class
|
4
|
-
# and icon of a class.
|
5
|
-
class Icons
|
6
|
-
def create(classes)
|
7
|
-
classes.map do |cls|
|
8
|
-
{
|
9
|
-
:name => cls[:name],
|
10
|
-
:extends => cls[:extends],
|
11
|
-
:private => cls[:private],
|
12
|
-
:icon => Icons::class_icon(cls),
|
13
|
-
}
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# Returns CSS class name for an icon of class
|
18
|
-
def self.class_icon(cls)
|
19
|
-
if cls[:singleton]
|
20
|
-
"icon-singleton"
|
21
|
-
elsif cls.inherits_from?("Ext.Component")
|
22
|
-
"icon-component"
|
23
|
-
else
|
24
|
-
"icon-class"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
data/lib/jsduck/index_html.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'jsduck/logger'
|
2
|
-
require 'jsduck/util/io'
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
module JsDuck
|
6
|
-
|
7
|
-
# Deals with creation of main HTML or PHP files.
|
8
|
-
class IndexHtml
|
9
|
-
def initialize(assets, opts)
|
10
|
-
@assets = assets
|
11
|
-
@opts = opts
|
12
|
-
end
|
13
|
-
|
14
|
-
# In normal mode creates index.html.
|
15
|
-
#
|
16
|
-
# When --seo enabled, creates index.php, template.html and print-template.html.
|
17
|
-
def write
|
18
|
-
if @opts.seo
|
19
|
-
FileUtils.cp(@opts.template_dir+"/index.php", @opts.output_dir+"/index.php")
|
20
|
-
create_template_html(@opts.template_dir+"/template.html", @opts.output_dir+"/template.html")
|
21
|
-
create_print_template_html(@opts.template_dir+"/print-template.html", @opts.output_dir+"/print-template.html")
|
22
|
-
create_index_template_html(@opts.template_dir+"/index-template.html", @opts.output_dir+"/index-template.html")
|
23
|
-
else
|
24
|
-
create_template_html(@opts.template_dir+"/template.html", @opts.output_dir+"/index.html")
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def create_template_html(in_file, out_file)
|
31
|
-
write_template(in_file, out_file, {
|
32
|
-
"{title}" => @opts.title,
|
33
|
-
"{mobile_redirect}" => @opts.seo ? include_script(@opts.template_dir+"/mobile-redirect.js") : "",
|
34
|
-
"{header}" => @opts.header,
|
35
|
-
"{footer}" => "<div id='footer-content' style='display: none'>#{@opts.footer}</div>",
|
36
|
-
"{extjs_path}" => @opts.extjs_path,
|
37
|
-
"{data_path}" => File.basename(@opts.data_path),
|
38
|
-
"{welcome}" => @assets.welcome.to_html("display:none"),
|
39
|
-
"{categories}" => @assets.categories.to_html("display:none"),
|
40
|
-
"{guides}" => @assets.guides.to_html("display:none"),
|
41
|
-
"{head_html}" => @opts.head_html,
|
42
|
-
"{body_html}" => @opts.body_html,
|
43
|
-
"{head_css}" => TagRegistry.css,
|
44
|
-
})
|
45
|
-
end
|
46
|
-
|
47
|
-
def create_print_template_html(in_file, out_file)
|
48
|
-
write_template(in_file, out_file, {
|
49
|
-
"{title}" => @opts.title,
|
50
|
-
"{header}" => @opts.header,
|
51
|
-
"{head_css}" => TagRegistry.css,
|
52
|
-
})
|
53
|
-
end
|
54
|
-
|
55
|
-
def create_index_template_html(in_file, out_file)
|
56
|
-
categories = @assets.categories.to_html
|
57
|
-
guides = @assets.guides.to_html
|
58
|
-
|
59
|
-
write_template(in_file, out_file, {
|
60
|
-
"{title}" => @opts.title,
|
61
|
-
"{header}" => @opts.header,
|
62
|
-
"{categories}" => categories ? "<h1>API Documentation</h1> #{categories}" : "",
|
63
|
-
"{guides}" => guides ? "<h1>Guides</h1> #{guides}" : "",
|
64
|
-
"{head_css}" => TagRegistry.css,
|
65
|
-
})
|
66
|
-
end
|
67
|
-
|
68
|
-
def include_script(filename)
|
69
|
-
"<script type='text/javascript'>\n" + Util::IO.read(filename) + "\n</script>"
|
70
|
-
end
|
71
|
-
|
72
|
-
# Opens in_file, replaces {keys} inside it, writes to out_file
|
73
|
-
def write_template(in_file, out_file, replacements)
|
74
|
-
Logger.log("Writing", out_file)
|
75
|
-
html = Util::IO.read(in_file)
|
76
|
-
html.gsub!(/\{\w+\}/) do |key|
|
77
|
-
replacements[key] ? replacements[key] : key
|
78
|
-
end
|
79
|
-
File.open(out_file, 'w') {|f| f.write(html) }
|
80
|
-
end
|
81
|
-
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
data/lib/jsduck/search_data.rb
DELETED
@@ -1,146 +0,0 @@
|
|
1
|
-
require 'jsduck/icons'
|
2
|
-
require 'jsduck/class_name'
|
3
|
-
require 'jsduck/tag_registry'
|
4
|
-
|
5
|
-
module JsDuck
|
6
|
-
|
7
|
-
# Creates list of all members in all classes that is used by the
|
8
|
-
# searching feature in UI.
|
9
|
-
class SearchData
|
10
|
-
# Given list of classes and other assets, returns an array of
|
11
|
-
# hashes describing the search data.
|
12
|
-
def create(classes, assets)
|
13
|
-
list = []
|
14
|
-
|
15
|
-
classes.each do |cls|
|
16
|
-
list << class_node(cls)
|
17
|
-
|
18
|
-
cls[:alternateClassNames].each do |name|
|
19
|
-
list << alt_node(name, cls)
|
20
|
-
end
|
21
|
-
|
22
|
-
cls[:aliases].each_pair do |key, items|
|
23
|
-
items.each do |name|
|
24
|
-
list << alias_node(key, name, cls)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# add all local members, but skip constructors
|
29
|
-
cls[:members].each do |m|
|
30
|
-
list << member_node(m, cls) unless m[:name] == ClassName.short(cls[:name])
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
assets.guides.each_item {|g| list << guide_node(g) }
|
35
|
-
|
36
|
-
assets.videos.each_item {|v| list << video_node(v) }
|
37
|
-
|
38
|
-
assets.examples.each_item {|e| list << example_node(e) }
|
39
|
-
|
40
|
-
list
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
def alias_node(key, name, cls)
|
46
|
-
return {
|
47
|
-
:name => name,
|
48
|
-
:fullName => alias_display_name(key)+": "+name,
|
49
|
-
:icon => Icons::class_icon(cls) + "-redirect",
|
50
|
-
:url => "#!/api/" + cls[:name],
|
51
|
-
:meta => combine_meta(cls),
|
52
|
-
:sort => 0,
|
53
|
-
}
|
54
|
-
end
|
55
|
-
|
56
|
-
def class_node(cls)
|
57
|
-
return {
|
58
|
-
:name => ClassName.short(cls[:name]),
|
59
|
-
:fullName => cls[:name],
|
60
|
-
:icon => Icons::class_icon(cls),
|
61
|
-
:url => "#!/api/" + cls[:name],
|
62
|
-
:meta => combine_meta(cls),
|
63
|
-
:sort => 1,
|
64
|
-
}
|
65
|
-
end
|
66
|
-
|
67
|
-
def alt_node(name, cls)
|
68
|
-
return {
|
69
|
-
:name => ClassName.short(name),
|
70
|
-
:fullName => name,
|
71
|
-
:type => :class,
|
72
|
-
:icon => Icons::class_icon(cls) + "-redirect",
|
73
|
-
:url => "#!/api/" + cls[:name],
|
74
|
-
:meta => combine_meta(cls),
|
75
|
-
:sort => 2,
|
76
|
-
}
|
77
|
-
end
|
78
|
-
|
79
|
-
def member_node(member, cls)
|
80
|
-
return {
|
81
|
-
:name => member[:name],
|
82
|
-
:fullName => cls[:name] + "." + member[:name],
|
83
|
-
:icon => "icon-" + member[:tagname].to_s,
|
84
|
-
:url => "#!/api/" + cls[:name] + "-" + member[:id],
|
85
|
-
:meta => combine_meta(member),
|
86
|
-
:sort => 3,
|
87
|
-
}
|
88
|
-
end
|
89
|
-
|
90
|
-
def guide_node(guide)
|
91
|
-
return {
|
92
|
-
:name => guide["title"],
|
93
|
-
:fullName => "guide: " + guide["title"],
|
94
|
-
:icon => "icon-guide",
|
95
|
-
:url => "#!/guide/" + guide["name"],
|
96
|
-
:meta => {},
|
97
|
-
:sort => 4,
|
98
|
-
}
|
99
|
-
end
|
100
|
-
|
101
|
-
def video_node(video)
|
102
|
-
return {
|
103
|
-
:name => video["title"],
|
104
|
-
:fullName => "video: " + video["title"],
|
105
|
-
:icon => "icon-video",
|
106
|
-
:url => "#!/video/" + video["name"],
|
107
|
-
:meta => {},
|
108
|
-
:sort => 4,
|
109
|
-
}
|
110
|
-
end
|
111
|
-
|
112
|
-
def example_node(example)
|
113
|
-
return {
|
114
|
-
:name => example["title"],
|
115
|
-
:fullName => "example: " + example["title"],
|
116
|
-
:icon => "icon-example",
|
117
|
-
:url => "#!/example/" + example["name"],
|
118
|
-
:meta => {},
|
119
|
-
:sort => 4,
|
120
|
-
}
|
121
|
-
end
|
122
|
-
|
123
|
-
# Add data for builtin tags with signatures to :meta field.
|
124
|
-
def combine_meta(hash)
|
125
|
-
meta = {}
|
126
|
-
TagRegistry.signatures.each do |s|
|
127
|
-
name = s[:tagname]
|
128
|
-
meta[name] = hash[name] if hash[name]
|
129
|
-
end
|
130
|
-
meta
|
131
|
-
end
|
132
|
-
|
133
|
-
# Some alias types are shown differently.
|
134
|
-
# e.g. instead of "widget:" we show "xtype:"
|
135
|
-
def alias_display_name(key)
|
136
|
-
titles = {
|
137
|
-
"widget" => "xtype",
|
138
|
-
"plugin" => "ptype",
|
139
|
-
"feature" => "ftype",
|
140
|
-
}
|
141
|
-
titles[key] || key
|
142
|
-
end
|
143
|
-
|
144
|
-
end
|
145
|
-
|
146
|
-
end
|
data/lib/jsduck/template_dir.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'jsduck/logger'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
module JsDuck
|
5
|
-
|
6
|
-
# Copies over the template directory.
|
7
|
-
#
|
8
|
-
# Or links when --template-links option specified.
|
9
|
-
class TemplateDir
|
10
|
-
def initialize(opts)
|
11
|
-
@opts = opts
|
12
|
-
@files = [
|
13
|
-
"app",
|
14
|
-
"app*.js",
|
15
|
-
"favicon.ico",
|
16
|
-
"extjs",
|
17
|
-
"resources",
|
18
|
-
]
|
19
|
-
end
|
20
|
-
|
21
|
-
def write
|
22
|
-
FileUtils.mkdir(@opts.output_dir)
|
23
|
-
if @opts.template_links
|
24
|
-
Logger.log("Linking template files to", @opts.output_dir)
|
25
|
-
move_files(:symlink)
|
26
|
-
else
|
27
|
-
Logger.log("Copying template files to", @opts.output_dir)
|
28
|
-
move_files(:cp_r)
|
29
|
-
end
|
30
|
-
|
31
|
-
# always copy the eg-iframe file.
|
32
|
-
eg_iframe = @opts.eg_iframe || @opts.template_dir+"/eg-iframe.html"
|
33
|
-
FileUtils.cp(eg_iframe, @opts.output_dir+"/eg-iframe.html")
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
# moves files from one dir to another using a method of FileUtils module.
|
39
|
-
def move_files(method)
|
40
|
-
@files.each do |file|
|
41
|
-
target = File.expand_path(@opts.output_dir)
|
42
|
-
Dir.glob(File.expand_path(@opts.template_dir+"/"+file)).each do |source|
|
43
|
-
FileUtils.send(method, source, target)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
data/lib/jsduck/web_writer.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
require 'jsduck/exporter/app'
|
2
|
-
require 'jsduck/format/batch'
|
3
|
-
require 'jsduck/template_dir'
|
4
|
-
require 'jsduck/index_html'
|
5
|
-
require 'jsduck/app_data'
|
6
|
-
require 'jsduck/class_writer'
|
7
|
-
require 'jsduck/source/writer'
|
8
|
-
require 'jsduck/inline_examples'
|
9
|
-
require 'jsduck/util/md5'
|
10
|
-
require 'fileutils'
|
11
|
-
|
12
|
-
module JsDuck
|
13
|
-
|
14
|
-
# Performs the generation of docs web app.
|
15
|
-
class WebWriter
|
16
|
-
def initialize(relations, assets, parsed_files, opts)
|
17
|
-
@relations = relations
|
18
|
-
@assets = assets
|
19
|
-
@parsed_files = parsed_files
|
20
|
-
@opts = opts
|
21
|
-
end
|
22
|
-
|
23
|
-
def write
|
24
|
-
clean_output_dir
|
25
|
-
|
26
|
-
write_template_files
|
27
|
-
write_app_data
|
28
|
-
write_index_html
|
29
|
-
|
30
|
-
# class-formatting is done in parallel which breaks the links
|
31
|
-
# between source files and classes. Therefore it MUST to be done
|
32
|
-
# after writing sources which needs the links to work.
|
33
|
-
write_source if @opts.source
|
34
|
-
format_classes
|
35
|
-
|
36
|
-
write_inline_examples if @opts.tests
|
37
|
-
|
38
|
-
write_classes
|
39
|
-
|
40
|
-
@assets.write
|
41
|
-
end
|
42
|
-
|
43
|
-
def write_template_files
|
44
|
-
TemplateDir.new(@opts).write
|
45
|
-
end
|
46
|
-
|
47
|
-
def write_app_data
|
48
|
-
filename = @opts.output_dir+"/data.js"
|
49
|
-
AppData.new(@relations, @assets, @opts).write(filename)
|
50
|
-
# Rename the file and remember the name for use in IndexHtml.write
|
51
|
-
@opts.data_path = Util::MD5.rename(filename)
|
52
|
-
end
|
53
|
-
|
54
|
-
def write_index_html
|
55
|
-
IndexHtml.new(@assets, @opts).write
|
56
|
-
end
|
57
|
-
|
58
|
-
def write_source
|
59
|
-
source_writer = Source::Writer.new(@parsed_files)
|
60
|
-
source_writer.write(@opts.output_dir + "/source")
|
61
|
-
end
|
62
|
-
|
63
|
-
def write_inline_examples
|
64
|
-
examples = InlineExamples.new
|
65
|
-
examples.add_classes(@relations)
|
66
|
-
examples.add_guides(@assets.guides)
|
67
|
-
examples.write(@opts.output_dir+"/inline-examples.js")
|
68
|
-
end
|
69
|
-
|
70
|
-
def write_classes
|
71
|
-
class_writer = ClassWriter.new(Exporter::App, @relations, @opts)
|
72
|
-
class_writer.write(@opts.output_dir+"/output", ".js")
|
73
|
-
end
|
74
|
-
|
75
|
-
# -- util routines --
|
76
|
-
|
77
|
-
def clean_output_dir
|
78
|
-
FileUtils.rm_rf(@opts.output_dir)
|
79
|
-
end
|
80
|
-
|
81
|
-
def format_classes
|
82
|
-
Format::Batch.format_all!(@relations, @assets, @opts)
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|