rspec-illustrate 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +44 -3
- data/Rakefile +15 -5
- data/lib/rspec/formatters/illustrated_documentation_formatter.rb +1 -1
- data/lib/rspec/formatters/illustrated_html_formatter.rb +3 -4
- data/lib/rspec/formatters/yard.rb +153 -0
- data/lib/rspec/illustrate/version.rb +1 -1
- data/lib/rspec/illustrate/yard.rb +55 -0
- data/lib/rspec/illustrate.rb +1 -1
- data/rspec-illustrate.gemspec +5 -3
- data/yard-template/default/fulldoc/html/css/rspec.css +50 -0
- data/yard-template/default/fulldoc/html/setup.rb +15 -0
- data/yard-template/default/layout/html/footer.erb +8 -0
- data/yard-template/default/layout/html/setup.rb +5 -0
- data/yard-template/default/method_details/html/setup.rb +6 -0
- data/yard-template/default/method_details/html/specs.erb +6 -0
- data/yard-template/default/module/html/setup.rb +4 -0
- data/yard-template/default/module/html/specs.erb +4 -0
- metadata +63 -36
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d870dec93914bb6ba39750aec5ee4d761ddaf57a
|
4
|
+
data.tar.gz: 00f1fd8e6e03a31c48d0d93ecf0d86e0fa94ab6f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d3af7d4a069a34fdf20488e10ef6d8996e71aeeb0c2fecb8d3e718580d05dc55d41e1b71999ede0e109580f543a6b7fe03fc1a250eb16def5d69ca9dc3fb7ae4
|
7
|
+
data.tar.gz: 4e226af173505d8fdb5fde8eddb74bb6da99fc842382205495221f77f20b9519d661b57fb3cb65551991f9ae127988f43cf182e147e9c60fff0d27c9e4285dec
|
data/README.md
CHANGED
@@ -68,14 +68,55 @@ Array
|
|
68
68
|
[1, 2, 3]
|
69
69
|
```
|
70
70
|
|
71
|
+
## Import test results and illustrations into YARD
|
72
|
+
|
73
|
+
RSpec-Illustrate comes with a template for YARD and an RSpec formatter that
|
74
|
+
outputs a specific HTML format that the template can import.
|
75
|
+
|
76
|
+
To create the test report you have to execute RSpec with the specific formatter.
|
77
|
+
You need to add the following to your `Rakefile`:
|
78
|
+
```ruby
|
79
|
+
require "rspec/core/rake_task"
|
80
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
81
|
+
t.rspec_opts = "--format RSpec::Formatters::YARD --out ./doc/api.rspec"
|
82
|
+
end
|
83
|
+
```
|
84
|
+
|
85
|
+
Keep in mind that the file must end with `.rspec` in order for the template to
|
86
|
+
understand it's an RSpec output file. You load the template by invoking `require
|
87
|
+
rspec/illustrate/yard` and you import it by giving it to YARD as a normal input
|
88
|
+
file. Add the following to your `Rakefile`:
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
require 'yard'
|
92
|
+
require 'rspec/illustrate/yard'
|
93
|
+
YARD::Rake::YardocTask.new(:doc) do |t|
|
94
|
+
t.files = ['lib/**/*.rb', 'doc/api.rspec']
|
95
|
+
end
|
96
|
+
task :doc => [:spec]
|
97
|
+
```
|
98
|
+
|
99
|
+
You can also include it as an extra file if you want to view it as a complete
|
100
|
+
test report (it is HTML after all). Simply add it to the list of extra files by
|
101
|
+
adding it after the `-` sign:
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
require 'yard'
|
105
|
+
require 'rspec/illustrate/yard'
|
106
|
+
YARD::Rake::YardocTask.new(:doc) do |t|
|
107
|
+
t.files = ['lib/**/*.rb', 'doc/api.rspec', '-', 'doc/api.rspec']
|
108
|
+
end
|
109
|
+
task :doc => [:spec]
|
110
|
+
```
|
111
|
+
|
71
112
|
|
72
113
|
## Development
|
73
114
|
|
74
115
|
After checking out the repo, run `bin/setup` to install dependencies.
|
75
116
|
|
76
|
-
To install this gem onto your local machine, run `
|
77
|
-
|
78
|
-
|
117
|
+
To install this gem onto your local machine, run `rake install`. To release a
|
118
|
+
new version, update the version number in `version.rb`, and then run `rake
|
119
|
+
release` to create a git tag for the version, push git commits
|
79
120
|
and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
80
121
|
|
81
122
|
## Contributing
|
data/Rakefile
CHANGED
@@ -1,15 +1,25 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require 'rake/clean'
|
2
3
|
Bundler.setup
|
3
4
|
Bundler::GemHelper.install_tasks
|
4
5
|
|
5
6
|
require "rspec/core/rake_task"
|
7
|
+
desc "Execute RSpec and create a test report at ./doc/api.rspec."
|
6
8
|
RSpec::Core::RakeTask.new(:spec) do |t|
|
7
|
-
t.rspec_opts = "--format RSpec::Formatters::
|
9
|
+
t.rspec_opts = "--format RSpec::Formatters::YARD --out ./doc/api.rspec"
|
8
10
|
end
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
+
require 'yard'
|
13
|
+
require 'rspec/illustrate/yard'
|
14
|
+
desc "Create documentation."
|
15
|
+
YARD::Rake::YardocTask.new(:doc) do |t|
|
16
|
+
t.files = ['lib/**/*.rb', 'doc/api.rspec', '-', 'doc/api.rspec']
|
12
17
|
end
|
18
|
+
CLEAN.include("doc")
|
19
|
+
CLEAN.include(".yardoc")
|
20
|
+
task :doc => [:spec]
|
13
21
|
|
14
|
-
|
15
|
-
|
22
|
+
desc "Execute tests."
|
23
|
+
RSpec::Core::RakeTask.new(:test)
|
24
|
+
|
25
|
+
task :default => :test
|
@@ -10,11 +10,10 @@ RSpec.configure do |c|
|
|
10
10
|
html << "<span>#{illustration[:label].to_s}</span>"
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
html << content.to_html
|
13
|
+
if illustration[:html] then
|
14
|
+
html << illustration[:html]
|
16
15
|
else
|
17
|
-
html << "<pre>#{
|
16
|
+
html << "<pre>#{illustration[:text]}</pre>"
|
18
17
|
end
|
19
18
|
|
20
19
|
return html << "</dd>"
|
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'rspec/formatters/illustration_formatter'
|
2
|
+
require 'rexml/document'
|
3
|
+
|
4
|
+
RSpec.configure do |c|
|
5
|
+
c.add_setting(:title, :default => "RSpec results")
|
6
|
+
end
|
7
|
+
|
8
|
+
module RSpec
|
9
|
+
module Formatters
|
10
|
+
|
11
|
+
# An RSpec output formatter that writes in a specific HTML format that can
|
12
|
+
# be imported by the YARD template. The output can also be viewed as a
|
13
|
+
# stand-alone test report.
|
14
|
+
class YARD
|
15
|
+
include RSpec::Formatters
|
16
|
+
|
17
|
+
# @return [String] the path to the CSS file in the YARD-template, which
|
18
|
+
# will be imported into the header so the output HTML can
|
19
|
+
# be viewed as a stand-alone document.
|
20
|
+
CSS_FILE = File.join(File.dirname(__FILE__), '..','..','..',
|
21
|
+
'yard-template', 'default', 'fulldoc', 'html', 'css', 'rspec.css')
|
22
|
+
|
23
|
+
RSpec::Core::Formatters.register self, :example_passed, :example_pending,
|
24
|
+
:example_failed, :stop
|
25
|
+
|
26
|
+
def initialize(output)
|
27
|
+
@output = output
|
28
|
+
@document = REXML::Document.new("<!DOCTYPE html>")
|
29
|
+
|
30
|
+
html = @document.add_element("html")
|
31
|
+
head = html.add_element("head")
|
32
|
+
head.add_element("style").text = IO.read(CSS_FILE)
|
33
|
+
@body = html.add_element("body")
|
34
|
+
end
|
35
|
+
|
36
|
+
# Called by RSpec for each example that passes.
|
37
|
+
# @param passed [RSpec::Core::Notifications::ExampleNotification]
|
38
|
+
def example_passed(passed)
|
39
|
+
node = xml_node_for_notification(passed, :show_when_passed)
|
40
|
+
node.attributes["class"] = "rspec_example_passed"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Called by RSpec for each example that is pending.
|
44
|
+
# @param pending [RSpec::Core::Notifications::ExampleNotification]
|
45
|
+
def example_pending(pending)
|
46
|
+
node = xml_node_for_notification(pending, :show_when_pending)
|
47
|
+
node.attributes["class"] = "rspec_example_pending"
|
48
|
+
end
|
49
|
+
|
50
|
+
# Called by RSpec for each example that failes.
|
51
|
+
# @param failure [RSpec::Core::Notifications::FailedExampleNotification]
|
52
|
+
def example_failed(failure)
|
53
|
+
node = xml_node_for_notification(failure, :show_when_pending)
|
54
|
+
node.attributes["class"] = "rspec_example_failed"
|
55
|
+
node.add_element("exception").text = failure.exception.message
|
56
|
+
node.add_element("backtrace").text = failure.formatted_backtrace.join("\n")
|
57
|
+
end
|
58
|
+
|
59
|
+
# Called by RSpec when the test suite is complete.
|
60
|
+
# @param notification [RSpec::Core::Notifications::ExamplesNotification]
|
61
|
+
def stop(notification)
|
62
|
+
@document.elements["html/head"].add_element("title").text =
|
63
|
+
RSpec.configuration.title
|
64
|
+
@document.write @output
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
# @param notification[RSpec::Core::Notifications:ExampleNotification]
|
70
|
+
# @return [REXML::Element] a new XML node that corresponds to the specific example.
|
71
|
+
def xml_node_for_notification(notification, filter_key)
|
72
|
+
example = notification.example
|
73
|
+
node = xml_node_for_example_group(example.example_group).add_element("div")
|
74
|
+
node.add_element("p", {'class'=>'rspec_example_paragraph'}).text = example.description
|
75
|
+
|
76
|
+
filter(illustrations_of(notification), filter_key).each{|illustration|
|
77
|
+
node.add_element(node_for_illustration(illustration))
|
78
|
+
}
|
79
|
+
|
80
|
+
node
|
81
|
+
end
|
82
|
+
|
83
|
+
# Creates a <div> node for the given illustration.
|
84
|
+
# @param illustration [Hash] the illustration.
|
85
|
+
# @return [REXML::Element] the XML node for the illustration.
|
86
|
+
def node_for_illustration(illustration)
|
87
|
+
node = REXML::Element.new("div")
|
88
|
+
node.add_attribute('class', 'rspec_illustration')
|
89
|
+
|
90
|
+
if label = illustration[:label] then
|
91
|
+
node.add_element("p", {'class'=>'rspec_illustration_label'}).text = label
|
92
|
+
end
|
93
|
+
|
94
|
+
if illustration.has_key?(:html) then
|
95
|
+
node.add_element(REXML::Text.new(illustration[:html], true, nil, true))
|
96
|
+
else
|
97
|
+
node.add_element("pre", {'class'=>'rspec_illustration_content'}).text =
|
98
|
+
REXML::Text.new(illustration[:text], true, nil, true)
|
99
|
+
end
|
100
|
+
|
101
|
+
node
|
102
|
+
end
|
103
|
+
|
104
|
+
# @param example_group [RSpec::Core::ExampleGroup]
|
105
|
+
# @return [REXML::Element] the XML node that corresponds to the specific example group,
|
106
|
+
# which will be created if it doesn't exist.
|
107
|
+
def xml_node_for_example_group(example_group)
|
108
|
+
node = @body
|
109
|
+
|
110
|
+
path = example_group.parent_groups.reverse
|
111
|
+
if example_group.described_class then
|
112
|
+
path = path.drop_while{|group|
|
113
|
+
group.described_class != example_group.described_class
|
114
|
+
}
|
115
|
+
|
116
|
+
# use the class/module description as the YARD specific CodeObject id
|
117
|
+
codeobject_id = path.shift.description
|
118
|
+
|
119
|
+
# merge root with first element if it is a method.
|
120
|
+
if path.size >= 1 && (path.first.description.start_with?('#') ||
|
121
|
+
path.first.description.start_with?('.')) then
|
122
|
+
codeobject_id = "#{codeobject_id}#{path.shift.description}"
|
123
|
+
end
|
124
|
+
|
125
|
+
# create first node with YARD-specific 'CodeObject' path as id.
|
126
|
+
node = xml_child_node_for_group(codeobject_id, codeobject_id, @body)
|
127
|
+
end
|
128
|
+
|
129
|
+
path.inject(node){|node, group|
|
130
|
+
xml_child_node_for_group(group.name, group.description, node)
|
131
|
+
}
|
132
|
+
end
|
133
|
+
|
134
|
+
|
135
|
+
# @param id [String] the id of the node.
|
136
|
+
# @param caption [String] the description of the node.
|
137
|
+
# @param parent [REXML::Element] the parent node to search within.
|
138
|
+
# @return [REXML::Element] the xml child node with the id and caption, which will be
|
139
|
+
# created if it doesn't exist.
|
140
|
+
def xml_child_node_for_group(id, caption, parent=@body)
|
141
|
+
child_node = parent.elements["div[@id='rspec_#{id}']"]
|
142
|
+
return child_node.elements["div[@class='rspec_example_group_children']"] if child_node
|
143
|
+
|
144
|
+
child_node = parent.add_element "div", {'id' => "rspec_#{id}",
|
145
|
+
'class'=>"rspec_example_group"}
|
146
|
+
child_node.add_element("div", {'class'=>'rspec_example_group_title'}).text = caption
|
147
|
+
child_node.add_element("div", {'class'=>'rspec_example_group_children'})
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
|
2
|
+
# Register the template
|
3
|
+
YARD::Templates::Engine.register_template_path File.join(File.dirname(__FILE__), '..', '..', '..', 'yard-template')
|
4
|
+
# Make sure *.rspec files are treated as HTML files if they are included as
|
5
|
+
# extra files (like test reports and such).
|
6
|
+
YARD::Templates::Helpers::MarkupHelper::MARKUP_EXTENSIONS[:html] << "rspec"
|
7
|
+
|
8
|
+
require 'rspec/illustrate/version'
|
9
|
+
require 'rexml/document'
|
10
|
+
|
11
|
+
module YARD
|
12
|
+
module Parser
|
13
|
+
# Parses the output from the RSpec::Illustrate::YARD formatter (which is valid
|
14
|
+
# html) and inserts the nodes into the corresponding CodeObject.
|
15
|
+
class RSpecParser < YARD::Parser::Base
|
16
|
+
|
17
|
+
def initialize(source, filename)
|
18
|
+
@source = source
|
19
|
+
end
|
20
|
+
|
21
|
+
# @see YARD::Parser::Base#parse
|
22
|
+
def parse
|
23
|
+
document = REXML::Document.new(@source)
|
24
|
+
document.elements.each("html/body/div") {|element|
|
25
|
+
if (path = element.attributes["id"].sub(/^rspec_/, '')) then
|
26
|
+
if codeobject = YARD::Registry.at(path) then
|
27
|
+
# only grab the <div> that contains the child elements, and omit
|
28
|
+
# caption since we already gave a Specification header.
|
29
|
+
examples = element.elements["div[@class='rspec_example_group_children']"]
|
30
|
+
(codeobject[:rspec] ||= []).concat(examples.to_a)
|
31
|
+
else
|
32
|
+
log.warn "Could not find code object for #{path}, adding it to top level namespace."
|
33
|
+
(YARD::Registry.root[:rspec] ||= []).concat(element.to_a)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
}
|
37
|
+
self
|
38
|
+
end
|
39
|
+
|
40
|
+
# @see YARD::Parser::Base#tokenize
|
41
|
+
def tokenize
|
42
|
+
[]
|
43
|
+
end
|
44
|
+
|
45
|
+
# @see YARD::Parser::Base#enumerator
|
46
|
+
def enumerator
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Register the parser so YARD knows how to handle *.rspec files.
|
54
|
+
YARD::Parser::SourceParser.register_parser_type(:rspec_parser, YARD::Parser::RSpecParser, 'rspec')
|
55
|
+
|
data/lib/rspec/illustrate.rb
CHANGED
@@ -12,7 +12,7 @@ module RSpec
|
|
12
12
|
# @param args [Array<Hash, Symbol>] Additional options.
|
13
13
|
# @return The given illustration object.
|
14
14
|
def illustrate(content, *args)
|
15
|
-
illustration = { :
|
15
|
+
illustration = { :text => content,
|
16
16
|
:show_when_passed => true,
|
17
17
|
:show_when_failed => true,
|
18
18
|
:show_when_pending => true }
|
data/rspec-illustrate.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["erik@erisc.se"]
|
11
11
|
|
12
12
|
spec.summary = %q{RSpec extension gem for including illustrative objects in your specs.}
|
13
|
-
spec.description = %q{A plugin to RSpec that allows you to define illustrative objects in your examples that will be forwarded to the output formatter.
|
13
|
+
spec.description = %q{A plugin to RSpec and YARD that allows you to define illustrative objects in your examples that will be forwarded to the output formatter. The results can be imported into YARD, which makes your generated specs and documentation more readable, illustrative, and explanatory.}
|
14
14
|
spec.homepage = "https://github.com/ErikSchlyter/rspec-illustrate"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -18,8 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.required_ruby_version = '>= 1.9.3'
|
21
|
-
spec.add_dependency 'rspec-core', '~> 3.2
|
22
|
-
spec.add_dependency 'rspec-expectations', '~> 3.2
|
21
|
+
spec.add_dependency 'rspec-core', '~> 3.2'
|
22
|
+
spec.add_dependency 'rspec-expectations', '~> 3.2'
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.8"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "yard", "~> 0.8"
|
26
|
+
spec.add_development_dependency "redcarpet", "~> 3.2"
|
25
27
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
.rspec_example_group {
|
2
|
+
}
|
3
|
+
|
4
|
+
.rspec_example_group_title {
|
5
|
+
padding: 0px 0px 3px 7px;
|
6
|
+
margin: 3px 0px 3px 0px;
|
7
|
+
}
|
8
|
+
|
9
|
+
.rspec_example_group_children {
|
10
|
+
padding: 0px 0px 0px 0px;
|
11
|
+
margin: 3px 0px 10px 20px;
|
12
|
+
border-left: lightgrey dotted 1px;
|
13
|
+
}
|
14
|
+
|
15
|
+
.rspec_example_passed, .rspec_example_failed, .rspec_example_pending {
|
16
|
+
padding: 2px 0px 2px 7px;
|
17
|
+
margin: 0px 0px 1px 0px;
|
18
|
+
}
|
19
|
+
|
20
|
+
.rspec_example_passed {
|
21
|
+
background-color:#E0FFE0;
|
22
|
+
}
|
23
|
+
|
24
|
+
.rspec_example_pending {
|
25
|
+
background-color:#FFFFE0;
|
26
|
+
}
|
27
|
+
|
28
|
+
.rspec_example_failed {
|
29
|
+
background-color:#FFA0A0;
|
30
|
+
}
|
31
|
+
|
32
|
+
.rspec_example_paragraph {
|
33
|
+
margin:0;
|
34
|
+
}
|
35
|
+
|
36
|
+
.rspec_illustration {
|
37
|
+
margin: 10px 0px 0px 24px;
|
38
|
+
}
|
39
|
+
|
40
|
+
.rspec_illustration_label {
|
41
|
+
font-style: italic;
|
42
|
+
margin: 0px 0px 0px 0px;
|
43
|
+
}
|
44
|
+
|
45
|
+
.rspec_illustration_content {
|
46
|
+
margin: 7px 7px 7px 0px;
|
47
|
+
padding: 4px;
|
48
|
+
background-color: rgba(255, 255, 255, 0.5);
|
49
|
+
border: rgba(0, 0, 0, 0.1) solid 1px;
|
50
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
def init
|
2
|
+
options.files.each{|file|
|
3
|
+
if file.filename.end_with?('.rspec') then
|
4
|
+
document = REXML::Document.new(File.new(file.filename))
|
5
|
+
|
6
|
+
if title = document.elements["html/head/title"] then
|
7
|
+
file.attributes[:title] = title.text
|
8
|
+
end
|
9
|
+
if body = document.elements["html/body"] then
|
10
|
+
file.contents = body.to_s
|
11
|
+
end
|
12
|
+
end
|
13
|
+
}
|
14
|
+
super
|
15
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div id="footer">
|
2
|
+
Generated on <%= Time.now.strftime("%c") %> by
|
3
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
4
|
+
<%= YARD::VERSION %>, using
|
5
|
+
<a href="https://github.com/ErikSchlyter/rspec-illustrate" target="_parent">rspec-illustrate</a>
|
6
|
+
<%= RSpec::Illustrate::VERSION %>
|
7
|
+
(ruby-<%= RUBY_VERSION %>).
|
8
|
+
</div>
|
metadata
CHANGED
@@ -1,90 +1,110 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-illustrate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Erik Schlyter
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2015-
|
11
|
+
date: 2015-05-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec-core
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.2
|
19
|
+
version: '3.2'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 3.2
|
26
|
+
version: '3.2'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec-expectations
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 3.2
|
33
|
+
version: '3.2'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: 3.2
|
40
|
+
version: '3.2'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: bundler
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '1.8'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '1.8'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rake
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '10.0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '10.0'
|
78
|
-
|
79
|
-
|
80
|
-
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.8'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.8'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: redcarpet
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.2'
|
97
|
+
description: A plugin to RSpec and YARD that allows you to define illustrative objects
|
98
|
+
in your examples that will be forwarded to the output formatter. The results can
|
99
|
+
be imported into YARD, which makes your generated specs and documentation more readable,
|
100
|
+
illustrative, and explanatory.
|
81
101
|
email:
|
82
102
|
- erik@erisc.se
|
83
103
|
executables: []
|
84
104
|
extensions: []
|
85
105
|
extra_rdoc_files: []
|
86
106
|
files:
|
87
|
-
- .gitignore
|
107
|
+
- ".gitignore"
|
88
108
|
- Gemfile
|
89
109
|
- LICENSE.txt
|
90
110
|
- README.md
|
@@ -94,35 +114,42 @@ files:
|
|
94
114
|
- lib/rspec/formatters/illustrated_html_formatter.rb
|
95
115
|
- lib/rspec/formatters/illustrated_json_formatter.rb
|
96
116
|
- lib/rspec/formatters/illustration_formatter.rb
|
117
|
+
- lib/rspec/formatters/yard.rb
|
97
118
|
- lib/rspec/illustrate.rb
|
98
119
|
- lib/rspec/illustrate/version.rb
|
120
|
+
- lib/rspec/illustrate/yard.rb
|
99
121
|
- rspec-illustrate.gemspec
|
122
|
+
- yard-template/default/fulldoc/html/css/rspec.css
|
123
|
+
- yard-template/default/fulldoc/html/setup.rb
|
124
|
+
- yard-template/default/layout/html/footer.erb
|
125
|
+
- yard-template/default/layout/html/setup.rb
|
126
|
+
- yard-template/default/method_details/html/setup.rb
|
127
|
+
- yard-template/default/method_details/html/specs.erb
|
128
|
+
- yard-template/default/module/html/setup.rb
|
129
|
+
- yard-template/default/module/html/specs.erb
|
100
130
|
homepage: https://github.com/ErikSchlyter/rspec-illustrate
|
101
131
|
licenses:
|
102
132
|
- MIT
|
133
|
+
metadata: {}
|
103
134
|
post_install_message:
|
104
135
|
rdoc_options: []
|
105
136
|
require_paths:
|
106
137
|
- lib
|
107
138
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
139
|
requirements:
|
110
|
-
- -
|
140
|
+
- - ">="
|
111
141
|
- !ruby/object:Gem::Version
|
112
142
|
version: 1.9.3
|
113
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
144
|
requirements:
|
116
|
-
- -
|
145
|
+
- - ">="
|
117
146
|
- !ruby/object:Gem::Version
|
118
147
|
version: '0'
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
hash: 3602209029501457242
|
122
148
|
requirements: []
|
123
149
|
rubyforge_project:
|
124
|
-
rubygems_version:
|
150
|
+
rubygems_version: 2.2.2
|
125
151
|
signing_key:
|
126
|
-
specification_version:
|
152
|
+
specification_version: 4
|
127
153
|
summary: RSpec extension gem for including illustrative objects in your specs.
|
128
154
|
test_files: []
|
155
|
+
has_rdoc:
|