yard-sketchup 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +15 -15
- data/lib/yard-sketchup/patches/c_base_handler.rb +52 -52
- data/lib/yard-sketchup/stubs/autoload.rb +134 -134
- data/lib/yard-sketchup/templates/changelog/fulldoc/text/setup.rb +44 -44
- data/lib/yard-sketchup/templates/coverage/fulldoc/text/setup.rb +41 -41
- data/lib/yard-sketchup/templates/default/fulldoc/html/css/rubyapi.css +10 -10
- data/lib/yard-sketchup/templates/default/fulldoc/html/css/sketchup.css +141 -141
- data/lib/yard-sketchup/templates/default/fulldoc/html/favicon.ico +0 -0
- data/lib/yard-sketchup/templates/default/fulldoc/html/full_list_object_types.erb +1 -1
- data/lib/yard-sketchup/templates/default/fulldoc/html/images/Ruby.svg +1 -1
- data/lib/yard-sketchup/templates/default/fulldoc/html/images/sketchup-logo.svg +19 -19
- data/lib/yard-sketchup/templates/default/fulldoc/html/images/trimble-logo-white.svg +29 -29
- data/lib/yard-sketchup/templates/default/fulldoc/html/js/sketchup.js +37 -37
- data/lib/yard-sketchup/templates/default/fulldoc/html/setup.rb +75 -75
- data/lib/yard-sketchup/templates/default/layout/html/embed_meta.erb +78 -78
- data/lib/yard-sketchup/templates/default/layout/html/footer.erb +4 -4
- data/lib/yard-sketchup/templates/default/layout/html/headers.erb +15 -15
- data/lib/yard-sketchup/templates/default/layout/html/layout.erb +56 -56
- data/lib/yard-sketchup/templates/default/layout/html/navbar.erb +36 -36
- data/lib/yard-sketchup/templates/default/layout/html/setup.rb +25 -25
- data/lib/yard-sketchup/templates/default/method_details/html/method_signature.erb +25 -25
- data/lib/yard-sketchup/templates/default/method_details/setup.rb +11 -11
- data/lib/yard-sketchup/templates/default/module/html/box_info.erb +37 -37
- data/lib/yard-sketchup/templates/default/module/html/constant_summary.erb +17 -17
- data/lib/yard-sketchup/templates/default/module/html/method_summary.erb +18 -18
- data/lib/yard-sketchup/templates/inheritance/fulldoc/text/setup.rb +54 -54
- data/lib/yard-sketchup/templates/stubs/fulldoc/text/setup.rb +372 -361
- data/lib/yard-sketchup/templates/versions/fulldoc/text/setup.rb +25 -25
- data/lib/yard-sketchup/version.rb +3 -3
- data/lib/yard-sketchup/yard/html_helper.rb +16 -16
- data/lib/yard-sketchup.rb +37 -37
- data/yard-sketchup.gemspec +26 -26
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3979def1e3596fe3fc383b4e78e1fac58b7e78cc4ea4e74d63889d10f6c0568b
|
4
|
+
data.tar.gz: 7fc768e9ce3ad8cf58e075f031451a4ef943dd058e7d63b790dde11386e38ceb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0649c7a08f7df3c3a7e816e0ab0dd0a8fa17d1d421b0bfb3db6a5f3a9b17631f02563a0a972da54c569cd0c6b914b2d356983588535dedfde4d3e310c7f78962'
|
7
|
+
data.tar.gz: 95d05a25af4be851bed01cfa15e7a2fac1d56961f9932928621295565c96f3950a586fe0310de815c5d95d0e53d6f07422a0d99561fd59caaf29f68773a3a829
|
data/Gemfile
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
source 'https://rubygems.org'
|
4
|
-
|
5
|
-
gemspec
|
6
|
-
|
7
|
-
gem 'rake', '~> 12.0', require: false
|
8
|
-
|
9
|
-
group :tools do
|
10
|
-
gem 'colorize', '~> 0.0', require: false
|
11
|
-
gem 'git', '~> 1.3', require: false
|
12
|
-
gem 'git_diff_parser', '~> 2.3', require: false
|
13
|
-
gem 'thor', '~> 0.19', require: false
|
14
|
-
end
|
15
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
gemspec
|
6
|
+
|
7
|
+
gem 'rake', '~> 12.0', require: false
|
8
|
+
|
9
|
+
group :tools do
|
10
|
+
gem 'colorize', '~> 0.0', require: false
|
11
|
+
gem 'git', '~> 1.3', require: false
|
12
|
+
gem 'git_diff_parser', '~> 2.3', require: false
|
13
|
+
gem 'thor', '~> 0.19', require: false
|
14
|
+
end
|
15
|
+
|
@@ -1,52 +1,52 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Handlers
|
4
|
-
module C
|
5
|
-
class Base < Handlers::Base
|
6
|
-
|
7
|
-
# Temporary workaround until a proper fix can be applied to YARD master.
|
8
|
-
alias_method :namespace_for_variable_original, :namespace_for_variable
|
9
|
-
def namespace_for_variable(var)
|
10
|
-
patch_namespace_for_variable(var) ||
|
11
|
-
namespace_for_variable_original(var)
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def patch_namespace_for_variable(var)
|
17
|
-
name = PATCH_ERROR_NAME[var]
|
18
|
-
# $stderr.puts "Mapped #{var} to #{name}" if name
|
19
|
-
name.nil? ? nil : P(name)
|
20
|
-
end
|
21
|
-
|
22
|
-
# Generated by update_error_map.rb (Copy+past results)
|
23
|
-
PATCH_ERROR_NAME = {
|
24
|
-
'rb_eException' => 'Exception',
|
25
|
-
'rb_eSystemExit' => 'SystemExit',
|
26
|
-
'rb_eFatal' => 'fatal',
|
27
|
-
'rb_eSignal' => 'SignalException',
|
28
|
-
'rb_eInterrupt' => 'Interrupt',
|
29
|
-
'rb_eStandardError' => 'StandardError',
|
30
|
-
'rb_eTypeError' => 'TypeError',
|
31
|
-
'rb_eArgError' => 'ArgumentError',
|
32
|
-
'rb_eIndexError' => 'IndexError',
|
33
|
-
'rb_eKeyError' => 'KeyError',
|
34
|
-
'rb_eRangeError' => 'RangeError',
|
35
|
-
'rb_eScriptError' => 'ScriptError',
|
36
|
-
'rb_eSyntaxError' => 'SyntaxError',
|
37
|
-
'rb_eLoadError' => 'LoadError',
|
38
|
-
'rb_eNotImpError' => 'NotImplementedError',
|
39
|
-
'rb_eNameError' => 'NameError',
|
40
|
-
'rb_eNoMethodError' => 'NoMethodError',
|
41
|
-
'rb_eRuntimeError' => 'RuntimeError',
|
42
|
-
'rb_eFrozenError' => 'FrozenError',
|
43
|
-
'rb_eSecurityError' => 'SecurityError',
|
44
|
-
'rb_eNoMemError' => 'NoMemoryError',
|
45
|
-
'rb_eEncodingError' => 'EncodingError',
|
46
|
-
'rb_eSystemCallError' => 'SystemCallError',
|
47
|
-
}
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Handlers
|
4
|
+
module C
|
5
|
+
class Base < Handlers::Base
|
6
|
+
|
7
|
+
# Temporary workaround until a proper fix can be applied to YARD master.
|
8
|
+
alias_method :namespace_for_variable_original, :namespace_for_variable
|
9
|
+
def namespace_for_variable(var)
|
10
|
+
patch_namespace_for_variable(var) ||
|
11
|
+
namespace_for_variable_original(var)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def patch_namespace_for_variable(var)
|
17
|
+
name = PATCH_ERROR_NAME[var]
|
18
|
+
# $stderr.puts "Mapped #{var} to #{name}" if name
|
19
|
+
name.nil? ? nil : P(name)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Generated by update_error_map.rb (Copy+past results)
|
23
|
+
PATCH_ERROR_NAME = {
|
24
|
+
'rb_eException' => 'Exception',
|
25
|
+
'rb_eSystemExit' => 'SystemExit',
|
26
|
+
'rb_eFatal' => 'fatal',
|
27
|
+
'rb_eSignal' => 'SignalException',
|
28
|
+
'rb_eInterrupt' => 'Interrupt',
|
29
|
+
'rb_eStandardError' => 'StandardError',
|
30
|
+
'rb_eTypeError' => 'TypeError',
|
31
|
+
'rb_eArgError' => 'ArgumentError',
|
32
|
+
'rb_eIndexError' => 'IndexError',
|
33
|
+
'rb_eKeyError' => 'KeyError',
|
34
|
+
'rb_eRangeError' => 'RangeError',
|
35
|
+
'rb_eScriptError' => 'ScriptError',
|
36
|
+
'rb_eSyntaxError' => 'SyntaxError',
|
37
|
+
'rb_eLoadError' => 'LoadError',
|
38
|
+
'rb_eNotImpError' => 'NotImplementedError',
|
39
|
+
'rb_eNameError' => 'NameError',
|
40
|
+
'rb_eNoMethodError' => 'NoMethodError',
|
41
|
+
'rb_eRuntimeError' => 'RuntimeError',
|
42
|
+
'rb_eFrozenError' => 'FrozenError',
|
43
|
+
'rb_eSecurityError' => 'SecurityError',
|
44
|
+
'rb_eNoMemError' => 'NoMemoryError',
|
45
|
+
'rb_eEncodingError' => 'EncodingError',
|
46
|
+
'rb_eSystemCallError' => 'SystemCallError',
|
47
|
+
}
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,134 +1,134 @@
|
|
1
|
-
module SketchUpYARD
|
2
|
-
module Stubs
|
3
|
-
class AutoLoadGenerator
|
4
|
-
|
5
|
-
# @param [YARD::CodeObject::Base] namespace_objects
|
6
|
-
# @param [IO] out
|
7
|
-
def generate(namespace_objects, out)
|
8
|
-
dependencies = resolve_dependencies(namespace_objects)
|
9
|
-
out.puts "# This file is auto-generated by the `thor stubs` command."
|
10
|
-
required = Set.new
|
11
|
-
# Top level is special case.
|
12
|
-
top_level_path = File.join(sketchup_stubs_path, '_top_level.rb')
|
13
|
-
out.puts "require '#{top_level_path}'"
|
14
|
-
# The rest is resolved recursively.
|
15
|
-
dependencies.each { |object|
|
16
|
-
recurse_require(object, required, out)
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
class Node
|
23
|
-
|
24
|
-
attr_reader :object
|
25
|
-
attr_reader :dependencies
|
26
|
-
|
27
|
-
def initialize(object)
|
28
|
-
@object = object
|
29
|
-
@dependencies = SortedSet.new
|
30
|
-
end
|
31
|
-
|
32
|
-
def root?
|
33
|
-
@object.namespace.root?
|
34
|
-
end
|
35
|
-
|
36
|
-
def path
|
37
|
-
@object.path
|
38
|
-
end
|
39
|
-
|
40
|
-
def namespace
|
41
|
-
@object.namespace
|
42
|
-
end
|
43
|
-
|
44
|
-
def <<(object)
|
45
|
-
@dependencies << object
|
46
|
-
end
|
47
|
-
|
48
|
-
def <=>(other)
|
49
|
-
@object.path <=> other.path
|
50
|
-
end
|
51
|
-
|
52
|
-
def hash
|
53
|
-
@object.path.hash
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
|
-
class NodeFactory
|
60
|
-
|
61
|
-
def initialize
|
62
|
-
@dependencies = {}
|
63
|
-
end
|
64
|
-
|
65
|
-
def node(yard_object)
|
66
|
-
item = @dependencies[yard_object.path]
|
67
|
-
return item if item
|
68
|
-
item = Node.new(yard_object)
|
69
|
-
@dependencies[yard_object.path] = item
|
70
|
-
item
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
74
|
-
|
75
|
-
|
76
|
-
def resolve_dependencies(yard_objects)
|
77
|
-
factory = NodeFactory.new
|
78
|
-
dependencies = SortedSet.new
|
79
|
-
|
80
|
-
yard_objects.each { |yard_object|
|
81
|
-
object = factory.node(yard_object)
|
82
|
-
|
83
|
-
if yard_object.type == :class && yard_object.superclass.name != :Object
|
84
|
-
object << factory.node(yard_object.superclass)
|
85
|
-
end
|
86
|
-
|
87
|
-
unless yard_object.namespace.path.empty?
|
88
|
-
object << factory.node(yard_object.namespace)
|
89
|
-
end
|
90
|
-
|
91
|
-
dependencies << object
|
92
|
-
}
|
93
|
-
dependencies
|
94
|
-
end
|
95
|
-
|
96
|
-
def print_dependencies(object, indent = 0)
|
97
|
-
indent_space = ' ' * indent
|
98
|
-
puts "#{indent_space}#{object.path}"
|
99
|
-
object.dependencies.each { |dependency|
|
100
|
-
print_dependencies(dependency, indent + 1)
|
101
|
-
}
|
102
|
-
end
|
103
|
-
|
104
|
-
def sketchup_stubs_path
|
105
|
-
File.join('sketchup-api-stubs', 'stubs')
|
106
|
-
end
|
107
|
-
|
108
|
-
def stub_filename(object)
|
109
|
-
basename = object.path.gsub('::', '/')
|
110
|
-
basename = '_top_level' if basename.empty?
|
111
|
-
File.join(sketchup_stubs_path, "#{basename}.rb")
|
112
|
-
end
|
113
|
-
|
114
|
-
def recurse_require(object, required, out, indent = 0)
|
115
|
-
return if required.include?(object.path)
|
116
|
-
# If a class inherit from a core Ruby class we might get a Proxy code
|
117
|
-
# object here. We don't generate stubs for those and thus we don't want
|
118
|
-
# to create a require for them either.
|
119
|
-
return if object.object.is_a?(YARD::CodeObjects::Proxy)
|
120
|
-
# First require the dependencies.
|
121
|
-
object.dependencies.each { |dependency|
|
122
|
-
recurse_require(dependency, required, out, indent + 1)
|
123
|
-
}
|
124
|
-
# Then we're good to require this object.
|
125
|
-
require_path = stub_filename(object)
|
126
|
-
# indent_space = ' ' * indent
|
127
|
-
# out.puts "#{indent_space}require '#{require_path}'"
|
128
|
-
out.puts "require '#{require_path}'"
|
129
|
-
required << object.path
|
130
|
-
end
|
131
|
-
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
1
|
+
module SketchUpYARD
|
2
|
+
module Stubs
|
3
|
+
class AutoLoadGenerator
|
4
|
+
|
5
|
+
# @param [YARD::CodeObject::Base] namespace_objects
|
6
|
+
# @param [IO] out
|
7
|
+
def generate(namespace_objects, out)
|
8
|
+
dependencies = resolve_dependencies(namespace_objects)
|
9
|
+
out.puts "# This file is auto-generated by the `thor stubs` command."
|
10
|
+
required = Set.new
|
11
|
+
# Top level is special case.
|
12
|
+
top_level_path = File.join(sketchup_stubs_path, '_top_level.rb')
|
13
|
+
out.puts "require '#{top_level_path}'"
|
14
|
+
# The rest is resolved recursively.
|
15
|
+
dependencies.each { |object|
|
16
|
+
recurse_require(object, required, out)
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
class Node
|
23
|
+
|
24
|
+
attr_reader :object
|
25
|
+
attr_reader :dependencies
|
26
|
+
|
27
|
+
def initialize(object)
|
28
|
+
@object = object
|
29
|
+
@dependencies = SortedSet.new
|
30
|
+
end
|
31
|
+
|
32
|
+
def root?
|
33
|
+
@object.namespace.root?
|
34
|
+
end
|
35
|
+
|
36
|
+
def path
|
37
|
+
@object.path
|
38
|
+
end
|
39
|
+
|
40
|
+
def namespace
|
41
|
+
@object.namespace
|
42
|
+
end
|
43
|
+
|
44
|
+
def <<(object)
|
45
|
+
@dependencies << object
|
46
|
+
end
|
47
|
+
|
48
|
+
def <=>(other)
|
49
|
+
@object.path <=> other.path
|
50
|
+
end
|
51
|
+
|
52
|
+
def hash
|
53
|
+
@object.path.hash
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
class NodeFactory
|
60
|
+
|
61
|
+
def initialize
|
62
|
+
@dependencies = {}
|
63
|
+
end
|
64
|
+
|
65
|
+
def node(yard_object)
|
66
|
+
item = @dependencies[yard_object.path]
|
67
|
+
return item if item
|
68
|
+
item = Node.new(yard_object)
|
69
|
+
@dependencies[yard_object.path] = item
|
70
|
+
item
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
def resolve_dependencies(yard_objects)
|
77
|
+
factory = NodeFactory.new
|
78
|
+
dependencies = SortedSet.new
|
79
|
+
|
80
|
+
yard_objects.each { |yard_object|
|
81
|
+
object = factory.node(yard_object)
|
82
|
+
|
83
|
+
if yard_object.type == :class && yard_object.superclass.name != :Object
|
84
|
+
object << factory.node(yard_object.superclass)
|
85
|
+
end
|
86
|
+
|
87
|
+
unless yard_object.namespace.path.empty?
|
88
|
+
object << factory.node(yard_object.namespace)
|
89
|
+
end
|
90
|
+
|
91
|
+
dependencies << object
|
92
|
+
}
|
93
|
+
dependencies
|
94
|
+
end
|
95
|
+
|
96
|
+
def print_dependencies(object, indent = 0)
|
97
|
+
indent_space = ' ' * indent
|
98
|
+
puts "#{indent_space}#{object.path}"
|
99
|
+
object.dependencies.each { |dependency|
|
100
|
+
print_dependencies(dependency, indent + 1)
|
101
|
+
}
|
102
|
+
end
|
103
|
+
|
104
|
+
def sketchup_stubs_path
|
105
|
+
File.join('sketchup-api-stubs', 'stubs')
|
106
|
+
end
|
107
|
+
|
108
|
+
def stub_filename(object)
|
109
|
+
basename = object.path.gsub('::', '/')
|
110
|
+
basename = '_top_level' if basename.empty?
|
111
|
+
File.join(sketchup_stubs_path, "#{basename}.rb")
|
112
|
+
end
|
113
|
+
|
114
|
+
def recurse_require(object, required, out, indent = 0)
|
115
|
+
return if required.include?(object.path)
|
116
|
+
# If a class inherit from a core Ruby class we might get a Proxy code
|
117
|
+
# object here. We don't generate stubs for those and thus we don't want
|
118
|
+
# to create a require for them either.
|
119
|
+
return if object.object.is_a?(YARD::CodeObjects::Proxy)
|
120
|
+
# First require the dependencies.
|
121
|
+
object.dependencies.each { |dependency|
|
122
|
+
recurse_require(dependency, required, out, indent + 1)
|
123
|
+
}
|
124
|
+
# Then we're good to require this object.
|
125
|
+
require_path = stub_filename(object)
|
126
|
+
# indent_space = ' ' * indent
|
127
|
+
# out.puts "#{indent_space}require '#{require_path}'"
|
128
|
+
out.puts "require '#{require_path}'"
|
129
|
+
required << object.path
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -1,44 +1,44 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
require 'set'
|
3
|
-
require 'stringio'
|
4
|
-
|
5
|
-
include Helpers::ModuleHelper
|
6
|
-
|
7
|
-
def init
|
8
|
-
generate_changelog
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
def all_objects
|
13
|
-
run_verifier(Registry.all())
|
14
|
-
end
|
15
|
-
|
16
|
-
def namespace_objects
|
17
|
-
run_verifier(Registry.all(:class, :module))
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def output_path
|
22
|
-
options.serializer.options[:basepath] || Dir.pwd
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
def changelog_filename
|
27
|
-
'Changelog SU201x.log'
|
28
|
-
end
|
29
|
-
|
30
|
-
def generate_changelog
|
31
|
-
#p (methods - Object.instance_methods).sort
|
32
|
-
#p ARGV
|
33
|
-
puts "Generating #{changelog_filename}..."
|
34
|
-
output = StringIO.new
|
35
|
-
new_objects = all_objects.sort { |a, b| a.path <=> b.path }
|
36
|
-
new_objects.each do |object|
|
37
|
-
#object.meths.each { |method|
|
38
|
-
#methods << "#{method.namespace}##{method.name}"
|
39
|
-
#}
|
40
|
-
output.puts "Added #{object.type} #{object.path}"
|
41
|
-
end
|
42
|
-
changelog_path = File.join(output_path, changelog_filename)
|
43
|
-
File.write(changelog_path, output.string)
|
44
|
-
end
|
1
|
+
require 'fileutils'
|
2
|
+
require 'set'
|
3
|
+
require 'stringio'
|
4
|
+
|
5
|
+
include Helpers::ModuleHelper
|
6
|
+
|
7
|
+
def init
|
8
|
+
generate_changelog
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def all_objects
|
13
|
+
run_verifier(Registry.all())
|
14
|
+
end
|
15
|
+
|
16
|
+
def namespace_objects
|
17
|
+
run_verifier(Registry.all(:class, :module))
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def output_path
|
22
|
+
options.serializer.options[:basepath] || Dir.pwd
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def changelog_filename
|
27
|
+
'Changelog SU201x.log'
|
28
|
+
end
|
29
|
+
|
30
|
+
def generate_changelog
|
31
|
+
#p (methods - Object.instance_methods).sort
|
32
|
+
#p ARGV
|
33
|
+
puts "Generating #{changelog_filename}..."
|
34
|
+
output = StringIO.new
|
35
|
+
new_objects = all_objects.sort { |a, b| a.path <=> b.path }
|
36
|
+
new_objects.each do |object|
|
37
|
+
#object.meths.each { |method|
|
38
|
+
#methods << "#{method.namespace}##{method.name}"
|
39
|
+
#}
|
40
|
+
output.puts "Added #{object.type} #{object.path}"
|
41
|
+
end
|
42
|
+
changelog_path = File.join(output_path, changelog_filename)
|
43
|
+
File.write(changelog_path, output.string)
|
44
|
+
end
|
@@ -1,41 +1,41 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
require 'set'
|
3
|
-
|
4
|
-
include Helpers::ModuleHelper
|
5
|
-
|
6
|
-
MANIFEST_FILENAME = 'coverage.manifest'.freeze
|
7
|
-
|
8
|
-
def init
|
9
|
-
generate_manifest
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
def namespace_objects
|
14
|
-
run_verifier(Registry.all(:class, :module))
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
def output_path
|
19
|
-
options.serializer.options[:basepath] || Dir.pwd
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
def generate_manifest
|
24
|
-
puts "Generating #{MANIFEST_FILENAME}..."
|
25
|
-
methods = Set.new
|
26
|
-
namespace_objects.each do |object|
|
27
|
-
run_verifier(object.meths).each { |method|
|
28
|
-
# TODO(thomthom): Currently the manifest doesn't distinguish between
|
29
|
-
# class and instance methods. This should be addressed, but we need to
|
30
|
-
# update TestUp to handle this first.
|
31
|
-
# TODO(thomthom): Make this a configurable filter.
|
32
|
-
# Layout has its own tests - and should be isolated so its own suite.
|
33
|
-
next if method.namespace.to_s.start_with?('Layout')
|
34
|
-
methods << "#{method.namespace}.#{method.name}"
|
35
|
-
}
|
36
|
-
end
|
37
|
-
manifest = methods.sort.join("\n")
|
38
|
-
manifest_path = File.join(output_path, MANIFEST_FILENAME)
|
39
|
-
puts manifest_path
|
40
|
-
File.write(manifest_path, manifest)
|
41
|
-
end
|
1
|
+
require 'fileutils'
|
2
|
+
require 'set'
|
3
|
+
|
4
|
+
include Helpers::ModuleHelper
|
5
|
+
|
6
|
+
MANIFEST_FILENAME = 'coverage.manifest'.freeze
|
7
|
+
|
8
|
+
def init
|
9
|
+
generate_manifest
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
def namespace_objects
|
14
|
+
run_verifier(Registry.all(:class, :module))
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def output_path
|
19
|
+
options.serializer.options[:basepath] || Dir.pwd
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def generate_manifest
|
24
|
+
puts "Generating #{MANIFEST_FILENAME}..."
|
25
|
+
methods = Set.new
|
26
|
+
namespace_objects.each do |object|
|
27
|
+
run_verifier(object.meths).each { |method|
|
28
|
+
# TODO(thomthom): Currently the manifest doesn't distinguish between
|
29
|
+
# class and instance methods. This should be addressed, but we need to
|
30
|
+
# update TestUp to handle this first.
|
31
|
+
# TODO(thomthom): Make this a configurable filter.
|
32
|
+
# Layout has its own tests - and should be isolated so its own suite.
|
33
|
+
next if method.namespace.to_s.start_with?('Layout')
|
34
|
+
methods << "#{method.namespace}.#{method.name}"
|
35
|
+
}
|
36
|
+
end
|
37
|
+
manifest = methods.sort.join("\n")
|
38
|
+
manifest_path = File.join(output_path, MANIFEST_FILENAME)
|
39
|
+
puts manifest_path
|
40
|
+
File.write(manifest_path, manifest)
|
41
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
@charset "UTF-8";/*!
|
2
|
-
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
3
|
-
* Copyright 2011-2015 Twitter, Inc.
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5
|
-
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.sr-only,img{border:0}.caret,img{vertical-align:middle}.dropdown-menu,.nav,ul li.expanded,ul li.leaf{list-style:none}header,nav{display:block}a:active,a:hover{outline:0}button{color:inherit;font:inherit;margin:0;overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}img{page-break-inside:avoid;max-width:100%!important}.navbar{display:none}}.nav>li>a:focus,.nav>li>a:hover,.navbar-brand:focus,.navbar-brand:hover,a,a:focus,a:hover{text-decoration:none}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:16px;line-height:1.42857}button{font-family:inherit;font-size:inherit;line-height:inherit}a{background-color:transparent;color:#e72b2d}a:focus,a:hover{color:#b11416}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.dropdown-toggle:focus,.navbar-toggle:focus{outline:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}ul{margin-top:0;margin-bottom:11px}ul ul{margin-bottom:0}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.collapse{display:none}.collapse.in{display:block}.caret{display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:16px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{color:#fff}.nav{margin-bottom:0;padding-left:0}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{padding:10px 15px}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{content:" ";display:table}.nav>li>a:focus,.nav>li>a:hover{background-color:#eee}.nav>li>a>img{max-width:none}.navbar{position:relative;min-height:50px;margin-bottom:22px;border:1px solid transparent}.navbar:after{clear:both}.navbar-header:after{clear:both}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:0}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse{padding-left:0;padding-right:0}.navbar-fixed-top{border-radius:0}}.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse{max-height:200px}}.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;top:0;border-width:0 0 1px}.navbar-toggle,body{position:relative}.navbar-brand{float:left;padding:14px 15px;font-size:20px;line-height:22px;height:50px}.navbar-toggle{float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:0;background-image:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:22px}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14px;padding-bottom:14px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-btn{margin-top:7px;margin-bottom:7px}.navbar-inverse{background-color:#363545;border-color:#000;box-shadow:1px 1px 6px #35393e}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#D4D5D1;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse{border-color:#262531}.pull-left{float:left!important}@-ms-viewport{width:device-width}.navbar .logo{margin-right:-15px;padding-left:15px;padding-right:15px}@media screen and (min-width:768px){.navbar .logo{margin-right:0;padding-left:0}.navbar-collapse{float:right}}@font-face{font-family:fontello;src:url(/sites/all/themes/sketch/fonts/fontello/font/fontello.eot?93575470);src:url(/sites/all/themes/sketch/fonts/fontello/font/fontello.eot?93575470#iefix) format("embedded-opentype"),url(/sites/all/themes/sketch/fonts/fontello/font/fontello.woff?93575470) format("woff"),url(/sites/all/themes/sketch/fonts/fontello/font/fontello.ttf?93575470) format("truetype"),url(/sites/all/themes/sketch/fonts/fontello/font/fontello.svg?93575470#fontello) format("svg");font-weight:400;font-style:normal}[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar-brand,.navbar-nav .caret{display:none}/*!
|
6
|
-
Animate.css - http://daneden.me/animate
|
7
|
-
Version - 3.4.0
|
8
|
-
Licensed under the MIT license - http://opensource.org/licenses/MIT
|
9
|
-
|
10
|
-
Copyright (c) 2015 Daniel Eden
|
1
|
+
@charset "UTF-8";/*!
|
2
|
+
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
3
|
+
* Copyright 2011-2015 Twitter, Inc.
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5
|
+
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.sr-only,img{border:0}.caret,img{vertical-align:middle}.dropdown-menu,.nav,ul li.expanded,ul li.leaf{list-style:none}header,nav{display:block}a:active,a:hover{outline:0}button{color:inherit;font:inherit;margin:0;overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}img{page-break-inside:avoid;max-width:100%!important}.navbar{display:none}}.nav>li>a:focus,.nav>li>a:hover,.navbar-brand:focus,.navbar-brand:hover,a,a:focus,a:hover{text-decoration:none}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:16px;line-height:1.42857}button{font-family:inherit;font-size:inherit;line-height:inherit}a{background-color:transparent;color:#e72b2d}a:focus,a:hover{color:#b11416}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.dropdown-toggle:focus,.navbar-toggle:focus{outline:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}ul{margin-top:0;margin-bottom:11px}ul ul{margin-bottom:0}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.collapse{display:none}.collapse.in{display:block}.caret{display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:16px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{color:#fff}.nav{margin-bottom:0;padding-left:0}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{padding:10px 15px}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{content:" ";display:table}.nav>li>a:focus,.nav>li>a:hover{background-color:#eee}.nav>li>a>img{max-width:none}.navbar{position:relative;min-height:50px;margin-bottom:22px;border:1px solid transparent}.navbar:after{clear:both}.navbar-header:after{clear:both}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:0}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse{padding-left:0;padding-right:0}.navbar-fixed-top{border-radius:0}}.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse{max-height:200px}}.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;top:0;border-width:0 0 1px}.navbar-toggle,body{position:relative}.navbar-brand{float:left;padding:14px 15px;font-size:20px;line-height:22px;height:50px}.navbar-toggle{float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:0;background-image:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:22px}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14px;padding-bottom:14px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-btn{margin-top:7px;margin-bottom:7px}.navbar-inverse{background-color:#363545;border-color:#000;box-shadow:1px 1px 6px #35393e}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#D4D5D1;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse{border-color:#262531}.pull-left{float:left!important}@-ms-viewport{width:device-width}.navbar .logo{margin-right:-15px;padding-left:15px;padding-right:15px}@media screen and (min-width:768px){.navbar .logo{margin-right:0;padding-left:0}.navbar-collapse{float:right}}@font-face{font-family:fontello;src:url(/sites/all/themes/sketch/fonts/fontello/font/fontello.eot?93575470);src:url(/sites/all/themes/sketch/fonts/fontello/font/fontello.eot?93575470#iefix) format("embedded-opentype"),url(/sites/all/themes/sketch/fonts/fontello/font/fontello.woff?93575470) format("woff"),url(/sites/all/themes/sketch/fonts/fontello/font/fontello.ttf?93575470) format("truetype"),url(/sites/all/themes/sketch/fonts/fontello/font/fontello.svg?93575470#fontello) format("svg");font-weight:400;font-style:normal}[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar-brand,.navbar-nav .caret{display:none}/*!
|
6
|
+
Animate.css - http://daneden.me/animate
|
7
|
+
Version - 3.4.0
|
8
|
+
Licensed under the MIT license - http://opensource.org/licenses/MIT
|
9
|
+
|
10
|
+
Copyright (c) 2015 Daniel Eden
|
11
11
|
*/body,html{background-color:#363545;color:#4d5259;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.navbar-inverse .navbar-nav>li>a{font-size:14px;padding:22px 25px 10px}li.dropdown{border-bottom:2px solid transparent}.dropdown-menu>li>a{font-size:14px}.logo{margin:0;padding:11px 7px 12px 0}.logo img{height:33px}.icon-bar{transition:all .1s}.trimble-top-menu-item+ul.dropdown-menu{background-color:#005596}.trimble-top-menu-item+ul li>a{color:#fff}.trimble-top-menu-item img{width:65px;vertical-align:-2px}.navbar-inverse .navbar-nav>li>a.top-menu--download-button{font-size:14px!important;margin-top:0!important;margin-bottom:0!important;display:none;color:#fff;background-color:#e72b2d;border:1px solid #e72b2d;border-radius:0;font-weight:400;white-space:normal}.navbar-inverse .navbar-nav>li>a.top-menu--download-button:hover{background-color:#9b1113;border:1px solid #9b1113;box-shadow:#9b1113 0 0 0 4px inset;color:#fff}.navbar-inverse .navbar-nav>li>a.top-menu--download-button:active,.navbar-inverse .navbar-nav>li>a.top-menu--download-button:focus,.navbar-inverse .navbar-nav>li>a.top-menu--download-button:hover{color:#fff;text-decoration:none}
|