angus-sdoc 0.0.1 → 0.0.2
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/lib/angus/base.rb +11 -0
- data/lib/angus/definitions/base.rb +18 -0
- data/lib/angus/definitions/glossary.rb +52 -0
- data/lib/angus/definitions/glossary_term.rb +37 -0
- data/lib/angus/definitions/message.rb +31 -0
- data/lib/angus/definitions/operation.rb +62 -0
- data/lib/angus/definitions/proxy_operation.rb +24 -0
- data/lib/angus/definitions/representation.rb +15 -0
- data/lib/angus/definitions/representation_field.rb +51 -0
- data/lib/angus/definitions/request_element.rb +61 -0
- data/lib/angus/definitions/response_element.rb +41 -0
- data/lib/angus/definitions/service.rb +118 -0
- data/lib/angus/definitions/uri_element.rb +20 -0
- data/lib/angus/definitions_reader.rb +305 -0
- data/lib/angus/definitions_utils.rb +72 -0
- data/lib/angus/exceptions/base.rb +1 -0
- data/lib/angus/exceptions/invalid_service_message.rb +32 -0
- data/lib/angus/sdoc/html_formatter.rb +42 -0
- data/lib/angus/sdoc/json_formatter.rb +317 -0
- data/lib/angus/sdoc/templates/doc.erb +295 -0
- data/lib/angus/sdoc/templates/styles.erb +70 -0
- data/lib/angus/sdoc/version.rb +3 -3
- data/lib/angus/sdoc.rb +5 -6
- metadata +169 -26
- data/.gitignore +0 -17
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -22
- data/README.md +0 -29
- data/Rakefile +0 -1
- data/angus-sdoc.gemspec +0 -23
@@ -0,0 +1,317 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Angus
|
4
|
+
module SDoc
|
5
|
+
class JsonFormatter
|
6
|
+
|
7
|
+
def self.format(x)
|
8
|
+
define_singleton_method("format_#{x}") do |y|
|
9
|
+
JSON(send("#{x}_for_json", y))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
format :glossary
|
14
|
+
format :glossary_term
|
15
|
+
format :message
|
16
|
+
format :operation
|
17
|
+
format :proxy_operation
|
18
|
+
format :representation
|
19
|
+
format :representation_field
|
20
|
+
format :request_element
|
21
|
+
format :response_element
|
22
|
+
format :service
|
23
|
+
format :uri_element
|
24
|
+
|
25
|
+
class << self
|
26
|
+
private
|
27
|
+
|
28
|
+
# Returns a hash with the glossary data.
|
29
|
+
#
|
30
|
+
# @param [Angus::SDoc::Definitions::Glossary] glossary_definition
|
31
|
+
# The glossary definition.
|
32
|
+
#
|
33
|
+
# @return [Hash]
|
34
|
+
# @option return [(see .glossary_term_for_json)] :<term.short_name>
|
35
|
+
def glossary_for_json(glossary_definition)
|
36
|
+
glossary_definition.terms.inject({}) do |result, term|
|
37
|
+
result.merge({ term.short_name => glossary_term_for_json(term) })
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns a hash with the glossary term data.
|
42
|
+
#
|
43
|
+
# @param [Angus::SDoc::Definitions::GlossaryTerm] glossary_term_definition
|
44
|
+
# The glossary term definition.
|
45
|
+
#
|
46
|
+
# @return [Hash]
|
47
|
+
# @option return [String] :long_name
|
48
|
+
# @option return [String] :description
|
49
|
+
def glossary_term_for_json(glossary_term_definition)
|
50
|
+
{
|
51
|
+
:long_name => glossary_term_definition.long_name,
|
52
|
+
:description => glossary_term_definition.description
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns a hash with the message data.
|
57
|
+
#
|
58
|
+
# @param [Angus::SDoc::Definitions::Message] message_definition
|
59
|
+
# The message definition.
|
60
|
+
#
|
61
|
+
# @return [Hash]
|
62
|
+
# @option return [String] :key
|
63
|
+
# @option return [String] :description
|
64
|
+
# @option return [String] :level
|
65
|
+
# @option return [Integer] :status_code
|
66
|
+
def message_for_json(message_definition)
|
67
|
+
{
|
68
|
+
:key => message_definition.key,
|
69
|
+
:description => message_definition.description,
|
70
|
+
:level => message_definition.level,
|
71
|
+
:status_code => message_definition.status_code
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
# Returns a hash with the operation data.
|
76
|
+
#
|
77
|
+
# @param [Angus::SDoc::Definitions::Operation] operation_definition
|
78
|
+
# The operation definition.
|
79
|
+
#
|
80
|
+
# @return [Hash]
|
81
|
+
# @option return [String] :name
|
82
|
+
# @option return [String] :description
|
83
|
+
# @option return [String] :path
|
84
|
+
# @option return [String] :method
|
85
|
+
# @option return [Array<(see .uri_element_for_json)>] :uri
|
86
|
+
# @option return [Array<(see .request_element_for_json)>] :request
|
87
|
+
# @option return [Array<(see .response_element_for_json)>] :response
|
88
|
+
# @option return [Array<(see .message_for_json)>] :messages
|
89
|
+
def operation_for_json(operation_definition)
|
90
|
+
data = {
|
91
|
+
:name => operation_definition.name,
|
92
|
+
:description => operation_definition.description,
|
93
|
+
:path => operation_definition.path,
|
94
|
+
:method => operation_definition.method
|
95
|
+
}
|
96
|
+
|
97
|
+
if operation_definition.uri_elements && !operation_definition.uri_elements.empty?
|
98
|
+
uri_elements = operation_definition.uri_elements.map do |uri_element|
|
99
|
+
uri_element_for_json(uri_element)
|
100
|
+
end
|
101
|
+
data.merge!({ :uri => uri_elements })
|
102
|
+
end
|
103
|
+
|
104
|
+
if operation_definition.request_elements && !operation_definition.request_elements.empty?
|
105
|
+
request_elements = operation_definition.request_elements.map do |request_element|
|
106
|
+
request_element_for_json(request_element)
|
107
|
+
end
|
108
|
+
|
109
|
+
data.merge!({ :request => request_elements })
|
110
|
+
end
|
111
|
+
|
112
|
+
if operation_definition.response_elements && !operation_definition.response_elements.empty?
|
113
|
+
response_elements = operation_definition.response_elements.map do |response_element|
|
114
|
+
response_element_for_json(response_element)
|
115
|
+
end
|
116
|
+
|
117
|
+
data.merge!({:response => response_elements})
|
118
|
+
end
|
119
|
+
|
120
|
+
if operation_definition.messages && !operation_definition.messages.empty?
|
121
|
+
messages = operation_definition.messages.map do |message|
|
122
|
+
message_for_json(message)
|
123
|
+
end
|
124
|
+
|
125
|
+
data.merge!({:messages => messages})
|
126
|
+
end
|
127
|
+
|
128
|
+
data
|
129
|
+
end
|
130
|
+
|
131
|
+
# Returns a hash with the proxy operation data.
|
132
|
+
#
|
133
|
+
# @param [Angus::SDoc::Definitions::ProxyOperation] proxy_operation_definition
|
134
|
+
# The proxy operation definition.
|
135
|
+
#
|
136
|
+
# @return [Hash]
|
137
|
+
# @option return [String] :path
|
138
|
+
# @option return [String] :method
|
139
|
+
# @option return [String] :service
|
140
|
+
def proxy_operation_for_json(proxy_operation_definition)
|
141
|
+
{
|
142
|
+
:path => proxy_operation_definition.path,
|
143
|
+
:method => proxy_operation_definition.method,
|
144
|
+
:service => proxy_operation_definition.service_name
|
145
|
+
}
|
146
|
+
end
|
147
|
+
|
148
|
+
# Returns a hash with the representation data.
|
149
|
+
#
|
150
|
+
# @param [Angus::SDoc::Definitions::Representation] representation_definition
|
151
|
+
# The representation definition.
|
152
|
+
#
|
153
|
+
# @return [Array<(see .representation_field_for_json)>]
|
154
|
+
def representation_for_json(representation_definition)
|
155
|
+
representation_definition.fields.map do |field|
|
156
|
+
representation_field_for_json(field)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
# Returns a hash with the representation field data.
|
161
|
+
#
|
162
|
+
# @param [Angus::SDoc::Definitions::RepresentationField] representation_field_definition
|
163
|
+
# The representation field definition.
|
164
|
+
#
|
165
|
+
# @return [Hash]
|
166
|
+
# @option return [String] :element
|
167
|
+
# @option return [String] :description
|
168
|
+
# @option return [Boolean] :required
|
169
|
+
# @option return [String] :type
|
170
|
+
# @option return [String] :elements_type
|
171
|
+
def representation_field_for_json(representation_field_definition)
|
172
|
+
data = {
|
173
|
+
:field => representation_field_definition.name,
|
174
|
+
:description => representation_field_definition.description,
|
175
|
+
:required => representation_field_definition.required
|
176
|
+
}
|
177
|
+
|
178
|
+
if representation_field_definition.type
|
179
|
+
data.merge!({:type => representation_field_definition.type})
|
180
|
+
end
|
181
|
+
|
182
|
+
if representation_field_definition.elements_type
|
183
|
+
data.merge!({:elements_type => representation_field_definition.elements_type})
|
184
|
+
end
|
185
|
+
|
186
|
+
data
|
187
|
+
end
|
188
|
+
|
189
|
+
# Returns a hash with the request element data.
|
190
|
+
#
|
191
|
+
# @param [Angus::SDoc::Definitions::RequestElement] request_element_definition
|
192
|
+
# The request element definition.
|
193
|
+
#
|
194
|
+
# @return [Hash]
|
195
|
+
# @option return [String] :element
|
196
|
+
# @option return [String] :description
|
197
|
+
# @option return [Boolean] :required
|
198
|
+
# @option return [String] :type
|
199
|
+
# @option return [String] :elements_type
|
200
|
+
def request_element_for_json(request_element_definition)
|
201
|
+
data = {
|
202
|
+
:element => request_element_definition.name,
|
203
|
+
:description => request_element_definition.description,
|
204
|
+
:required => request_element_definition.required
|
205
|
+
}
|
206
|
+
|
207
|
+
if request_element_definition.type
|
208
|
+
data.merge!({:type => request_element_definition.type})
|
209
|
+
end
|
210
|
+
|
211
|
+
if request_element_definition.elements_type
|
212
|
+
data.merge!({:elements_type => request_element_definition.elements_type})
|
213
|
+
end
|
214
|
+
|
215
|
+
data
|
216
|
+
end
|
217
|
+
|
218
|
+
# Returns a hash with the response element data.
|
219
|
+
#
|
220
|
+
# @param [Angus::SDoc::Definitions::ResponseElement] response_element_definition
|
221
|
+
# The response element definition.
|
222
|
+
#
|
223
|
+
# @return [Hash]
|
224
|
+
# @option return [String] :element
|
225
|
+
# @option return [String] :description
|
226
|
+
# @option return [Boolean] :required
|
227
|
+
# @option return [String] :type
|
228
|
+
# @option return [String] :elements_type
|
229
|
+
def response_element_for_json(response_element_definition)
|
230
|
+
data = {
|
231
|
+
:element => response_element_definition.name,
|
232
|
+
:description => response_element_definition.description,
|
233
|
+
:required => response_element_definition.required
|
234
|
+
}
|
235
|
+
|
236
|
+
if response_element_definition.type
|
237
|
+
data.merge!({:type => response_element_definition.type})
|
238
|
+
end
|
239
|
+
|
240
|
+
if response_element_definition.elements_type
|
241
|
+
data.merge!({:elements_type => response_element_definition.elements_type})
|
242
|
+
end
|
243
|
+
|
244
|
+
data
|
245
|
+
end
|
246
|
+
|
247
|
+
# Generates the json for the service definition.
|
248
|
+
#
|
249
|
+
# @param [Angus::SDoc::Definitions::Service] service_definition
|
250
|
+
# The service definition.
|
251
|
+
#
|
252
|
+
# @return [Hash]
|
253
|
+
# @option return [Hash] :service
|
254
|
+
# @option :service [String] :service
|
255
|
+
# @option :service [String] :code_name
|
256
|
+
# @option :service [String] :version
|
257
|
+
# @option return [Hash<(see .uri_element_for_json)>] :operations
|
258
|
+
# @option return [Hash<(see .request_element_for_json)>] :proxy_operations
|
259
|
+
# @option return [Hash<(see .response_element_for_json)>] :representations
|
260
|
+
# @option return [Array<(see .message_for_json)>] :messages
|
261
|
+
# @option return [(see .message_for_json)] :glossary
|
262
|
+
def service_for_json(service_definition)
|
263
|
+
operations = service_definition.operations.inject({}) do |result, (namespace, operations)|
|
264
|
+
result[namespace] ||= {}
|
265
|
+
operations.each do |operation|
|
266
|
+
result[namespace][operation.code_name] = operation_for_json(operation)
|
267
|
+
end
|
268
|
+
result
|
269
|
+
end
|
270
|
+
|
271
|
+
proxy_operations = service_definition.proxy_operations.inject({}) do |result, operation|
|
272
|
+
result.merge({ operation.code_name => proxy_operation_for_json(operation) })
|
273
|
+
end
|
274
|
+
|
275
|
+
representations = service_definition.representations.inject({}) do |result, representation|
|
276
|
+
result.merge({ representation.name => representation_for_json(representation) })
|
277
|
+
end
|
278
|
+
|
279
|
+
messages = service_definition.messages.inject({}) do |result, message_data|
|
280
|
+
message_name, message = message_data
|
281
|
+
result.merge({ message_name => message_for_json(message) })
|
282
|
+
end
|
283
|
+
|
284
|
+
{
|
285
|
+
:service => {
|
286
|
+
:service => service_definition.name,
|
287
|
+
:code_name => service_definition.code_name,
|
288
|
+
:version => service_definition.version
|
289
|
+
},
|
290
|
+
:operations => operations,
|
291
|
+
:proxy_operations => proxy_operations,
|
292
|
+
:representations => representations,
|
293
|
+
:messages => messages,
|
294
|
+
:glossary => glossary_for_json(service_definition.glossary)
|
295
|
+
}
|
296
|
+
end
|
297
|
+
|
298
|
+
# Returns a hash with the uri element data.
|
299
|
+
#
|
300
|
+
# @param [Angus::SDoc::Definitions::UriElement] uri_element_definition
|
301
|
+
# The uri element definition.
|
302
|
+
#
|
303
|
+
# @return [Hash]
|
304
|
+
# @option return [String] :element
|
305
|
+
# @option return [String] :description
|
306
|
+
def uri_element_for_json(uri_element_definition)
|
307
|
+
{
|
308
|
+
:element => uri_element_definition.name,
|
309
|
+
:description => uri_element_definition.description
|
310
|
+
}
|
311
|
+
end
|
312
|
+
|
313
|
+
end
|
314
|
+
|
315
|
+
end
|
316
|
+
end
|
317
|
+
end
|
@@ -0,0 +1,295 @@
|
|
1
|
+
<%
|
2
|
+
glossary_terms_hash = @service.glossary.terms_hash
|
3
|
+
%>
|
4
|
+
|
5
|
+
<html>
|
6
|
+
<head>
|
7
|
+
<title>Especificación API de Servicio <%= @service.name %></title>
|
8
|
+
|
9
|
+
<style type="text/css" media="screen">
|
10
|
+
<%= erb :styles %>
|
11
|
+
</style>
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
<div class="content">
|
15
|
+
<h1>Especificación API de Servicio <%= @service.name %></h1>
|
16
|
+
<h4>Nombre en código</h4>
|
17
|
+
<p><%= @service.code_name %></p>
|
18
|
+
|
19
|
+
<h3>Operaciones</h3>
|
20
|
+
<p>
|
21
|
+
En esta sección se describen las operaciones presentadas por este servicio.
|
22
|
+
</p>
|
23
|
+
|
24
|
+
<table>
|
25
|
+
<thead>
|
26
|
+
<tr>
|
27
|
+
<td>Índice de Operaciones</td>
|
28
|
+
</tr>
|
29
|
+
</thead>
|
30
|
+
<tbody>
|
31
|
+
<% @service.operations.each do |(controller_name, operations)| %>
|
32
|
+
<% operations.each do |operation| %>
|
33
|
+
<tr>
|
34
|
+
<td>
|
35
|
+
<a href="#operation-<%= controller_name %>-<%= operation.code_name %>">
|
36
|
+
<%= controller_name %>#<%= operation.code_name %>
|
37
|
+
</a>
|
38
|
+
</td>
|
39
|
+
</tr>
|
40
|
+
<% end %>
|
41
|
+
<% end %>
|
42
|
+
</tbody>
|
43
|
+
</table>
|
44
|
+
|
45
|
+
<% if @service.proxy_operations.any? %>
|
46
|
+
<p></p>
|
47
|
+
<table>
|
48
|
+
<thead>
|
49
|
+
<tr><td>Índice de Operaciones Proxy</td></tr>
|
50
|
+
</thead>
|
51
|
+
<tbody>
|
52
|
+
<% @service.proxy_operations.each do |operation| %>
|
53
|
+
<tr><td>
|
54
|
+
<a href="#proxy-operation-<%= operation.code_name %>">
|
55
|
+
<%= operation.code_name %>
|
56
|
+
</a>
|
57
|
+
</td></tr>
|
58
|
+
<% end %>
|
59
|
+
</tbody>
|
60
|
+
</table>
|
61
|
+
<% end %>
|
62
|
+
|
63
|
+
<% @service.operations.each do |(controller_name, operations)| %>
|
64
|
+
<% operations.each do |operation| %>
|
65
|
+
<div class="operation" id="operation-<%= controller_name %>-<%= operation.code_name %>">
|
66
|
+
<h4>
|
67
|
+
<%= operation.name %>
|
68
|
+
</h4>
|
69
|
+
|
70
|
+
<h5>Descripción</h5>
|
71
|
+
<p><%= operation.description %></p>
|
72
|
+
|
73
|
+
<h5>Versiones</h5>
|
74
|
+
<p>Presente desde versión inicial</p>
|
75
|
+
|
76
|
+
<table class="vertical-header split">
|
77
|
+
<tbody>
|
78
|
+
<tr>
|
79
|
+
<td>Método</td>
|
80
|
+
<td><%= operation.method %></td>
|
81
|
+
</tr>
|
82
|
+
<tr>
|
83
|
+
<td>URI</td>
|
84
|
+
<td><%= operation.path %></td>
|
85
|
+
</tr>
|
86
|
+
<tr>
|
87
|
+
<td>Nombre interno</td>
|
88
|
+
<td><%= operation.code_name %></td>
|
89
|
+
</tr>
|
90
|
+
</tbody>
|
91
|
+
</table>
|
92
|
+
|
93
|
+
<% if !operation.uri_elements.empty? %>
|
94
|
+
<h5>Parametros de Path URI</h5>
|
95
|
+
<table>
|
96
|
+
<thead>
|
97
|
+
<tr>
|
98
|
+
<td>Parámetro</td>
|
99
|
+
<td>Descripción</td>
|
100
|
+
</tr>
|
101
|
+
</thead>
|
102
|
+
<tbody>
|
103
|
+
<% operation.uri_elements.each do |element| %>
|
104
|
+
<tr>
|
105
|
+
<td><%= element.name %></td>
|
106
|
+
<td>
|
107
|
+
<%= element.description %>
|
108
|
+
</td>
|
109
|
+
</tr>
|
110
|
+
<% end %>
|
111
|
+
</tbody>
|
112
|
+
</table>
|
113
|
+
<% end %>
|
114
|
+
|
115
|
+
|
116
|
+
<% if !operation.request_elements.empty? %>
|
117
|
+
<h5>Elementos de Petición</h5>
|
118
|
+
<table>
|
119
|
+
<thead>
|
120
|
+
<tr>
|
121
|
+
<td>Nombre</td>
|
122
|
+
<td>Descripción</td>
|
123
|
+
<td>Requerido</td>
|
124
|
+
</tr>
|
125
|
+
</thead>
|
126
|
+
<tbody>
|
127
|
+
<% operation.request_elements.each do |element| %>
|
128
|
+
<tr>
|
129
|
+
<td><%= element.name %></td>
|
130
|
+
<td>
|
131
|
+
<%= element.description %><br />
|
132
|
+
Tipo: <%= h_type(element.type, @service) %><br />
|
133
|
+
Restricciones: <%= element.constraints %><br />
|
134
|
+
Valores Válidos: <%= element.valid_values %><br />
|
135
|
+
<% if glossary_terms_hash.include?(element.name)
|
136
|
+
glossary_term = glossary_terms_hash[element.name]
|
137
|
+
%>
|
138
|
+
Glosario:
|
139
|
+
<a href="#glossary-term-<%= glossary_term.short_name %>"><%= glossary_term.long_name %></a>
|
140
|
+
<br />
|
141
|
+
<% end %>
|
142
|
+
</td>
|
143
|
+
<td><%= element.required %></td>
|
144
|
+
</tr>
|
145
|
+
<% end %>
|
146
|
+
</tbody>
|
147
|
+
</table>
|
148
|
+
<% end %>
|
149
|
+
|
150
|
+
<% if !operation.response_elements.empty? %>
|
151
|
+
<h5>Elementos de Respuesta</h5>
|
152
|
+
<table>
|
153
|
+
<thead>
|
154
|
+
<tr>
|
155
|
+
<td>Nombre</td>
|
156
|
+
<td>Descripción</td>
|
157
|
+
<td>Requerido</td>
|
158
|
+
</tr>
|
159
|
+
</thead>
|
160
|
+
<tbody>
|
161
|
+
<% operation.response_elements.each do |element| %>
|
162
|
+
<tr>
|
163
|
+
<td><%= element.name %></td>
|
164
|
+
<td>
|
165
|
+
<%= element.description %><br />
|
166
|
+
<% if element.type %>
|
167
|
+
Tipo: <%= h_type(element.type, @service) %><br />
|
168
|
+
<% else %>
|
169
|
+
Contenedor: <%= h_type(element.elements_type, @service) %><br />
|
170
|
+
<% end %>
|
171
|
+
<% if element.default %>
|
172
|
+
Valor por defecto: <%= element.default %>
|
173
|
+
<% end %>
|
174
|
+
</td>
|
175
|
+
<td><%= element.required %></td>
|
176
|
+
</tr>
|
177
|
+
<% end %>
|
178
|
+
</tbody>
|
179
|
+
</table>
|
180
|
+
<% end %>
|
181
|
+
|
182
|
+
<% if !operation.messages.empty? %>
|
183
|
+
<h5>Mensajes</h5>
|
184
|
+
<table>
|
185
|
+
<thead>
|
186
|
+
<tr>
|
187
|
+
<td>Nivel</td>
|
188
|
+
<td>Código</td>
|
189
|
+
<td>Descripción</td>
|
190
|
+
<td>Código de Estado HTTP</td>
|
191
|
+
</tr>
|
192
|
+
</thead>
|
193
|
+
<tbody>
|
194
|
+
<% operation.messages.each do |message| %>
|
195
|
+
<tr>
|
196
|
+
<td><%= message.level %></td>
|
197
|
+
<td><%= message.key %></td>
|
198
|
+
<td><%= message.description %></td>
|
199
|
+
<td><%= message.status_code %></td>
|
200
|
+
</tr>
|
201
|
+
<% end %>
|
202
|
+
</tbody>
|
203
|
+
</table>
|
204
|
+
<% end %>
|
205
|
+
</div>
|
206
|
+
<% end %>
|
207
|
+
<% end %>
|
208
|
+
|
209
|
+
<h3>Representaciones</h3>
|
210
|
+
<% @service.representations.each do |representation| %>
|
211
|
+
<div class="representation" id="representation-<%= representation.name %>">
|
212
|
+
<h4><%= representation.name %></h4>
|
213
|
+
<table>
|
214
|
+
<thead>
|
215
|
+
<tr>
|
216
|
+
<td>Nombre de Atributo</td>
|
217
|
+
<td>Descripción</td>
|
218
|
+
<td>Requerido</td>
|
219
|
+
</tr>
|
220
|
+
</thead>
|
221
|
+
<tbody>
|
222
|
+
<% representation.fields.each do |field| %>
|
223
|
+
<tr>
|
224
|
+
<td><%= field.name %></td>
|
225
|
+
<td>
|
226
|
+
<%= field.description %><br />
|
227
|
+
<% if field.type %>
|
228
|
+
Tipo: <%= h_type(field.type, @service) %><br />
|
229
|
+
<% else %>
|
230
|
+
Contenedor: <%= h_type(field.elements_type, @service) %><br />
|
231
|
+
<% end %>
|
232
|
+
</td>
|
233
|
+
<td><%= field.required %></td>
|
234
|
+
</tr>
|
235
|
+
<% end %>
|
236
|
+
</tbody>
|
237
|
+
</table>
|
238
|
+
</div>
|
239
|
+
<% end %>
|
240
|
+
|
241
|
+
<% if @service.proxy_operations.any? %>
|
242
|
+
<h3>Operaciones Proxy</h3>
|
243
|
+
<div id="proxy_operations" class="proxy_operations">
|
244
|
+
<table>
|
245
|
+
<thead>
|
246
|
+
<tr>
|
247
|
+
<td>Nombre Interno</td>
|
248
|
+
<td>Método</td>
|
249
|
+
<td>URI</td>
|
250
|
+
<td>Servicio</td>
|
251
|
+
</tr>
|
252
|
+
</thead>
|
253
|
+
<tbody>
|
254
|
+
<% @service.proxy_operations.each do |operation| %>
|
255
|
+
<tr id="proxy-operation-<%= operation.code_name %>">
|
256
|
+
<td>
|
257
|
+
<%= operation.code_name %>
|
258
|
+
</td>
|
259
|
+
<td><%= operation.method %></td>
|
260
|
+
<td><%= operation.path %></td>
|
261
|
+
<td><%= operation.service_name %></td>
|
262
|
+
</tr>
|
263
|
+
<% end %>
|
264
|
+
</tbody>
|
265
|
+
</table>
|
266
|
+
</div>
|
267
|
+
<% end %>
|
268
|
+
|
269
|
+
<% if @service.glossary.terms.any? %>
|
270
|
+
<h3>Glosario</h3>
|
271
|
+
<div class="glossary">
|
272
|
+
<table>
|
273
|
+
<thead>
|
274
|
+
<tr>
|
275
|
+
<td>Nombre Corto</td>
|
276
|
+
<td>Nombre Largo</td>
|
277
|
+
<td>Descripción</td>
|
278
|
+
</tr>
|
279
|
+
</thead>
|
280
|
+
<tbody>
|
281
|
+
<% @service.glossary.terms.each do |term| %>
|
282
|
+
<tr id="glossary-term-<%= term.short_name %>">
|
283
|
+
<td><%= term.short_name %></td>
|
284
|
+
<td><%= term.long_name %></td>
|
285
|
+
<td><%= term.description %></td>
|
286
|
+
</tr>
|
287
|
+
<% end %>
|
288
|
+
</tbody>
|
289
|
+
</table>
|
290
|
+
</div>
|
291
|
+
<% end %>
|
292
|
+
|
293
|
+
</body>
|
294
|
+
</html>
|
295
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
body {
|
2
|
+
font-family: Arial;
|
3
|
+
font-size: 11pt;
|
4
|
+
background-color: #D0D0D0;
|
5
|
+
}
|
6
|
+
|
7
|
+
h1 {
|
8
|
+
text-align: center;
|
9
|
+
font-size: 24pt;
|
10
|
+
font-weight: bold;
|
11
|
+
}
|
12
|
+
|
13
|
+
h3 {
|
14
|
+
font-size: 14pt;
|
15
|
+
font-weight: bold;
|
16
|
+
}
|
17
|
+
|
18
|
+
h4 {
|
19
|
+
font-size: 12pt;
|
20
|
+
font-weight: bold;
|
21
|
+
}
|
22
|
+
|
23
|
+
h5 {
|
24
|
+
font-size: 11pt;
|
25
|
+
font-weight: bold;
|
26
|
+
}
|
27
|
+
|
28
|
+
table {
|
29
|
+
border-collapse: collapse;
|
30
|
+
border-spacing: 0;
|
31
|
+
width: 50em;
|
32
|
+
}
|
33
|
+
|
34
|
+
thead {
|
35
|
+
background-color: #EFEFEF;
|
36
|
+
font-size: 10pt;
|
37
|
+
font-weight: bold;
|
38
|
+
}
|
39
|
+
|
40
|
+
tbody {
|
41
|
+
font-size: 11pt;
|
42
|
+
}
|
43
|
+
|
44
|
+
td {
|
45
|
+
border: solid 1px #000000;
|
46
|
+
margin: 0;
|
47
|
+
padding: 4pt 6pt;
|
48
|
+
}
|
49
|
+
|
50
|
+
body > .content {
|
51
|
+
margin: 20px 10px;
|
52
|
+
border: solid 1px #909090;
|
53
|
+
padding: 10px 10px;
|
54
|
+
background-color: #FFFFFF;
|
55
|
+
}
|
56
|
+
|
57
|
+
.operation, .representation {
|
58
|
+
border-bottom: solid 1px #909090;
|
59
|
+
padding-bottom: 4ex;
|
60
|
+
}
|
61
|
+
|
62
|
+
table.vertical-header td:first-child {
|
63
|
+
background-color: #EFEFEF;
|
64
|
+
font-size: 10pt;
|
65
|
+
font-weight: bold;
|
66
|
+
}
|
67
|
+
|
68
|
+
table.split td:first-child {
|
69
|
+
width: 40%;
|
70
|
+
}
|
data/lib/angus/sdoc/version.rb
CHANGED