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 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
@@ -2,7 +2,6 @@ require 'erb'
2
2
  require 'yajl'
3
3
  require 'yaml'
4
4
  require 'fileutils'
5
- require 'pry'
6
5
 
7
6
  module Calamum
8
7
  require 'calamum/config'
@@ -1,4 +1,4 @@
1
- require 'calamum'
1
+ # require 'calamum'
2
2
  require 'mixlib/config'
3
3
 
4
4
  # Provides a class-based configuration object.
@@ -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
- Calamum::Config[:sort]? @definition['resources'].sort : @definition['resources']
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
@@ -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 = !!attrs['authentication']
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
  #
@@ -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.object_id}.html"
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.object_id %>">
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.object_id %>" class="accordion-body collapse">
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.object_id %>" data-toggle="tab">Description</a></li>
69
- <li><a href="#header_<%= req.object_id %>" data-toggle="tab">Header</a></li>
70
- <li><a href="#params_<%= req.object_id %>" data-toggle="tab">Parameters</a></li>
71
- <li><a href="#response_<%= req.object_id %>" data-toggle="tab">Response</a></li>
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.object_id %>"><%= req.description %></div>
75
- <div class="tab-pane" id="header_<%= req.object_id %>">
76
- <% unless req.params.empty? %>
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.object_id %>">
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 parametres
121
+ Request without parameters
121
122
  <% end %>
122
123
  </div>
123
- <div class="tab-pane content" id="response_<%= req.object_id %>">
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.object_id %>.html"><%= resource.action %> <%= resource.uri %></a>
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 %>
@@ -1,3 +1,3 @@
1
1
  module Calamum
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
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.1.0
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: 2013-06-15 00:00:00.000000000 Z
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
- none: false
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: 1.8.24
138
+ rubygems_version: 2.2.2
117
139
  signing_key:
118
- specification_version: 3
140
+ specification_version: 4
119
141
  summary: REST API documentation generator
120
142
  test_files: []