calamum 1.1.0 → 1.2.0
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.
- checksums.yaml +15 -0
- data/lib/calamum.rb +0 -1
- data/lib/calamum/config.rb +1 -1
- data/lib/calamum/doc_parser.rb +14 -3
- data/lib/calamum/resource.rb +12 -3
- data/lib/calamum/runner.rb +5 -5
- data/lib/calamum/templates/bootstrap/index.html.erb +13 -12
- data/lib/calamum/templates/twitter/index.html.erb +1 -1
- data/lib/calamum/version.rb +1 -1
- metadata +39 -17
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NmFkMDE0YWU2M2NhZGYyNjk1MjZjYmFlZjlhNzI3ZTZhZGRkYjdmOQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZjlhZmIwY2UzZTdjMTA0MmZiYmNkMDFjNTk1MzM4MTAxODgzNjc4Ng==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZTk4ZTY2NjVhODBkZjc5NTlkYTEyOWM2Zjk4N2NjZjg1ZmVhZDZjMmYxNjUz
|
10
|
+
ZDhjMzA1NTZiYzM1NTkyMGM2MTc1ODgxMWYzNGUwYWMzNThkN2NmY2FiNmY2
|
11
|
+
YTgwZDcwNjU5ZTdlYmIxNDJhY2FhNjg2OTBiOTlmNzRjZTEzMjY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MjVmYjA3MDdiZjFiMjkxZWJiMTlkMmUxNTdiZGY4NGU1NTAxMTk2OWYyNTYy
|
14
|
+
ZGY5ZTEyYzZmYmZlNjgzNDM5N2ZhNzBiY2FhYjgzOWI5M2I5ZDEzM2FhOWZk
|
15
|
+
Zjk5YTczODVkMWZiODJkM2U1MGE3YmY1MzA3ODE3YzQ0NmQwN2U=
|
data/lib/calamum.rb
CHANGED
data/lib/calamum/config.rb
CHANGED
data/lib/calamum/doc_parser.rb
CHANGED
@@ -13,17 +13,28 @@ class Calamum::DocParser
|
|
13
13
|
def get_name
|
14
14
|
@definition['name']
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def get_version
|
18
18
|
@definition['version']
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def get_description
|
22
22
|
@definition['description']
|
23
23
|
end
|
24
24
|
|
25
25
|
def get_resources
|
26
|
-
|
26
|
+
resources = @definition['resources'].kind_of?(String) ? get_seperate_resources : @definition['resources']
|
27
|
+
Calamum::Config[:sort]? resources.sort : resources
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_seperate_resources
|
31
|
+
extension = File.extname(Calamum::Config[:source])
|
32
|
+
path = File.expand_path("#{@definition['resources']}", File.dirname(Calamum::Config[:source]))
|
33
|
+
case extension
|
34
|
+
when '.json' then Dir["#{path}/*#{extension}"].map { |f| Yajl.load File.read(f) }.flatten.reduce({}, :merge)
|
35
|
+
when '.yml' then Dir["#{path}/*#{extension}"].map { |f| YAML.load File.read(f) }.flatten.reduce({}, :merge)
|
36
|
+
else raise 'unknown source file extension'
|
37
|
+
end
|
27
38
|
end
|
28
39
|
|
29
40
|
def load_resources
|
data/lib/calamum/resource.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# So anywhere in view template we can use this object.
|
4
4
|
class Calamum::Resource
|
5
5
|
attr_accessor :uri, :action, :headers,
|
6
|
-
:auth, :params, :errors, :description, :response
|
6
|
+
:auth, :params, :errors, :description, :response, :tryit
|
7
7
|
|
8
8
|
# Initialize object from attributes.
|
9
9
|
#
|
@@ -12,13 +12,22 @@ class Calamum::Resource
|
|
12
12
|
@uri = attrs['uri']
|
13
13
|
@action = attrs['action'].upcase
|
14
14
|
@headers = attrs['headers'] || {}
|
15
|
-
@auth =
|
15
|
+
@auth = !attrs['authentication']
|
16
16
|
@params = attrs['params'] || {}
|
17
17
|
@errors = attrs['errors'] || {}
|
18
18
|
@description = attrs['description']
|
19
19
|
@response = attrs['response']
|
20
|
+
@tryit = attrs['tryit']
|
20
21
|
end
|
21
|
-
|
22
|
+
|
23
|
+
# Returns a unique, but readable name for this resource suitable for use as a filename
|
24
|
+
#
|
25
|
+
# @return [String] resource filename
|
26
|
+
def slug
|
27
|
+
sanitized_uri = uri.gsub(/[^\w]/, '_').gsub('__', '_')
|
28
|
+
"#{sanitized_uri}_#{action.downcase}_#{self.object_id}"
|
29
|
+
end
|
30
|
+
|
22
31
|
# @override
|
23
32
|
# Returns a string representing a label css class.
|
24
33
|
#
|
data/lib/calamum/runner.rb
CHANGED
@@ -49,14 +49,14 @@ class Calamum::Runner
|
|
49
49
|
:description => 'Show version number',
|
50
50
|
:proc => lambda { |x| puts Calamum::VERSION },
|
51
51
|
:exit => 0
|
52
|
-
|
52
|
+
|
53
53
|
option :sort,
|
54
54
|
:short => "-s",
|
55
55
|
:long => "--sort",
|
56
56
|
:description => "Sort the resources alphabetically",
|
57
57
|
:boolean => true,
|
58
58
|
:default => false
|
59
|
-
|
59
|
+
|
60
60
|
# Parses command line options and generates API documentation.
|
61
61
|
# See samples for details how to define meta-data for your API.
|
62
62
|
def run
|
@@ -65,7 +65,7 @@ class Calamum::Runner
|
|
65
65
|
@definition = Calamum::DocParser.new(load_source)
|
66
66
|
@definition.load_resources
|
67
67
|
Calamum::DocGenerator.init_base_dir
|
68
|
-
process_index
|
68
|
+
process_index
|
69
69
|
process_pages if config[:template] == 'twitter'
|
70
70
|
rescue => ex
|
71
71
|
puts_error ex.message
|
@@ -82,7 +82,7 @@ class Calamum::Runner
|
|
82
82
|
raise 'unknown source file extension'
|
83
83
|
end
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
# Bind values to index page and save it.
|
87
87
|
def process_index
|
88
88
|
bindings = {
|
@@ -108,7 +108,7 @@ class Calamum::Runner
|
|
108
108
|
@definition.resources.each do |methods|
|
109
109
|
methods[1].each do |resource|
|
110
110
|
bindings.merge!(:resource => resource)
|
111
|
-
filename = "#{resource.
|
111
|
+
filename = "#{resource.slug}.html"
|
112
112
|
page.save_template(filename, bindings)
|
113
113
|
end
|
114
114
|
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
<html lang="en">
|
3
3
|
<head>
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
6
|
<meta name="description" content="">
|
6
7
|
<meta name="author" content="">
|
7
8
|
<link href="./assets/stylesheets/bootstrap.css" rel="Stylesheet"/>
|
@@ -58,22 +59,22 @@
|
|
58
59
|
<% requests.each do |req| %>
|
59
60
|
<div class="accordion-group">
|
60
61
|
<div class="accordion-heading <%= req.action.downcase %>Header">
|
61
|
-
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#<%= req.
|
62
|
+
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#<%= req.slug %>">
|
62
63
|
<span><span class="label <%= req.action_label %>"><%= req.action %></span><h4 style="display:inline;"><%= " #{req.uri}" %></h4></span>
|
63
64
|
</a>
|
64
65
|
</div>
|
65
|
-
<div id="<%= req.
|
66
|
+
<div id="<%= req.slug %>" class="accordion-body collapse">
|
66
67
|
<div class="accordion-inner">
|
67
68
|
<ul class="nav nav-tabs">
|
68
|
-
<li class="active"><a href="#description_<%= req.
|
69
|
-
<li><a href="#header_<%= req.
|
70
|
-
<li><a href="#params_<%= req.
|
71
|
-
<li><a href="#response_<%= req.
|
69
|
+
<li class="active"><a href="#description_<%= req.slug %>" data-toggle="tab">Description</a></li>
|
70
|
+
<li><a href="#header_<%= req.slug %>" data-toggle="tab">Header</a></li>
|
71
|
+
<li><a href="#params_<%= req.slug %>" data-toggle="tab">Parameters</a></li>
|
72
|
+
<li><a href="#response_<%= req.slug %>" data-toggle="tab">Response</a></li>
|
72
73
|
</ul>
|
73
74
|
<div class="tab-content">
|
74
|
-
<div class="tab-pane active" id="description_<%= req.
|
75
|
-
<div class="tab-pane" id="header_<%= req.
|
76
|
-
<% unless req.
|
75
|
+
<div class="tab-pane active" id="description_<%= req.slug %>"><%= req.description %></div>
|
76
|
+
<div class="tab-pane" id="header_<%= req.slug %>">
|
77
|
+
<% unless req.headers.empty? %>
|
77
78
|
<table class="table table-bordered table-hover">
|
78
79
|
<thead>
|
79
80
|
<tr>
|
@@ -94,7 +95,7 @@
|
|
94
95
|
Request without headers
|
95
96
|
<% end %>
|
96
97
|
</div>
|
97
|
-
<div class="tab-pane" id="params_<%= req.
|
98
|
+
<div class="tab-pane" id="params_<%= req.slug %>">
|
98
99
|
<% unless req.params.empty? %>
|
99
100
|
<table class="table table-bordered table-hover">
|
100
101
|
<thead>
|
@@ -117,10 +118,10 @@
|
|
117
118
|
</tbody>
|
118
119
|
</table>
|
119
120
|
<% else %>
|
120
|
-
Request without
|
121
|
+
Request without parameters
|
121
122
|
<% end %>
|
122
123
|
</div>
|
123
|
-
<div class="tab-pane content" id="response_<%= req.
|
124
|
+
<div class="tab-pane content" id="response_<%= req.slug %>">
|
124
125
|
<% if req.response %>
|
125
126
|
<pre class="prettyprint"><%= pj req.response %></pre>
|
126
127
|
<% end%>
|
@@ -41,7 +41,7 @@
|
|
41
41
|
<% endpoints.each do |resource| %>
|
42
42
|
<tr>
|
43
43
|
<td class="views-field-title">
|
44
|
-
<a href="<%= resource.
|
44
|
+
<a href="<%= resource.slug %>.html"><%= resource.action %> <%= resource.uri %></a>
|
45
45
|
</td>
|
46
46
|
<td class="views-field-body">
|
47
47
|
<%= resource.description %>
|
data/lib/calamum/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calamum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alex Y.
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-06-26 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: yajl-ruby
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ! '>='
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ! '>='
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,7 +28,6 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: mixlib-cli
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
32
|
- - ! '>='
|
37
33
|
- !ruby/object:Gem::Version
|
@@ -39,7 +35,6 @@ dependencies:
|
|
39
35
|
type: :runtime
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ! '>='
|
45
40
|
- !ruby/object:Gem::Version
|
@@ -47,7 +42,6 @@ dependencies:
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: mixlib-config
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ! '>='
|
53
47
|
- !ruby/object:Gem::Version
|
@@ -55,18 +49,48 @@ dependencies:
|
|
55
49
|
type: :runtime
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rspec
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rspec-its
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
80
|
requirements:
|
60
81
|
- - ! '>='
|
61
82
|
- !ruby/object:Gem::Version
|
62
83
|
version: '0'
|
63
84
|
description:
|
64
|
-
email:
|
85
|
+
email:
|
86
|
+
- lachheb.mehrez@gmail.com
|
65
87
|
executables:
|
66
88
|
- calamum
|
67
89
|
extensions: []
|
68
90
|
extra_rdoc_files: []
|
69
91
|
files:
|
92
|
+
- bin/calamum
|
93
|
+
- lib/calamum.rb
|
70
94
|
- lib/calamum/config.rb
|
71
95
|
- lib/calamum/doc_generator.rb
|
72
96
|
- lib/calamum/doc_parser.rb
|
@@ -91,30 +115,28 @@ files:
|
|
91
115
|
- lib/calamum/templates/twitter/index.html.erb
|
92
116
|
- lib/calamum/templates/twitter/view.html.erb
|
93
117
|
- lib/calamum/version.rb
|
94
|
-
- lib/calamum.rb
|
95
|
-
- bin/calamum
|
96
118
|
homepage: https://github.com/malachheb/calamum
|
97
|
-
licenses:
|
119
|
+
licenses:
|
120
|
+
- MIT
|
121
|
+
metadata: {}
|
98
122
|
post_install_message:
|
99
123
|
rdoc_options: []
|
100
124
|
require_paths:
|
101
125
|
- lib
|
102
126
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
127
|
requirements:
|
105
128
|
- - ! '>='
|
106
129
|
- !ruby/object:Gem::Version
|
107
130
|
version: '0'
|
108
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
132
|
requirements:
|
111
133
|
- - ! '>='
|
112
134
|
- !ruby/object:Gem::Version
|
113
135
|
version: '0'
|
114
136
|
requirements: []
|
115
137
|
rubyforge_project:
|
116
|
-
rubygems_version:
|
138
|
+
rubygems_version: 2.2.2
|
117
139
|
signing_key:
|
118
|
-
specification_version:
|
140
|
+
specification_version: 4
|
119
141
|
summary: REST API documentation generator
|
120
142
|
test_files: []
|