prmd 0.13.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 906209c8a327e103f1392faff3f4c7a35caac7b9
4
- data.tar.gz: 42fbce50f4e8477a1a5c1607521b49101a37b349
2
+ SHA256:
3
+ metadata.gz: 7d549096116bdd614f84c9956e2de37d34d09721c8d67be4d189beab98787934
4
+ data.tar.gz: ecbd1909e6258876c49165bfdaaab02a6fcd99397bdd7470ec6b033c99381113
5
5
  SHA512:
6
- metadata.gz: 1b246f23874af73656586f681cc2002ce8f37ba313ec128dc17ae4ee84814b641fd6bd42fd05007d4f040a289276b8be1fe7167990f6041b43c66ea2009339fb
7
- data.tar.gz: 7bb6505cccc8df5313a2fd1b87411feac21ac4e7f126046be329a3a0d52e7bcd7f58428f66b8295c3583d5892d63b4f6b74c98499873031e8971f3cac302cede
6
+ metadata.gz: 92c5e9081ae01609eac6223fe89e1a487bf9924001d60ef14baf3557c7ea053ecefe010ab4ae2ba7f771c82266abc6c891cb610662c1d5d32b426331bb2dce0b
7
+ data.tar.gz: 9874013f4b85083bf9405dad926be63584a5856fa6810463f727bec82a81d363d350117a122db2fd90e865306f3dc3ec9f29e8a8de57d74d7c9512414dcb8d55
@@ -1,11 +1,13 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0
4
- - 2.1
5
- - 2.2
3
+ - 2.3.8
4
+ - 2.4.10
5
+ - 2.5.8
6
+ - 2.6.6
7
+ - 2.7.2
6
8
  - ruby-head
7
9
  before_install:
8
- - gem install bundler -v '~> 1.10'
10
+ - gem install bundler -v '~> 2.0'
9
11
  script: "bundle exec rake"
10
12
  notifications:
11
13
  email: false
@@ -55,6 +55,11 @@ Examples:
55
55
  "format": "uuid",
56
56
  "type": ["string"]
57
57
  },
