calamum 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []