yard-api 1.0.1 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53889bf365efd2b84350d070ea62220373d9dbeea679357d77f8d8037209e3e3
4
- data.tar.gz: 957f57bd3f27845efe051f351c804269a82f104389cf0f6baffa1e179e14d221
3
+ metadata.gz: 6f9ac4cbeffaa2de7978493a2dee567b2961429daf4c44e36d88f799939b3951
4
+ data.tar.gz: d163d480697d3b23b479baec1087594d54f229813fd60de1b9f995146471b90f
5
5
  SHA512:
6
- metadata.gz: 3d175c0645d4f7770969448d9f540ee6135e4192ed5bb196521a73a6d0b6b47158a8d7ca191c66ee1634a50ed319f590e60c8434fbe2accadc67937077365a3a
7
- data.tar.gz: 6fbb88cacb7bf47ec0363e58a9f936f842188ab42d39379d3c131ca9a0b002f7480c6cf76395cab2aba8139d3289094097380e83377876ffeacd021a11e4a60e
6
+ metadata.gz: e5874aed23062b569f0703382f9fc50149322cf3c67a22123d68c8bcbfe1c46f42ea2760797e79551d4a89fc4d63246a8e72bbed00c002b7aee03c4ef5ca6993
7
+ data.tar.gz: d58e05d26f0a95c937c3deab4a985e4e7b2cc2bd5ec5153cee9385a29a1548dad1ea01d529e24c7862d86841ef8388c20bc833067345de47d7c46625567e19f8
@@ -21,6 +21,7 @@ module YARD::APIPlugin
21
21
  default_attr :footer_note, ''
22
22
 
23
23
  default_attr :one_file, false
24
+ default_attr :include_internal, false
24
25
  default_attr :strict, false
25
26
  default_attr :verbose, ENV['VERBOSE'] || false
26
27
  default_attr :debug, ENV['DEBUG'] || false
@@ -22,13 +22,14 @@ module YARD
22
22
  end
23
23
 
24
24
  def relevant_object?(object)
25
+ doc_include_internal = !!YARD::APIPlugin.options[:include_internal]
25
26
  case object.type
26
27
  when :root, :module, :constant
27
28
  false
28
29
  when :api
29
30
  true
30
31
  when :method
31
- return false if object.has_tag?(:internal) || !object.has_tag?(:API)
32
+ return false if object.has_tag?(:internal) && !doc_include_internal || !object.has_tag?(:API)
32
33
  routes = @routes[object.object_id]
33
34
  routes ||= begin
34
35
  @routes[object.object_id] = YARD::Templates::Helpers::RouteHelper.routes_for_yard_object(object)
@@ -43,7 +44,7 @@ module YARD
43
44
 
44
45
  routes.any?
45
46
  when :class
46
- return false if object.has_tag?(:internal) || !object.has_tag?(:API)
47
+ return false if object.has_tag?(:internal) && !doc_include_internal || !object.has_tag?(:API)
47
48
  true
48
49
  else
49
50
  object.parent.nil? && relevant_object?(object.parent)
@@ -1,5 +1,5 @@
1
1
  module YARD
2
2
  module APIPlugin
3
- VERSION = "1.0.1"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
data/spec/fulldoc_spec.rb CHANGED
@@ -1,25 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- module YARD
4
- module Serializers
5
- # A serializer that writes data to standard output.
6
- class SpecSerializer < Base
7
- # Creates a serializer to print text to stdout
8
- #
9
- # @param [Fixnum, nil] wrap if wrap is a number, wraps text to +wrap+
10
- # columns, otherwise no wrapping is done.
11
- def initialize(buffer)
12
- @buffer = buffer
13
- end
14
-
15
- # Overrides serialize behaviour to write data to standard output
16
- def serialize(object, data)
17
- @buffer << data
18
- end
19
- end
20
- end
21
- end
22
-
23
3
  describe YARD::Templates::Engine.template(:api, :fulldoc) do
24
4
  before do
25
5
  Registry.clear
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'json'
2
+ require 'pry'
3
+
1
4
  # This file was generated by the `rspec --init` command. Conventionally, all
2
5
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
6
  # The generated `.rspec` file contains `--require spec_helper` which will cause this
@@ -15,7 +18,6 @@
15
18
  #
16
19
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
20
  RSpec.configure do |config|
18
-
19
21
  require File.join(File.dirname(__FILE__), '..', 'lib', 'yard-api')
20
22
 
21
23
  # rspec-expectations config goes here. You can use an alternate
