distil 0.8.2 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/distil +1 -2
- data/distil.gemspec +2 -5
- data/lib/file-types/javascript-file.rb +1 -1
- data/lib/file-types/json-file.rb +4 -0
- data/lib/project.rb +31 -1
- data/lib/source-file.rb +1 -8
- data/lib/target.rb +4 -0
- data/lib/task.rb +3 -47
- data/lib/tasks/javascript-task.rb +5 -1
- data/lib/tasks/multiple-output-task.rb +8 -0
- data/lib/tasks/single-output-task.rb +4 -0
- data/lib/tasks/test-task.rb +4 -0
- data/lib/test/browser.rb +1 -1
- data/vendor/jsdoc-extras/plugins/distil-plugin.js +13 -0
- data/vendor/jsdoc-extras/plugins/interface-plugin.js +3 -1
- data/vendor/jsdoc-extras/templates/coherent/class.tmpl +8 -10
- metadata +2 -5
- data/lib/file-types/nib-file.rb +0 -13
- data/lib/filters/coherent-asset-filter.rb +0 -65
- data/lib/tasks/nib-task.rb +0 -83
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.4
|
data/bin/distil
CHANGED
data/distil.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{distil}
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jeff Watkins"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-17}
|
13
13
|
s.default_executable = %q{distil}
|
14
14
|
s.description = %q{A build tool for Javascript and CSS that takes advantage of best-of-breed helper applications Javascript Lint and JSDoc Toolkit}
|
15
15
|
s.executables = ["distil"]
|
@@ -26,9 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
"lib/file-types/html-file.rb",
|
27
27
|
"lib/file-types/javascript-file.rb",
|
28
28
|
"lib/file-types/json-file.rb",
|
29
|
-
"lib/file-types/nib-file.rb",
|
30
29
|
"lib/filter.rb",
|
31
|
-
"lib/filters/coherent-asset-filter.rb",
|
32
30
|
"lib/filters/css-filter.rb",
|
33
31
|
"lib/filters/file-reference-filter.rb",
|
34
32
|
"lib/filters/jsl-dependency-filter.rb",
|
@@ -42,7 +40,6 @@ Gem::Specification.new do |s|
|
|
42
40
|
"lib/tasks/css-task.rb",
|
43
41
|
"lib/tasks/javascript-task.rb",
|
44
42
|
"lib/tasks/multiple-output-task.rb",
|
45
|
-
"lib/tasks/nib-task.rb",
|
46
43
|
"lib/tasks/output-task.rb",
|
47
44
|
"lib/tasks/single-output-task.rb",
|
48
45
|
"lib/tasks/test-task.rb",
|
@@ -14,7 +14,7 @@ class JavascriptFile < SourceFile
|
|
14
14
|
def escape_embeded_content(content)
|
15
15
|
content.gsub("\\", "\\\\").gsub("\n", "\\n").gsub("\"", "\\\"").gsub("'", "\\\\'")
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def debug_content(options)
|
19
19
|
destination= File.expand_path(options.remove_prefix||"")
|
20
20
|
path= @file_path ? @file_path : self.relative_to_folder(destination)
|
data/lib/file-types/json-file.rb
CHANGED
data/lib/project.rb
CHANGED
@@ -3,7 +3,8 @@ require "#{$script_dir}/target"
|
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
class Project < Configurable
|
6
|
-
|
6
|
+
attr_reader :project_file
|
7
|
+
|
7
8
|
option :tasks, Array
|
8
9
|
option_alias :tasks, :task
|
9
10
|
|
@@ -19,6 +20,12 @@ class Project < Configurable
|
|
19
20
|
|
20
21
|
option :external_projects
|
21
22
|
|
23
|
+
option :distileries, Array
|
24
|
+
option_alias :distileries, :distilleries
|
25
|
+
option_alias :distileries, :distilery
|
26
|
+
option_alias :distileries, :distillery
|
27
|
+
|
28
|
+
|
22
29
|
def initialize(project_file, settings)
|
23
30
|
@@current= self
|
24
31
|
@project_file= File.expand_path(project_file)
|
@@ -48,6 +55,29 @@ class Project < Configurable
|
|
48
55
|
nil
|
49
56
|
end
|
50
57
|
|
58
|
+
def build
|
59
|
+
load_distileries
|
60
|
+
build_external_projects
|
61
|
+
build_targets
|
62
|
+
end
|
63
|
+
|
64
|
+
def load_distileries
|
65
|
+
return if distileries.nil?
|
66
|
+
|
67
|
+
distileries.each { |d|
|
68
|
+
if (File.exists?(d))
|
69
|
+
require d
|
70
|
+
next
|
71
|
+
end
|
72
|
+
path= Gem.required_location(d, 'distilery.rb')
|
73
|
+
if (path.nil?)
|
74
|
+
puts "Missing distilery: #{d}"
|
75
|
+
end
|
76
|
+
next if path.nil?
|
77
|
+
require path
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
51
81
|
def build_external_projects
|
52
82
|
projects= external_projects
|
53
83
|
if (projects.nil?)
|
data/lib/source-file.rb
CHANGED
@@ -114,16 +114,9 @@ class SourceFile
|
|
114
114
|
next if !f.handles_file(self)
|
115
115
|
c= f.filter_content(self, c, options)
|
116
116
|
}
|
117
|
-
|
117
|
+
c
|
118
118
|
end
|
119
119
|
|
120
|
-
def content_relative_to_destination(destination)
|
121
|
-
content.gsub(/\{\{FILEREF\(([^)]*)\)\}\}/) { |match|
|
122
|
-
file= SourceFile.from_path($1)
|
123
|
-
file.relative_to_folder(destination)
|
124
|
-
}
|
125
|
-
end
|
126
|
-
|
127
120
|
def debug_content(options)
|
128
121
|
self.filtered_content(options)
|
129
122
|
end
|
data/lib/target.rb
CHANGED
@@ -18,6 +18,10 @@ class Target < Configurable
|
|
18
18
|
@extras.each { |task_name, task_settings|
|
19
19
|
next if (tasks && !tasks.include?(task_name))
|
20
20
|
t= Task.by_name(task_name)
|
21
|
+
if (t.nil?)
|
22
|
+
error("Unknown task: #{task_name}")
|
23
|
+
next
|
24
|
+
end
|
21
25
|
@tasks << t.new(self, task_settings)
|
22
26
|
}
|
23
27
|
|
data/lib/task.rb
CHANGED
@@ -117,6 +117,9 @@ class Task < Configurable
|
|
117
117
|
}
|
118
118
|
oldest_product_modification_time= product_modification_times.max
|
119
119
|
|
120
|
+
stat= File.stat(Project.current.project_file)
|
121
|
+
return (@need_to_build=true) if stat.mtime > oldest_product_modification_time
|
122
|
+
|
120
123
|
@assets.each { |a|
|
121
124
|
stat= File.stat(a)
|
122
125
|
return (@need_to_build=true) if stat.mtime > oldest_product_modification_time
|
@@ -164,7 +167,6 @@ class Task < Configurable
|
|
164
167
|
|
165
168
|
folders.sort!
|
166
169
|
folders.each { |f|
|
167
|
-
# puts "#{File.join(remove_prefix, f)} => #{File.join(output_folder, f)}"
|
168
170
|
src_folder= remove_prefix ? File.join(remove_prefix, f) : f
|
169
171
|
src_folder= SourceFile.path_relative_to_folder(File.expand_path(src_folder), output_folder)
|
170
172
|
|
@@ -172,8 +174,6 @@ class Task < Configurable
|
|
172
174
|
next if File.exists?(target_folder)
|
173
175
|
File.symlink src_folder, target_folder
|
174
176
|
}
|
175
|
-
|
176
|
-
# puts "#{task_name}: folder=#{folders.inspect}"
|
177
177
|
end
|
178
178
|
|
179
179
|
def copy_assets
|
@@ -189,51 +189,7 @@ class Task < Configurable
|
|
189
189
|
symlink_assets
|
190
190
|
end
|
191
191
|
end
|
192
|
-
|
193
|
-
def copy_assets_orig
|
194
|
-
# puts "\nincluded:"
|
195
|
-
# @included_files.each { |f| puts f.file_path }
|
196
|
-
#
|
197
|
-
# puts "\nordered:"
|
198
|
-
# @ordered_files.each { |f| puts f.file_path }
|
199
|
-
# puts "\nassets:"
|
200
|
-
# assets.each { |a| puts a.file_path }
|
201
|
-
|
202
|
-
folders= assets.map { |a|
|
203
|
-
short_folder_name= File.dirname(a.file_path).split("/")[0]
|
204
|
-
if ("."==short_folder_name)
|
205
|
-
[a.file_path, a.relative_to_folder(output_folder)]
|
206
|
-
else
|
207
|
-
short_folder_regex= /.*\/#{Regexp.escape(short_folder_name)}\//
|
208
|
-
# puts "#{a.file_path}: #{short_folder_regex.inspect}: #{a.relative_to_folder(@options.output_folder)}"
|
209
|
-
relative_folder_name= (a.relative_to_folder(output_folder))[short_folder_regex]
|
210
|
-
[short_folder_name, relative_folder_name]
|
211
|
-
end
|
212
|
-
}
|
213
|
-
folders.compact!
|
214
|
-
folders.uniq!
|
215
192
|
|
216
|
-
# puts "\nfolders:"
|
217
|
-
# folders.each { |f| puts f.inspect }
|
218
|
-
|
219
|
-
folders.each { |f|
|
220
|
-
target_folder= "#{output_folder}/#{f[0]}"
|
221
|
-
FileUtils.rm target_folder if File.symlink?(target_folder)
|
222
|
-
# FileUtils.rm_r target_folder if File.exists?(target_folder)
|
223
|
-
}
|
224
|
-
|
225
|
-
if ("release"==mode)
|
226
|
-
assets.each { |a| a.copy_to(output_folder) }
|
227
|
-
else
|
228
|
-
folders.each { |f|
|
229
|
-
# puts "#{f[0]}"
|
230
|
-
target_folder= "#{output_folder}/#{f[0]}"
|
231
|
-
source_folder= f[1]
|
232
|
-
File.symlink source_folder, target_folder
|
233
|
-
}
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
193
|
def cleanup
|
238
194
|
end
|
239
195
|
|
@@ -25,6 +25,7 @@ class JavascriptTask < SingleOutputTask
|
|
25
25
|
|
26
26
|
def initialize(target, options)
|
27
27
|
super(target, options)
|
28
|
+
@concatenation_join_string = "\n/*jsl:ignore*/;/*jsl:end*/\n"
|
28
29
|
|
29
30
|
if (generate_docs)
|
30
31
|
@products << File.join(doc_folder, "index.html")
|
@@ -96,7 +97,10 @@ class JavascriptTask < SingleOutputTask
|
|
96
97
|
tmp= Tempfile.new("jsdoc.conf")
|
97
98
|
|
98
99
|
template= File.read(@options.jsdoc_conf)
|
99
|
-
doc_files= @included_files.map { |f|
|
100
|
+
doc_files= @included_files.map { |f|
|
101
|
+
p= f.file_path || f.relative_to_folder(options.remove_prefix||"")
|
102
|
+
"\"#{p}\""
|
103
|
+
}
|
100
104
|
|
101
105
|
conf= replace_tokens(template, {
|
102
106
|
"DOC_FILES"=>doc_files.join(",\n"),
|
@@ -21,6 +21,8 @@ class MultipleOutputTask < OutputTask
|
|
21
21
|
|
22
22
|
# @options.output_folder= prefix
|
23
23
|
FileUtils.mkdir_p(output_folder)
|
24
|
+
|
25
|
+
@concatenation_join_string= ""
|
24
26
|
|
25
27
|
@prefix= prefix
|
26
28
|
@concat= Hash.new
|
@@ -53,9 +55,15 @@ class MultipleOutputTask < OutputTask
|
|
53
55
|
next if @files_to_exclude.include?(depend)
|
54
56
|
|
55
57
|
concat << depend.filtered_content(options)
|
58
|
+
if (!concat.empty?)
|
59
|
+
concat << @concatenation_join_string||""
|
60
|
+
end
|
56
61
|
debug << depend.debug_content(options)
|
57
62
|
}
|
58
63
|
|
64
|
+
if (!concat.empty?)
|
65
|
+
concat << @concatenation_join_string||""
|
66
|
+
end
|
59
67
|
concat << file.filtered_content(options)
|
60
68
|
debug << file.debug_content(options)
|
61
69
|
|
@@ -22,6 +22,7 @@ class SingleOutputTask < OutputTask
|
|
22
22
|
@name_gz= "#{prefix}#{target_name}.#{type}.gz"
|
23
23
|
@name_debug= "#{prefix}#{target_name}-debug.#{type}"
|
24
24
|
|
25
|
+
@concatenation_join_string= ""
|
25
26
|
@products= [@name_concat, @name_min, @name_gz, @name_debug]
|
26
27
|
|
27
28
|
@concat = ""
|
@@ -30,6 +31,9 @@ class SingleOutputTask < OutputTask
|
|
30
31
|
|
31
32
|
def process_files
|
32
33
|
@included_files.each { |f|
|
34
|
+
if (!@concat.empty?)
|
35
|
+
@concat << @concatenation_join_string||""
|
36
|
+
end
|
33
37
|
@concat << f.filtered_content(options)
|
34
38
|
@debug << f.debug_content(options)
|
35
39
|
}
|
data/lib/tasks/test-task.rb
CHANGED
data/lib/test/browser.rb
CHANGED
@@ -33,7 +33,7 @@ class FirefoxBrowser < Browser
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def visit(url)
|
36
|
-
system("open -a \"Firefox
|
36
|
+
system("open -a \"Firefox.app\" '#{url}'") if macos?
|
37
37
|
system("#{@path} #{url}") if windows?
|
38
38
|
system("firefox #{url}") if linux?
|
39
39
|
end
|
@@ -98,6 +98,19 @@ JSDOC.PluginManager.registerPlugin("DistilPlugin", {
|
|
98
98
|
onDocCommentSrc: function(comment)
|
99
99
|
{
|
100
100
|
var src = comment.src;
|
101
|
+
var _this= this;
|
102
|
+
// if (/@method\b/.test(src))
|
103
|
+
// print("Method: previous symbol=" + this.lastSymbol.name);
|
104
|
+
|
105
|
+
function addScope(match, methodName)
|
106
|
+
{
|
107
|
+
if (_this.lastSymbol)
|
108
|
+
methodName= _this.lastSymbol.alias + "#" + methodName;
|
109
|
+
var tag= "@name "+methodName + "\n@function\n@description";
|
110
|
+
print("Replacing: \""+match+"\" with \""+tag+"\"");
|
111
|
+
return tag;
|
112
|
+
}
|
113
|
+
src= src.replace(/@method\s+(\S+)/, addScope);
|
101
114
|
|
102
115
|
var indent = "";
|
103
116
|
var indentLen = 0;
|
@@ -7,7 +7,6 @@ JSDOC.PluginManager.registerPlugin("InterfacePlugin", {
|
|
7
7
|
return;
|
8
8
|
if (symbol.comment.getTag("interface").length)
|
9
9
|
symbol.isInterface= true;
|
10
|
-
symbol.implementedInterfaces= symbol.comment.getTag("implements");
|
11
10
|
},
|
12
11
|
|
13
12
|
onDocCommentTags: function(comment)
|
@@ -30,6 +29,9 @@ JSDOC.PluginManager.registerPlugin("InterfacePlugin", {
|
|
30
29
|
case 'interface':
|
31
30
|
tag.desc= tag.nibbleName(tag.desc);
|
32
31
|
break;
|
32
|
+
case 'implements':
|
33
|
+
tag.desc= tag.nibbleName(tag.desc);
|
34
|
+
break;
|
33
35
|
}
|
34
36
|
}
|
35
37
|
|
@@ -70,16 +70,14 @@
|
|
70
70
|
{+ancestors.join(" : ")+}.
|
71
71
|
<p/>
|
72
72
|
</if>
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
implementedInterfaces= data.implementedInterfaces.map(linkToInterface);
|
82
|
-
!}
|
73
|
+
{!
|
74
|
+
function linkToInterface(i)
|
75
|
+
{
|
76
|
+
return new Link().toSymbol(i.name);
|
77
|
+
}
|
78
|
+
var implementedInterfaces= data.comment.getTag("implements").map(linkToInterface);
|
79
|
+
!}
|
80
|
+
<if test="implementedInterfaces.length">
|
83
81
|
<p>
|
84
82
|
<span class="label">Conforms to</span>
|
85
83
|
{+implementedInterfaces.join(", ")+}.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: distil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Watkins
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-17 00:00:00 -08:00
|
13
13
|
default_executable: distil
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -33,9 +33,7 @@ files:
|
|
33
33
|
- lib/file-types/html-file.rb
|
34
34
|
- lib/file-types/javascript-file.rb
|
35
35
|
- lib/file-types/json-file.rb
|
36
|
-
- lib/file-types/nib-file.rb
|
37
36
|
- lib/filter.rb
|
38
|
-
- lib/filters/coherent-asset-filter.rb
|
39
37
|
- lib/filters/css-filter.rb
|
40
38
|
- lib/filters/file-reference-filter.rb
|
41
39
|
- lib/filters/jsl-dependency-filter.rb
|
@@ -49,7 +47,6 @@ files:
|
|
49
47
|
- lib/tasks/css-task.rb
|
50
48
|
- lib/tasks/javascript-task.rb
|
51
49
|
- lib/tasks/multiple-output-task.rb
|
52
|
-
- lib/tasks/nib-task.rb
|
53
50
|
- lib/tasks/output-task.rb
|
54
51
|
- lib/tasks/single-output-task.rb
|
55
52
|
- lib/tasks/test-task.rb
|
data/lib/file-types/nib-file.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
require "#{$script_dir}/filters/file-reference-filter"
|
2
|
-
|
3
|
-
$include_regex= /NIB\.asset\(['"]([^)]+)['"]\)/
|
4
|
-
$include_regex_old= /INC\(['"]([^)]+)['"]\)/
|
5
|
-
|
6
|
-
class CoherentAssetFilter < FileReferenceFilter
|
7
|
-
|
8
|
-
def handles_file(file)
|
9
|
-
return [".js"].include?(file.extension)
|
10
|
-
end
|
11
|
-
|
12
|
-
def preprocess_content(file, content)
|
13
|
-
content= content.split("\n")
|
14
|
-
|
15
|
-
line_num=0
|
16
|
-
|
17
|
-
content.each { |line|
|
18
|
-
|
19
|
-
line_num+=1
|
20
|
-
|
21
|
-
line.gsub!($include_regex) { |match|
|
22
|
-
|
23
|
-
import_file= File.expand_path(File.join(file.parent_folder, $1))
|
24
|
-
|
25
|
-
if (!File.exists?(import_file))
|
26
|
-
file.error "Missing import file: #{$1}", line_num
|
27
|
-
"NIB.asset('#{$1}')"
|
28
|
-
else
|
29
|
-
asset= SourceFile.from_path(import_file)
|
30
|
-
file.add_asset(asset);
|
31
|
-
if (file.can_embed_as_content(asset))
|
32
|
-
"NIB.asset('#{file_reference(asset)}','#{content_reference(asset)}')"
|
33
|
-
else
|
34
|
-
"NIB.asset('#{file_reference(asset)}')"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
}
|
39
|
-
|
40
|
-
line.gsub!($include_regex_old) { |match|
|
41
|
-
|
42
|
-
import_file= File.expand_path(File.join(file.parent_folder, $1))
|
43
|
-
|
44
|
-
if (!File.exists?(import_file))
|
45
|
-
file.error "Missing import file: #{$1}", line_num
|
46
|
-
"INC('#{$1}')"
|
47
|
-
else
|
48
|
-
asset= SourceFile.from_path(import_file)
|
49
|
-
file.add_asset(asset);
|
50
|
-
if (file.can_embed_as_content(asset))
|
51
|
-
"INC('#{file_reference(asset)}','#{content_reference(asset)}')"
|
52
|
-
else
|
53
|
-
"INC('#{file_reference(asset)}')"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
}
|
58
|
-
|
59
|
-
}
|
60
|
-
|
61
|
-
content.join("\n")
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
|
data/lib/tasks/nib-task.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
require "#{$script_dir}/tasks/multiple-output-task.rb"
|
2
|
-
require "#{$script_dir}/tasks/javascript-task.rb"
|
3
|
-
|
4
|
-
class NibTask < MultipleOutputTask
|
5
|
-
|
6
|
-
def self.task_name
|
7
|
-
"jsnib"
|
8
|
-
end
|
9
|
-
|
10
|
-
def source_type
|
11
|
-
"js"
|
12
|
-
end
|
13
|
-
|
14
|
-
def output_type
|
15
|
-
"jsnib"
|
16
|
-
end
|
17
|
-
|
18
|
-
# NibTask handles files that end in .jsnib
|
19
|
-
def handles_file?(file_name)
|
20
|
-
"#{file_name}"[/\.jsnib$/]
|
21
|
-
end
|
22
|
-
|
23
|
-
def validate_file(file)
|
24
|
-
|
25
|
-
return if (!File.exists?($lint_command))
|
26
|
-
|
27
|
-
tmp= Tempfile.new("jsl.conf")
|
28
|
-
|
29
|
-
conf_files= [ "jsl.conf",
|
30
|
-
"#{ENV['HOME']}/.jsl.conf",
|
31
|
-
@options.jsl_conf
|
32
|
-
]
|
33
|
-
|
34
|
-
jsl_conf= conf_files.find { |f| File.exists?(f) }
|
35
|
-
|
36
|
-
tmp << File.read(jsl_conf)
|
37
|
-
tmp << "\n"
|
38
|
-
|
39
|
-
external_projects.each { |project|
|
40
|
-
tmp << "+include #{project["include"]}\n"
|
41
|
-
}
|
42
|
-
|
43
|
-
file.dependencies.each { |f|
|
44
|
-
tmp << "+process #{f}\n"
|
45
|
-
}
|
46
|
-
|
47
|
-
tmp << "+process #{file}\n"
|
48
|
-
|
49
|
-
tmp.close()
|
50
|
-
|
51
|
-
command= "#{$lint_command} -nologo -nofilelisting -conf #{tmp.path}"
|
52
|
-
|
53
|
-
stdin, stdout, stderr= Open3.popen3(command)
|
54
|
-
stdin.close
|
55
|
-
output= stdout.read
|
56
|
-
errors= stderr.read
|
57
|
-
|
58
|
-
tmp.delete
|
59
|
-
|
60
|
-
output= output.split("\n")
|
61
|
-
summary= output.pop
|
62
|
-
match= summary.match(/(\d+)\s+error\(s\), (\d+)\s+warning\(s\)/)
|
63
|
-
if (match)
|
64
|
-
@target.error_count+= match[1].to_i
|
65
|
-
@target.warning_count+= match[2].to_i
|
66
|
-
end
|
67
|
-
|
68
|
-
output= output.join("\n")
|
69
|
-
|
70
|
-
if (!output.empty?)
|
71
|
-
puts output
|
72
|
-
puts
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
def validate_files
|
78
|
-
@included_files.each { |f|
|
79
|
-
validate_file(f)
|
80
|
-
}
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|