58
+ "identity": {
59
+ "anyOf": [
60
+ { "$ref": "/schemata/example#/definitions/id" }
61
+ ]
62
+ },
58
63
  "url": {
59
64
  "description": "URL of resource",
60
65
  "example": "http://example.com",
@@ -5,6 +5,7 @@ require 'prmd/url_generator'
5
5
  require 'prmd/template'
6
6
  require 'prmd/schema'
7
7
  require 'prmd/link'
8
+ require_relative '../hash_helpers'
8
9
 
9
10
  # :nodoc:
10
11
  module Prmd
@@ -34,6 +35,10 @@ module Prmd
34
35
  options = legacy_parameters(*args)
35
36
  @files = options.fetch(:files) { [] }
36
37
  super options, &block
38
+ if @options[:settings].is_a? String
39
+ settings = Prmd.load_schema_file(@options[:settings])
40
+ @options.merge! HashHelpers.deep_symbolize_keys(settings)
41
+ end
37
42
  @options[:template] ||= Prmd::Template.template_dirname
38
43
  end
39
44
 
@@ -118,6 +118,8 @@ module Prmd
118
118
  end
119
119
  ref = id_ref || value['anyOf'].first
120
120
  schema_example(ref)
121
+ elsif value.key?('allOf')
122
+ value['allOf'].map { |ref| schema_example(ref) }.reduce({}, &:merge)
121
123
  elsif value.key?('properties') # nested properties
122
124
  schema_example(value)
123
125
  elsif value.key?('items') # array of objects
@@ -1,4 +1,11 @@
1
- <% if options[:doc][:toc] %><%= Prmd::Template::load('table_of_contents.erb', options[:template]).result({schema: schema}) %> <%end %>
1
+ <%- if options[:doc][:toc] -%>
2
+ <%=
3
+ Prmd::Template::load('table_of_contents.erb', options[:template]).result({
4
+ options: options,
5
+ schema: schema
6
+ })
7
+ %>
8
+ <%- end -%>
2
9
  <%=
3
10
  schemata_template = Prmd::Template::load('schemata.md.erb', options[:template])
4
11
 
@@ -9,7 +9,8 @@
9
9
  title = schemata['title'].split(' - ', 2).last
10
10
  -%>
11
11
  <%- unless options[:doc][:disable_title_and_description] %>
12
- ## <a name="resource-<%= resource %>"><%= title %></a>
12
+ <a name="#resource-<%= resource %>"></a>
13
+ ## <%= title %>
13
14
 
14
15
  <%- if schemata['stability'] && !schemata['stability'].empty? %>
15
16
  Stability: `<%= schemata['stability'] %>`
@@ -19,8 +20,13 @@ Stability: `<%= schemata['stability'] %>`
19
20
  <%- end -%>
20
21
 
21
22
  <%- if schemata['properties'] && !schemata['properties'].empty? %>
23
+
22
24
  ### Attributes
23
25
 
26
+ <details>
27
+ <summary>Details</summary>
28
+
29
+
24
30
  | Name | Type | Description | Example |
25
31
  | ------- | ------- | ------- | ------- |
26
32
  <%- refs = extract_schemata_refs(schema, schemata['properties']).map {|v| v && v.split("/")} %>
@@ -33,6 +39,8 @@ Stability: `<%= schemata['stability'] %>`
33
39
  | **<%= name %>** | *<%= type %>* | <%= description %> | <%= example %> |
34
40
  <%- end %>
35
41
 
42
+ </details>
43
+
36
44
  <%- end %>
37
45
  <%- (schemata['links'] || []).each do |link, datum| %>
38
46
  <%=
@@ -137,7 +137,10 @@
137
137
  end
138
138
 
139
139
  if value['pattern']
140
- description += "<br/> **pattern:** `#{value['pattern']}`"
140
+ # Prevent the pipe regex pattern characters from being interpreted as markdown table:
141
+ pattern = value['pattern'].gsub(/\|/, '&#x7c;')
142
+
143
+ description += "<br/> **pattern:** <pre>#{pattern}</pre>"
141
144
  end
142
145
 
143
146
  if value['minLength'] || value['maxLength']
@@ -175,7 +178,7 @@
175
178
  else
176
179
  ''
177
180
  end
178
- type += (value['format'] || (value['type'] - ['null']).first)
181
+ type += (value['format'] || (value['type'] - ['null']).join(' or '))
179
182
  [key, type, description, example]
180
183
  end
181
184
 
@@ -183,8 +186,8 @@
183
186
  def build_link_path(schema, link)
184
187
  link['href'].gsub(%r|(\{\([^\)]+\)\})|) do |ref|
185
188
  ref = ref.gsub('%2F', '/').gsub('%23', '#').gsub(%r|[\{\(\)\}]|, '')
186
- ref_resource = ref.split('#/definitions/').last.split('/').first.gsub('-','_')
187
189
  identity_key, identity_value = schema.dereference(ref)
190
+ ref_resource = identity_key.split('#/definitions/').last.split('/').first.gsub('-','_')
188
191
  if identity_value.has_key?('anyOf')
189
192
  '{' + ref_resource + '_' + identity_value['anyOf'].map {|r| r['$ref'].split('/').last}.join('_or_') + '}'
190
193
  else
@@ -3,7 +3,11 @@
3
3
  response_example = link['response_example']
4
4
  link_schema_properties_template = Prmd::Template.load_template('link_schema_properties.md.erb', options[:template])
5
5
  -%>
6
- ### <a name="link-<%= link['method'] %>-<%= resource %>-<%= link['href'] %>"><%= title %> <%= link['title'] %></a>
6
+ <a name="link-<%= link['method'] %>-<%= resource %>-<%= link['href'] %>"></a>
7
+ ### <%= title %> <%= link['title'] %>
8
+
9
+ <details>
10
+ <summary>Details</summary>
7
11
 
8
12
  <%= link['description'] %>
9
13
 
@@ -78,3 +82,5 @@ HTTP/1.1 <%=
78
82
  <%- end %>