@@ -123,3 +125,26 @@ RSpec.configure do |config|
123
125
  YARD.parse_string str if str
124
126
  end
125
127
  end
128
+
129
+
130
+ module YARD
131
+ module Serializers
132
+ # A serializer that writes data to standard output.
133
+ class SpecSerializer < Base
134
+ attr_writer :basepath
135
+
136
+ # Creates a serializer to print text to stdout
137
+ #
138
+ # @param [Fixnum, nil] wrap if wrap is a number, wraps text to +wrap+
139
+ # columns, otherwise no wrapping is done.
140
+ def initialize(buffer)
141
+ @buffer = buffer
142
+ end
143
+
144
+ # Overrides serialize behaviour to write data to standard output
145
+ def serialize(object, data)
146
+ @buffer << data
147
+ end
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe YARD::Templates::Engine.template(:api, :fulldoc) do
4
+ before(:each) do
5
+ YARD::Registry.clear
6
+ end
7
+
8
+ after(:each) do
9
+ YARD::Registry.clear
10
+ end
11
+
12
+ before(:each) do
13
+ populate <<-'eof'
14
+ # @API Quizzes
15
+ # @internal
16
+ class QuizzesController < ApplicationController
17
+ end
18
+ eof
19
+ end
20
+
21
+ let(:serializer) { YARD::Serializers::SpecSerializer.new([]) }
22
+ let(:verifier) { YARD::APIPlugin::Verifier.new }
23
+
24
+ it 'should hide entities marked with @internal' do
25
+ entities = YARD::Registry.all
26
+
27
+ YARD::Templates::Engine.render({
28
+ objects: entities,
29
+ type: :fulldoc,
30
+ template: :api,
31
+ format: :json,
32
+ serializer: serializer
33
+ })
34
+
35
+ expect(entities.size).to be > 0
36
+ expect(verifier.run(entities).size).to be == 0
37
+ end
38
+
39
+ context 'when the "include_internal" option is turned on...' do
40
+ before(:each) do
41
+ set_option(:include_internal, true)
42
+ end
43
+
44
+ it 'should not hide entities marked with @internal' do
45
+ populate <<-'eof'
46
+ # @API Quizzes
47
+ # @internal
48
+ class QuizzesController < ApplicationController
49
+ end
50
+ eof
51
+
52
+ entities = YARD::Registry.all
53
+
54
+ YARD::Templates::Engine.render({
55
+ objects: entities,
56
+ type: :fulldoc,
57
+ template: :api,
58
+ format: :json,
59
+ serializer: serializer
60
+ })
61
+
62
+ expect(entities.size).to be > 0
63
+ expect(verifier.run(entities).size).to eq(entities.size)
64
+ end
65
+ end
66
+ end
@@ -7,7 +7,7 @@ include YARD::Templates::Helpers::FilterHelper
7
7
  def init
8
8
  logger.info "YARD-API: starting."
9
9
 
10
- options.serializer = YARD::APIPlugin::Serializer.new
10
+ options.serializer ||= YARD::APIPlugin::Serializer.new
11
11
  options.serializer.basepath = api_options.output
12
12
 
13
13
  options[:resources] = options.objects.
@@ -129,15 +129,9 @@ def get_route(object)
129
129
  route = routes.first
130
130
 
131
131
  if route.present?
132
- verb = if route.verb.source =~ /\^?(\w*)\$/
133
- $1.upcase
134
- else
135
- route.verb.source
136
- end
137
-
138
132
  {
139
- path: route.path.spec.to_s.gsub("(.:format)", ""),
140
- verb: verb
133
+ path: RouteHelper.get_route_path(route),
134
+ verb: RouteHelper.get_route_verb(route)
141
135
  }
142
136
  end
143
137
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yard-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmad Amireh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-23 00:00:00.000000000 Z
11
+ date: 2019-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -82,6 +82,7 @@ files:
82
82
  - spec/helpers/html_helper_spec.rb
83
83
  - spec/spec_helper.rb
84
84
  - spec/tags/argument_spec.rb
85
+ - spec/tags/internal_spec.rb
85
86
  - tasks/yard_api.rake
86
87
  - templates/api/appendix/html/setup.rb
87
88
  - templates/api/appendix/json/setup.rb
@@ -206,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
207
  version: '0'
207
208
  requirements: []
208
209
  rubyforge_project:
209
- rubygems_version: 2.7.6
210
+ rubygems_version: 2.7.6.2
210
211
  signing_key:
211
212
  specification_version: 4
212
213
  summary: A YARD plugin for documenting APIs in Rails projects.