fdoc 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -0
- data/README.md +120 -0
- data/Rakefile +7 -0
- data/bin/fdoc_to_html +77 -0
- data/fdoc.gemspec +36 -0
- data/lib/endpoint-schema.yaml +30 -0
- data/lib/fdoc.rb +46 -0
- data/lib/fdoc/endpoint.rb +110 -0
- data/lib/fdoc/endpoint_scaffold.rb +132 -0
- data/lib/fdoc/meta_service.rb +46 -0
- data/lib/fdoc/presenters/endpoint_presenter.rb +152 -0
- data/lib/fdoc/presenters/html_presenter.rb +58 -0
- data/lib/fdoc/presenters/meta_service_presenter.rb +65 -0
- data/lib/fdoc/presenters/response_code_presenter.rb +32 -0
- data/lib/fdoc/presenters/schema_presenter.rb +138 -0
- data/lib/fdoc/presenters/service_presenter.rb +56 -0
- data/lib/fdoc/service.rb +88 -0
- data/lib/fdoc/spec_watcher.rb +48 -0
- data/lib/fdoc/templates/endpoint.html.erb +75 -0
- data/lib/fdoc/templates/meta_service.html.erb +60 -0
- data/lib/fdoc/templates/service.html.erb +54 -0
- data/lib/fdoc/templates/styles.css +63 -0
- data/spec/fdoc/endpoint_scaffold_spec.rb +242 -0
- data/spec/fdoc/endpoint_spec.rb +243 -0
- data/spec/fdoc/presenters/endpoint_presenter_spec.rb +93 -0
- data/spec/fdoc/presenters/service_presenter_spec.rb +18 -0
- data/spec/fdoc/service_spec.rb +63 -0
- data/spec/fixtures/members/add-PUT.fdoc +20 -0
- data/spec/fixtures/members/draft-POST.fdoc +5 -0
- data/spec/fixtures/members/list/GET.fdoc +50 -0
- data/spec/fixtures/members/list/complex-params-GET.fdoc +94 -0
- data/spec/fixtures/members/list/filter-GET.fdoc +60 -0
- data/spec/fixtures/members/members.fdoc.service +11 -0
- data/spec/fixtures/sample_group.fdoc.meta +9 -0
- data/spec/spec_helper.rb +2 -0
- metadata +174 -0
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
describe Fdoc::EndpointPresenter do
|
5
|
+
subject {
|
6
|
+
described_class.new(endpoint)
|
7
|
+
}
|
8
|
+
|
9
|
+
let (:test_service) { Fdoc::Service.new('spec/fixtures') }
|
10
|
+
let (:endpoint) { Fdoc::Endpoint.new("spec/fixtures/members/list/GET.fdoc", test_service) }
|
11
|
+
|
12
|
+
context "#to_html" do
|
13
|
+
it "should generate valid HTML" do
|
14
|
+
html = subject.to_html
|
15
|
+
|
16
|
+
expect {
|
17
|
+
Nokogiri::HTML(html) { |config| config.strict }
|
18
|
+
}.to_not raise_exception
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "#example_from_schema" do
|
23
|
+
example_schema_yaml = <<-EOS
|
24
|
+
properties:
|
25
|
+
name:
|
26
|
+
type: string
|
27
|
+
example: Bobby Brown
|
28
|
+
achievements:
|
29
|
+
type: array
|
30
|
+
items:
|
31
|
+
type: string
|
32
|
+
example: Most Bugs Squashed
|
33
|
+
check_in_count:
|
34
|
+
type: integer
|
35
|
+
example: 52
|
36
|
+
friends:
|
37
|
+
type: array
|
38
|
+
items:
|
39
|
+
properties:
|
40
|
+
name:
|
41
|
+
type: string
|
42
|
+
example: Freddy Friend
|
43
|
+
id:
|
44
|
+
type: integer
|
45
|
+
example: 12345
|
46
|
+
email:
|
47
|
+
type: string
|
48
|
+
address:
|
49
|
+
properties:
|
50
|
+
street_number:
|
51
|
+
type: integer
|
52
|
+
example: 1234
|
53
|
+
street_name:
|
54
|
+
type: string
|
55
|
+
example: Main St.
|
56
|
+
state:
|
57
|
+
type: string
|
58
|
+
example: CA
|
59
|
+
zip:
|
60
|
+
type: integer
|
61
|
+
example: 91234
|
62
|
+
homepage_url:
|
63
|
+
type: ['string', 'null']
|
64
|
+
format: uri
|
65
|
+
example: http://my.website.com
|
66
|
+
EOS
|
67
|
+
example_schema = YAML.load(example_schema_yaml)
|
68
|
+
|
69
|
+
expected_example = {
|
70
|
+
"name" => "Bobby Brown",
|
71
|
+
"achievements" => ["Most Bugs Squashed"],
|
72
|
+
"check_in_count" => 52,
|
73
|
+
"email" => "",
|
74
|
+
"friends" => [
|
75
|
+
{
|
76
|
+
"name" => "Freddy Friend",
|
77
|
+
"id" => 12345
|
78
|
+
}
|
79
|
+
],
|
80
|
+
"address" => {
|
81
|
+
"street_number" => 1234,
|
82
|
+
"street_name" => "Main St.",
|
83
|
+
"state" => "CA",
|
84
|
+
"zip" => 91234
|
85
|
+
},
|
86
|
+
"homepage_url" => "http://my.website.com"
|
87
|
+
}
|
88
|
+
|
89
|
+
it "should generate an example response from the contents of the schema" do
|
90
|
+
subject.example_from_schema(example_schema).should == expected_example
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
describe Fdoc::ServicePresenter do
|
5
|
+
subject {
|
6
|
+
Fdoc::ServicePresenter.new(Fdoc::Service.new('spec/fixtures'))
|
7
|
+
}
|
8
|
+
|
9
|
+
context "#to_html" do
|
10
|
+
it "should generate valid HTML" do
|
11
|
+
html = subject.to_html
|
12
|
+
|
13
|
+
expect {
|
14
|
+
Nokogiri::HTML(html) { |config| config.strict }
|
15
|
+
}.to_not raise_exception
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fdoc::Service do
|
4
|
+
subject { described_class.new('spec/fixtures') }
|
5
|
+
|
6
|
+
let(:verb) { 'GET' }
|
7
|
+
let(:path) { 'members/list' }
|
8
|
+
|
9
|
+
describe "#open" do
|
10
|
+
let(:scaffold_mode) { false }
|
11
|
+
context "in regular mode" do
|
12
|
+
it "returns an Endpoint object" do
|
13
|
+
endpoint = subject.open(verb, path, scaffold_mode)
|
14
|
+
endpoint.should be_kind_of(Fdoc::Endpoint)
|
15
|
+
endpoint.should_not be_kind_of(Fdoc::EndpointScaffold)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "in scaffold mode" do
|
20
|
+
let(:scaffold_mode) { true }
|
21
|
+
|
22
|
+
it "returns an EndpointScaffold object" do
|
23
|
+
subject.open(verb, path, scaffold_mode).should be_kind_of(Fdoc::EndpointScaffold)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#path_for" do
|
29
|
+
let(:flat_file_name) { File.expand_path('spec/fixtures/members/list-GET.fdoc') }
|
30
|
+
let(:nested_file_name) { File.expand_path('spec/fixtures/members/list/GET.fdoc') }
|
31
|
+
|
32
|
+
context "when a flat named filename exists" do
|
33
|
+
before do
|
34
|
+
File.should_receive(:exist?).with(flat_file_name).and_return(true)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "returns the flat named file path" do
|
38
|
+
subject.path_for(verb, path).should == flat_file_name
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when a no flat named named file exists, but a nested path does" do
|
43
|
+
before do
|
44
|
+
File.should_receive(:exist?).with(flat_file_name).and_return(false)
|
45
|
+
File.should_receive(:exist?).with(nested_file_name).and_return(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "returns the nested named file path" do
|
49
|
+
subject.path_for(verb, path).should == nested_file_name
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "when no file exists" do
|
54
|
+
before do
|
55
|
+
File.stub(:exist?).and_return(false)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "returns the flat named file path" do
|
59
|
+
subject.path_for(verb, path).should == flat_file_name
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
description: Add a new member
|
2
|
+
requestParameters:
|
3
|
+
properties:
|
4
|
+
name:
|
5
|
+
type: string
|
6
|
+
required: yes
|
7
|
+
description: The name of the member to add, must be unique.
|
8
|
+
example: Max Power
|
9
|
+
email:
|
10
|
+
type: string
|
11
|
+
required: no
|
12
|
+
description: The email of the member to add
|
13
|
+
example: mpower@example.com
|
14
|
+
responseCodes:
|
15
|
+
- status: 200 OK
|
16
|
+
successful: yes
|
17
|
+
description: Returns the member just added
|
18
|
+
- status: 400 Bad Request
|
19
|
+
successful: no
|
20
|
+
description: Member already exists
|
@@ -0,0 +1,50 @@
|
|
1
|
+
description: The list of members.
|
2
|
+
requestParameters:
|
3
|
+
properties:
|
4
|
+
limit:
|
5
|
+
type: integer
|
6
|
+
required: no
|
7
|
+
default: 50
|
8
|
+
description: Limits the number of results returned, used for paging.
|
9
|
+
offset:
|
10
|
+
type: integer
|
11
|
+
required: no
|
12
|
+
default: 0
|
13
|
+
description: Offsets the results returned, used for paging.
|
14
|
+
order_by:
|
15
|
+
type: string
|
16
|
+
enum:
|
17
|
+
- name
|
18
|
+
- email
|
19
|
+
- member_since
|
20
|
+
responseParameters:
|
21
|
+
properties:
|
22
|
+
members:
|
23
|
+
type: array
|
24
|
+
items:
|
25
|
+
title: member
|
26
|
+
description: Representation of a member
|
27
|
+
type: object
|
28
|
+
properties:
|
29
|
+
name:
|
30
|
+
description: Member's name
|
31
|
+
type: string
|
32
|
+
required: yes
|
33
|
+
example: Captain Smellypants
|
34
|
+
email:
|
35
|
+
description: Member's email
|
36
|
+
type: string
|
37
|
+
required: no
|
38
|
+
example: smelly@pants.com
|
39
|
+
member_since:
|
40
|
+
description: The date the member joined
|
41
|
+
type: string
|
42
|
+
format: date-time
|
43
|
+
example: 2012-01-01T13:00:00Z
|
44
|
+
responseCodes:
|
45
|
+
- status: 200 OK
|
46
|
+
successful: yes
|
47
|
+
description: A list of current members
|
48
|
+
- status: 400 Bad Request
|
49
|
+
successful: no
|
50
|
+
description: Indicates malformed parameters
|
@@ -0,0 +1,94 @@
|
|
1
|
+
requestParameters:
|
2
|
+
type: object
|
3
|
+
properties:
|
4
|
+
toplevel_param:
|
5
|
+
type: string
|
6
|
+
description: A paramater as normal
|
7
|
+
required: Yes
|
8
|
+
optional_nested_array:
|
9
|
+
type: array
|
10
|
+
required: No
|
11
|
+
items:
|
12
|
+
type: object
|
13
|
+
properties:
|
14
|
+
required_param:
|
15
|
+
required: Yes
|
16
|
+
description: It's required
|
17
|
+
type: string
|
18
|
+
optional_param:
|
19
|
+
required: Yes
|
20
|
+
description: It's optional
|
21
|
+
type: string
|
22
|
+
required_nested_array:
|
23
|
+
type: array
|
24
|
+
required: Yes
|
25
|
+
items:
|
26
|
+
type: object
|
27
|
+
properties:
|
28
|
+
required_param:
|
29
|
+
required: Yes
|
30
|
+
description: It's required
|
31
|
+
type: string
|
32
|
+
optional_param:
|
33
|
+
required: No
|
34
|
+
description: It's optional
|
35
|
+
type: string
|
36
|
+
optional_second_nested_object:
|
37
|
+
required: No
|
38
|
+
type: object
|
39
|
+
description: It's a bug
|
40
|
+
properties:
|
41
|
+
required_param:
|
42
|
+
required: Yes
|
43
|
+
description: It's required
|
44
|
+
type: string
|
45
|
+
optional_param:
|
46
|
+
required: No
|
47
|
+
description: It's optional
|
48
|
+
type: string
|
49
|
+
|
50
|
+
optional_nested_object:
|
51
|
+
type: object
|
52
|
+
required: No
|
53
|
+
properties:
|
54
|
+
required_param:
|
55
|
+
required: Yes
|
56
|
+
description: It's required
|
57
|
+
type: string
|
58
|
+
optional_param:
|
59
|
+
required: No
|
60
|
+
description: It's optional
|
61
|
+
type: string
|
62
|
+
required_nested_object:
|
63
|
+
type: object
|
64
|
+
required: Yes
|
65
|
+
properties:
|
66
|
+
required_param:
|
67
|
+
required: Yes
|
68
|
+
description: It's required
|
69
|
+
type: string
|
70
|
+
optional_param:
|
71
|
+
required: No
|
72
|
+
description: It's optional
|
73
|
+
type: string
|
74
|
+
optional_second_nested_object:
|
75
|
+
required: No
|
76
|
+
type: object
|
77
|
+
description: It's a bug
|
78
|
+
properties:
|
79
|
+
required_param:
|
80
|
+
required: Yes
|
81
|
+
description: It's required
|
82
|
+
type: string
|
83
|
+
optional_param:
|
84
|
+
required: No
|
85
|
+
description: It's optional
|
86
|
+
type: string
|
87
|
+
|
88
|
+
responseParameters:
|
89
|
+
type: string
|
90
|
+
description: Nothing important
|
91
|
+
responseCodes:
|
92
|
+
- status: 200 OK
|
93
|
+
successful: yes
|
94
|
+
description: A list of current members
|
@@ -0,0 +1,60 @@
|
|
1
|
+
description: The list of members, filtered by params
|
2
|
+
requestParameters:
|
3
|
+
type: object
|
4
|
+
properties:
|
5
|
+
limit:
|
6
|
+
type: integer
|
7
|
+
required: no
|
8
|
+
default: 50
|
9
|
+
description: Limits the number of results returned, used for paging.
|
10
|
+
offset:
|
11
|
+
type: integer
|
12
|
+
required: no
|
13
|
+
default: 0
|
14
|
+
description: Offsets the results returned, used for paging.
|
15
|
+
older_than:
|
16
|
+
type: string
|
17
|
+
format: date-time
|
18
|
+
required: no
|
19
|
+
description: |
|
20
|
+
If provided, results returned will only be updated before
|
21
|
+
the given date (exclusive)
|
22
|
+
newer_than:
|
23
|
+
type: string
|
24
|
+
format: date-time
|
25
|
+
required: no
|
26
|
+
description: |
|
27
|
+
If provided, results returned will only be updated after
|
28
|
+
the given date (inclusive)
|
29
|
+
responseParameters:
|
30
|
+
type: object
|
31
|
+
properties:
|
32
|
+
members:
|
33
|
+
type: array
|
34
|
+
items:
|
35
|
+
title: member
|
36
|
+
description: Representation of a member
|
37
|
+
type: object
|
38
|
+
properties:
|
39
|
+
name:
|
40
|
+
description: Member's name
|
41
|
+
type: string
|
42
|
+
required: yes
|
43
|
+
example: Captain Smellypants
|
44
|
+
email:
|
45
|
+
description: Member's email
|
46
|
+
type: string
|
47
|
+
required: no
|
48
|
+
example: smelly@pants.com
|
49
|
+
member_since:
|
50
|
+
description: The date the member joined
|
51
|
+
type: string
|
52
|
+
format: date-time
|
53
|
+
example: 2012-01-01T13:00:00Z
|
54
|
+
responseCodes:
|
55
|
+
- status: 200 OK
|
56
|
+
successful: yes
|
57
|
+
description: A list of current members
|
58
|
+
- status: 400 Bad Request
|
59
|
+
successful: no
|
60
|
+
description: Indicates malformed parameters
|
@@ -0,0 +1,11 @@
|
|
1
|
+
name: Members API
|
2
|
+
basePath: https://api.sample.com/members
|
3
|
+
description: |
|
4
|
+
This service is used for lots of fun things
|
5
|
+
|
6
|
+
* It would not make for a very exciting REST API, but
|
7
|
+
that's perfectly acceptable for a fixture file.
|
8
|
+
* These bullets are mostly to demonstrate Markdown interpolation
|
9
|
+
discussion: |
|
10
|
+
This is room at the bottom of the page for more details about
|
11
|
+
this service.
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fdoc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Matt Wilson
|
9
|
+
- Zach Margolis
|
10
|
+
- Sean Sorrell
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2011-11-07 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: json
|
18
|
+
requirement: &70339438797600 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '0'
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *70339438797600
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json-schema
|
29
|
+
requirement: &70339438796920 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.0.1
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *70339438796920
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: kramdown
|
40
|
+
requirement: &70339438796340 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *70339438796340
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rake
|
51
|
+
requirement: &70339438792260 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
type: :development
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *70339438792260
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: rspec
|
62
|
+
requirement: &70339438791760 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '2.5'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *70339438791760
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: nokogiri
|
73
|
+
requirement: &70339438791300 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *70339438791300
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: cane
|
84
|
+
requirement: &70339438790760 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *70339438790760
|
93
|
+
description: A tool for documenting API endpoints.
|
94
|
+
email: support@squareup.com
|
95
|
+
executables:
|
96
|
+
- fdoc_to_html
|
97
|
+
extensions: []
|
98
|
+
extra_rdoc_files:
|
99
|
+
- README.md
|
100
|
+
files:
|
101
|
+
- lib/endpoint-schema.yaml
|
102
|
+
- lib/fdoc/endpoint.rb
|
103
|
+
- lib/fdoc/endpoint_scaffold.rb
|
104
|
+
- lib/fdoc/meta_service.rb
|
105
|
+
- lib/fdoc/presenters/endpoint_presenter.rb
|
106
|
+
- lib/fdoc/presenters/html_presenter.rb
|
107
|
+
- lib/fdoc/presenters/meta_service_presenter.rb
|
108
|
+
- lib/fdoc/presenters/response_code_presenter.rb
|
109
|
+
- lib/fdoc/presenters/schema_presenter.rb
|
110
|
+
- lib/fdoc/presenters/service_presenter.rb
|
111
|
+
- lib/fdoc/service.rb
|
112
|
+
- lib/fdoc/spec_watcher.rb
|
113
|
+
- lib/fdoc/templates/endpoint.html.erb
|
114
|
+
- lib/fdoc/templates/meta_service.html.erb
|
115
|
+
- lib/fdoc/templates/service.html.erb
|
116
|
+
- lib/fdoc/templates/styles.css
|
117
|
+
- lib/fdoc.rb
|
118
|
+
- spec/fdoc/endpoint_scaffold_spec.rb
|
119
|
+
- spec/fdoc/endpoint_spec.rb
|
120
|
+
- spec/fdoc/presenters/endpoint_presenter_spec.rb
|
121
|
+
- spec/fdoc/presenters/service_presenter_spec.rb
|
122
|
+
- spec/fdoc/service_spec.rb
|
123
|
+
- spec/fixtures/members/add-PUT.fdoc
|
124
|
+
- spec/fixtures/members/draft-POST.fdoc
|
125
|
+
- spec/fixtures/members/list/complex-params-GET.fdoc
|
126
|
+
- spec/fixtures/members/list/filter-GET.fdoc
|
127
|
+
- spec/fixtures/members/list/GET.fdoc
|
128
|
+
- spec/fixtures/members/members.fdoc.service
|
129
|
+
- spec/fixtures/sample_group.fdoc.meta
|
130
|
+
- spec/spec_helper.rb
|
131
|
+
- fdoc.gemspec
|
132
|
+
- Rakefile
|
133
|
+
- README.md
|
134
|
+
- Gemfile
|
135
|
+
- bin/fdoc_to_html
|
136
|
+
homepage: http://github.com/square/fdoc
|
137
|
+
licenses: []
|
138
|
+
post_install_message:
|
139
|
+
rdoc_options:
|
140
|
+
- --charset=UTF-8
|
141
|
+
require_paths:
|
142
|
+
- lib
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
|
+
none: false
|
145
|
+
requirements:
|
146
|
+
- - ! '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ! '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
requirements: []
|
156
|
+
rubyforge_project:
|
157
|
+
rubygems_version: 1.8.15
|
158
|
+
signing_key:
|
159
|
+
specification_version: 3
|
160
|
+
summary: A tool for documenting API endpoints.
|
161
|
+
test_files:
|
162
|
+
- spec/fdoc/endpoint_scaffold_spec.rb
|
163
|
+
- spec/fdoc/endpoint_spec.rb
|
164
|
+
- spec/fdoc/presenters/endpoint_presenter_spec.rb
|
165
|
+
- spec/fdoc/presenters/service_presenter_spec.rb
|
166
|
+
- spec/fdoc/service_spec.rb
|
167
|
+
- spec/fixtures/members/add-PUT.fdoc
|
168
|
+
- spec/fixtures/members/draft-POST.fdoc
|
169
|
+
- spec/fixtures/members/list/complex-params-GET.fdoc
|
170
|
+
- spec/fixtures/members/list/filter-GET.fdoc
|
171
|
+
- spec/fixtures/members/list/GET.fdoc
|
172
|
+
- spec/fixtures/members/members.fdoc.service
|
173
|
+
- spec/fixtures/sample_group.fdoc.meta
|
174
|
+
- spec/spec_helper.rb
|