apipony 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 16ec7c74c22986537ee6460f202811c66a46d91b
4
+ data.tar.gz: 562ca6ed7206f38acf9ebff6ef0f902f543dc729
5
+ SHA512:
6
+ metadata.gz: 2a74541337286f496381429131949798932742457c0166be5385dc62673b08e2a570f0165e1c5d3d7b38d14d4fa946a768e776f1fc027a6237f74b3d3d225223
7
+ data.tar.gz: 390e6edd30e0f94a030cf39ab604d2c538f13c4925eda4b3b5a16fe726594bf39ecf5b16abf3a27aadd1eaffbf14c9b6d65c0b60215b42a41c6131ebe3404786
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2015 Sergey Novikov
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # Apipony
2
+
3
+ Ruby DSL to create Rails API documentation from your application.
4
+
5
+ ## Getting started
6
+
7
+ * Add `gem 'apipony'` to Gemfile
8
+ * `bundle install`
9
+ * `rails g apipony:install`
10
+ * Now you can edit your documentation in `config/initializers/apipony.rb`
11
+
12
+ ## How it works
13
+
14
+ DSL example:
15
+
16
+ ```ruby
17
+ Apipony::Documentation.define do
18
+ config do |c|
19
+ c.title = 'Apipony Documentation'
20
+ c.base_url = '/api/v1'
21
+ end
22
+
23
+ section 'Ponies' do
24
+ endpoint 'get', '/ponies' do |e|
25
+ e.description = 'Find ponies'
26
+
27
+ request_with do
28
+ set :params, {
29
+ :name => :applejack
30
+ }
31
+ end
32
+
33
+ response_with 200 do
34
+ set :body, {
35
+ :name => :applejack,
36
+ :kind => :earth,
37
+ :sex => :female,
38
+ :occupation => :farmer
39
+ }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ ```
45
+
46
+ Generated documentation example:
47
+
48
+ ![Example](https://raw.githubusercontent.com/droptheplot/apipony/master/preview.png)
49
+
50
+ By default documentation available here `/apipony`. But you can always change it in `config/routes.rb`.
data/Rakefile ADDED
@@ -0,0 +1,37 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Apipony'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+
21
+ load 'rails/tasks/statistics.rake'
22
+
23
+
24
+
25
+ Bundler::GemHelper.install_tasks
26
+
27
+ require 'rake/testtask'
28
+
29
+ Rake::TestTask.new(:test) do |t|
30
+ t.libs << 'lib'
31
+ t.libs << 'test'
32
+ t.pattern = 'test/**/*_test.rb'
33
+ t.verbose = false
34
+ end
35
+
36
+
37
+ task default: :test
@@ -0,0 +1,3 @@
1
+ //= require jquery
2
+ //= require jquery_ujs
3
+ //= require_tree .
@@ -0,0 +1,5 @@
1
+ $(document).ready(function() {
2
+ $('.code').each(function(i, block) {
3
+ hljs.highlightBlock(block);
4
+ });
5
+ });
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,154 @@
1
+ $dark_color: #111;
2
+ $medium_color: #888;
3
+ $light_color: #eee;
4
+
5
+ * {
6
+ margin: 0;
7
+ padding: 0;
8
+ &:focus {
9
+ outline: none;
10
+ }
11
+ }
12
+
13
+ html, body {
14
+ height: 100%;
15
+ margin: 0;
16
+ }
17
+
18
+ body {
19
+ font-family: 'Arial';
20
+ font-size: 14px;
21
+ color: $dark_color;
22
+ -webkit-font-smoothing: antialiased;
23
+ }
24
+
25
+ a {
26
+ color: $dark_color;
27
+ text-decoration: none;
28
+ }
29
+
30
+ h1 {
31
+ font-size: 24px;
32
+ font-weight: bold;
33
+ padding-bottom: 20px;
34
+ margin-bottom: 40px;
35
+ border-bottom: 1px solid $light_color;
36
+ }
37
+
38
+ h2 {
39
+ font-size: 22px;
40
+ font-weight: normal;
41
+ margin-bottom: 20px;
42
+ }
43
+
44
+ h3 {
45
+ font-size: 17px;
46
+ line-height: 17px;
47
+ }
48
+
49
+ h4 {
50
+ font-size: 14px;
51
+ margin-bottom: 10px;
52
+ font-weight: bold;
53
+ }
54
+
55
+ h5 {
56
+ font-weight: normal;
57
+ }
58
+
59
+ ul {
60
+ margin-bottom: 20px;
61
+ li {
62
+ margin-bottom: 10px;
63
+ }
64
+ }
65
+
66
+ .container {
67
+ width: 940px;
68
+ margin: 0 auto;
69
+ padding: 40px 0;
70
+ position: relative;
71
+ }
72
+
73
+ .row {
74
+ overflow: hidden;
75
+ margin: 0 -10px;
76
+ }
77
+
78
+ @for $i from 1 through 12 {
79
+ .col-#{$i} {
80
+ box-sizing: border-box;
81
+ margin: 0 10px;
82
+ width: 60px * $i + 20px * ($i - 1);
83
+ float: left;
84
+ }
85
+ }
86
+
87
+ @for $i from 1 through 12 {
88
+ .col-offset-#{$i} {
89
+ margin-left: 60px * $i + 20px * ($i - 1) + 30px;
90
+ }
91
+ }
92
+
93
+ .section {
94
+ &:not(:last-child) {
95
+ padding-bottom: 40px;
96
+ margin-bottom: 40px;
97
+ border-bottom: 1px solid $light_color;
98
+ }
99
+ .endpoint {
100
+ position: relative;
101
+ &:not(:last-child) {
102
+ margin-bottom: 40px;
103
+ }
104
+ .description {
105
+ font-size: 12px;
106
+ color: $medium_color;
107
+ padding-top: 20px;
108
+ font-weight: normal;
109
+ }
110
+ .response, .request {
111
+ padding-top: 20px;
112
+ .code {
113
+ padding: 8px 10px 10px;
114
+ font-size: 12px;
115
+ border-radius: 0 0 3px 3px;
116
+ }
117
+ }
118
+ }
119
+ }
120
+
121
+ .panel {
122
+ border: 1px solid darken($light_color, 5%);
123
+ border-radius: 3px;
124
+ margin-top: 20px;
125
+ .title {
126
+ border-bottom: 1px solid darken($light_color, 5%);
127
+ padding: 10px;
128
+ font-size: 11px;
129
+ font-weight: bold;
130
+ }
131
+ }
132
+
133
+ .method {
134
+ text-transform: uppercase;
135
+ color: #fff;
136
+ font-size: 9px;
137
+ padding: 4px 5px;
138
+ border-radius: 3px;
139
+ margin-right: 5px;
140
+ font-weight: bold;
141
+ background: $medium_color;
142
+ &.get {
143
+ background: #1ABC9C;
144
+ }
145
+ &.post {
146
+ background: #3498DB;
147
+ }
148
+ &.put {
149
+ background: #2980B9;
150
+ }
151
+ &.delete {
152
+ background: #C0392B;
153
+ }
154
+ }
@@ -0,0 +1,7 @@
1
+ module Apipony
2
+ class ApplicationController < ActionController::Base
3
+ def index
4
+ @documentation = Apipony::Documentation
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,50 @@
1
+ .row
2
+ .col-3
3
+ - @documentation.sections.each do |section|
4
+ %h4= section.title
5
+ %ul
6
+ - section.endpoints.each do |endpoint|
7
+ %li
8
+ %h5
9
+ = link_to root_path(:anchor => endpoint.id) do
10
+ %span.method{ :class => endpoint.method }<
11
+ = endpoint.method
12
+ = endpoint.url
13
+ .col-9
14
+ %h1= @documentation.title
15
+ - @documentation.sections.each do |section|
16
+ .section
17
+ %h2= section.title
18
+ - section.endpoints.each do |endpoint|
19
+ .endpoint{ :id => endpoint.id }
20
+ %h3
21
+ %span.method{ :class => endpoint.method }<
22
+ = endpoint.method
23
+ = endpoint.url
24
+ - if endpoint.description
25
+ .description= endpoint.description
26
+ - if endpoint.request || endpoint.response
27
+ - if endpoint.request
28
+ .request
29
+ %h4 Request:
30
+ - if endpoint.request.params
31
+ .panel
32
+ .title Parameters
33
+ %pre.code= JSON.pretty_generate(endpoint.request.params)
34
+ - if endpoint.request.headers
35
+ .panel
36
+ .title Headers
37
+ %pre.code= JSON.pretty_generate(endpoint.request.headers)
38
+ - if endpoint.response
39
+ .response
40
+ %h4
41
+ Response:
42
+ = endpoint.response.status
43
+ - if endpoint.response.body
44
+ .panel
45
+ .title Body
46
+ %pre.code= JSON.pretty_generate(endpoint.response.body)
47
+ - if endpoint.response.headers
48
+ .panel
49
+ .title Headers
50
+ %pre.code= JSON.pretty_generate(endpoint.response.headers)
@@ -0,0 +1,12 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %title Apipony
5
+ %link{ :href => '//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css', :rel => 'stylesheet' }/
6
+ = stylesheet_link_tag 'apipony/application', media: 'all'
7
+ %script{ :src => '//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/highlight.min.js' }
8
+ = javascript_include_tag 'apipony/application'
9
+ = csrf_meta_tags
10
+ %body
11
+ .container
12
+ = yield
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ Apipony::Engine.routes.draw do
2
+ get 'application/index'
3
+ root 'application#index'
4
+ end
@@ -0,0 +1,7 @@
1
+ class Apipony::Base
2
+ private
3
+
4
+ def set(variable, value)
5
+ instance_variable_set("@#{ variable }", value)
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ class Apipony::Documentation
2
+ class << self
3
+ attr_accessor :title, :base_url, :sections
4
+
5
+ def define(&block)
6
+ @sections = []
7
+
8
+ instance_eval(&block)
9
+ end
10
+
11
+ def section(title, &block)
12
+ @sections << Apipony::Section.new(title, &block)
13
+ end
14
+
15
+ def config(&block)
16
+ instance_eval(&block)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ class Apipony::Endpoint < Apipony::Base
2
+ attr_accessor :method, :url, :description, :response, :request
3
+
4
+ def initialize(method, url, &block)
5
+ @method = method
6
+ @url = set_base_url(url)
7
+
8
+ instance_eval(&block) if block_given?
9
+ end
10
+
11
+ def response_with(status, &block)
12
+ @response = Apipony::Response.new(status, &block)
13
+ end
14
+
15
+ def request_with(&block)
16
+ @request = Apipony::Request.new(&block)
17
+ end
18
+
19
+ def id
20
+ File.join(@method, @url)
21
+ end
22
+
23
+ private
24
+
25
+ def set_base_url(url)
26
+ File.join(Apipony::Documentation.base_url, url)
27
+ end
28
+ end
@@ -0,0 +1,5 @@
1
+ module Apipony
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Apipony
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class Apipony::Request < Apipony::Base
2
+ attr_accessor :params, :headers
3
+
4
+ def initialize(&block)
5
+ instance_eval(&block)
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ class Apipony::Response < Apipony::Base
2
+ attr_accessor :status, :headers, :body
3
+
4
+ def initialize(status, &block)
5
+ @status = status
6
+
7
+ instance_eval(&block) if block_given?
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ class Apipony::Section
2
+ attr_accessor :title, :endpoints
3
+
4
+ def initialize(title, &block)
5
+ @title = title
6
+ @endpoints = []
7
+
8
+ instance_eval(&block)
9
+ end
10
+
11
+ def endpoint(method, url, &block)
12
+ @endpoints << Apipony::Endpoint.new(method, url, &block)
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module Apipony
2
+ VERSION = '0.0.1'
3
+ end
data/lib/apipony.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'apipony/engine'
2
+
3
+ require 'apipony/base'
4
+ require 'apipony/documentation'
5
+ require 'apipony/section'
6
+ require 'apipony/endpoint'
7
+ require 'apipony/response'
8
+ require 'apipony/request'
9
+
10
+ module Apipony
11
+ end
@@ -0,0 +1,84 @@
1
+ Apipony::Documentation.define do
2
+ config do |c|
3
+ c.title = 'Apipony Documentation'
4
+ c.base_url = '/api/v1'
5
+ end
6
+
7
+ section 'Ponies' do
8
+ endpoint 'get', '/ponies' do |e|
9
+ e.description = 'Find ponies'
10
+
11
+ request_with do
12
+ set :params, {
13
+ :name => :applejack
14
+ }
15
+ end
16
+
17
+ response_with 200 do
18
+ set :body, {
19
+ :name => :applejack,
20
+ :kind => :earth,
21
+ :sex => :female,
22
+ :occupation => :farmer
23
+ }
24
+ end
25
+ end
26
+
27
+ endpoint 'post', '/ponies' do |e|
28
+ e.description = 'Create pony'
29
+
30
+ request_with do
31
+ set :params, {
32
+ :name => :fluttershy,
33
+ :kind => :pegasus,
34
+ :sex => :female,
35
+ :occupation => :caretaker
36
+ }
37
+ end
38
+
39
+ response_with 200
40
+ end
41
+
42
+ endpoint 'put', '/ponies/:id' do |e|
43
+ e.description = 'Update pony id'
44
+
45
+ request_with do
46
+ set :params, {
47
+ :name => :fluttershy,
48
+ :kind => :pegasus,
49
+ :sex => :female,
50
+ :occupation => :singer
51
+ }
52
+ end
53
+ end
54
+
55
+ endpoint 'delete', '/ponies/:id' do |e|
56
+ e.description = 'Delete pony by id'
57
+
58
+ response_with 200
59
+ end
60
+ end
61
+
62
+ section 'Places' do
63
+ endpoint 'get', '/places' do |e|
64
+ e.description = 'Get places'
65
+
66
+ response_with 200 do
67
+ set :body, [
68
+ {
69
+ :id => 1,
70
+ :name => :equestria
71
+ },
72
+ {
73
+ :id => 2,
74
+ :name => :ponyville
75
+ },
76
+ {
77
+ :id => 3,
78
+ :name => :canterlot
79
+ }
80
+ ]
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,20 @@
1
+ require 'rails/generators/base'
2
+
3
+ module Apipony
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../install/templates', __FILE__)
7
+
8
+ def copy_initializer
9
+ template 'initializer.rb', 'config/initializers/apipony.rb'
10
+ end
11
+
12
+ def mount_engine
13
+ insert_into_file "#{Rails.root}/config/routes.rb", :after => /routes.draw.do\n/ do
14
+ %Q{ mount Apipony::Engine => '/apipony'
15
+ }
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,216 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: apipony
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sergey Novikov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.2.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: haml-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: sass
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.4.19
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.4.19
55
+ - !ruby/object:Gem::Dependency
56
+ name: jquery-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 4.0.4
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 4.0.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.3.11
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.3.11
83
+ - !ruby/object:Gem::Dependency
84
+ name: faker
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.6'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.6.1
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '1.6'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.6.1
103
+ - !ruby/object:Gem::Dependency
104
+ name: rspec-rails
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.4'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 3.4.0
113
+ type: :development
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '3.4'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 3.4.0
123
+ - !ruby/object:Gem::Dependency
124
+ name: factory_girl_rails
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '4.5'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 4.5.0
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '4.5'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 4.5.0
143
+ - !ruby/object:Gem::Dependency
144
+ name: database_cleaner
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '1.3'
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 1.3.0
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.3'
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: 1.3.0
163
+ description:
164
+ email:
165
+ - novikov359@gmail.com
166
+ executables: []
167
+ extensions: []
168
+ extra_rdoc_files: []
169
+ files:
170
+ - MIT-LICENSE
171
+ - README.md
172
+ - Rakefile
173
+ - app/assets/javascripts/apipony/application.js
174
+ - app/assets/javascripts/apipony/scripts.js
175
+ - app/assets/stylesheets/apipony/application.css
176
+ - app/assets/stylesheets/apipony/styles.scss
177
+ - app/controllers/apipony/application_controller.rb
178
+ - app/views/apipony/application/index.html.haml
179
+ - app/views/layouts/apipony/application.html.haml
180
+ - config/routes.rb
181
+ - lib/apipony.rb
182
+ - lib/apipony/base.rb
183
+ - lib/apipony/documentation.rb
184
+ - lib/apipony/endpoint.rb
185
+ - lib/apipony/engine.rb
186
+ - lib/apipony/request.rb
187
+ - lib/apipony/response.rb
188
+ - lib/apipony/section.rb
189
+ - lib/apipony/version.rb
190
+ - lib/generators/apipony/install/templates/initializer.rb
191
+ - lib/generators/apipony/install_generator.rb
192
+ homepage: https://github.com/droptheplot/apipony
193
+ licenses:
194
+ - MIT
195
+ metadata: {}
196
+ post_install_message:
197
+ rdoc_options: []
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ requirements: []
211
+ rubyforge_project:
212
+ rubygems_version: 2.4.8
213
+ signing_key:
214
+ specification_version: 4
215
+ summary: Easy Rails API documentation.
216
+ test_files: []