79
83
  ```
80
84
  <%- end %>
85
+
86
+ </details>
@@ -1,9 +1,11 @@
1
- # The table of contents
1
+ <%- Prmd::Template.render('schemata/helper.erb', options[:template]) -%>
2
+ ## The table of contents
3
+
2
4
  <% schema['properties'].keys.sort.map do |key| %>
3
5
  <% resource, property = key, schema['properties'][key] %>
4
6
  <% _, schemata = schema.dereference(property) %>
5
- - <a href="#resource-<%= resource %>"><%= schemata['title'].split(' - ', 2).last %></a>
7
+ - <a href="#resource-<%= resource %>"><%= schemata['title'].split(' - ', 2).last %></a>
6
8
  <% schemata.fetch('links', []).each do |l| %>
7
- - <a href="#link-<%= l['method'] %>-<%= resource %>-<%= l['href'] %>"><%= l['method'] %> <%= l['href'] %></a>
9
+ - <a href="#link-<%= l['method'] %>-<%= resource %>-<%= l['href'] %>"><%= l['method'] %> <%= build_link_path(schema, l) %></a>
8
10
  <% end %>
9
- <% end %>
11
+ <% end %>
@@ -2,7 +2,7 @@
2
2
  module Prmd
3
3
  # Well, duh, its a Version module, what did you expect?
4
4
  module Version
5
- MAJOR, MINOR, TEENY, PATCH = 0, 13, 0, nil
5
+ MAJOR, MINOR, TEENY, PATCH = 0, 14, 0, nil
6
6
  # version string
7
7
  # @return [String]
8
8
  STRING = [MAJOR, MINOR, TEENY, PATCH].compact.join('.').freeze
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'erubis', '~> 2.7'
22
22
  spec.add_dependency 'json_schema', '~> 0.3', '>= 0.3.1'
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 1.3'
25
- spec.add_development_dependency 'rake', '~> 10.3'
24
+ spec.add_development_dependency 'bundler', '~> 2.0'
25
+ spec.add_development_dependency 'rake', '>= 12.3.3'
26
26
  spec.add_development_dependency 'minitest', '~> 5.4'
27
27
  end
@@ -37,10 +37,10 @@ class InteragentRenderTest < Minitest::Test
37
37
  template = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'prmd', 'templates'))
38
38
  markdown = Prmd.render(schema, template: template, doc: { toc: true })
39
39
 
40
- assert_match /^# The table of contents/, markdown
40
+ assert_match /^## The table of contents/, markdown
41
41
  assert_match '<a href="#resource-app"', markdown
42
42
  assert_match '- <a href="#link-POST-app-/apps">POST /apps', markdown
43
- assert_match '<a name="link-POST-app-/apps"', markdown
43
+ assert_match '<a name="link-POST-app-/apps"></a>', markdown
44
44
  end
45
45
 
46
46
  def test_render_for_example_as_an_array
@@ -50,6 +50,12 @@ class InteragentRenderTest < Minitest::Test
50
50
  assert_match expression, markdown
51
51
  end
52
52
 
53
+ def test_render_for_regex_patterns_with_pipes
54
+ expression = /<pre>\(\^first\$&#x7c;\^second\$\)<\/pre> \| \`"second"\` \|\n/
55
+ markdown = render
56
+ assert_match expression, markdown
57
+ end
58
+
53
59
  private
54
60
 
55
61
  def data
@@ -113,6 +119,12 @@ class InteragentRenderTest < Minitest::Test
113
119
  'example' => 'OPTION2',
114
120
  'enum' => 'OPTION2'
115
121
  },
122
+ 'patterned-string' => {
123
+ 'description' => 'A string with a regex pattern applied to it.',
124
+ 'type' => 'string',
125
+ 'example' => 'second',
126
+ 'pattern' => '(^first$|^second$)'
127
+ },
116
128
  'option1' => {
117
129
  'properties' => {
118
130
  'type' => {
@@ -175,7 +187,10 @@ class InteragentRenderTest < Minitest::Test
175
187
  },
176
188
  'options' => {
177
189
  '$ref' => '#/definitions/config-var/definitions/options'
178
- }
190
+ },
191
+ 'patterned-string' => {
192
+ '$ref' => '#/definitions/config-var/definitions/patterned-string'
193
+ },
179
194
  }
180
195
  }
181
196
  },
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prmd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - geemus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-08 00:00:00.000000000 Z
11
+ date: 2020-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: erubis
@@ -50,28 +50,28 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '1.3'
53
+ version: '2.0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.3'
60
+ version: '2.0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '10.3'
67
+ version: 12.3.3
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '10.3'
74
+ version: 12.3.3
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: minitest
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -211,8 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
211
  - !ruby/object:Gem::Version
212
212
  version: '0'
213
213
  requirements: []
214
- rubyforge_project:
215
- rubygems_version: 2.5.1
214
+ rubygems_version: 3.1.4
216
215
  signing_key:
217
216
  specification_version: 4
218
217
  summary: JSON Schema tooling