Class: Gitlab::Graphql::Deprecations::Deprecation
- Inherits:
-
Object
- Object
- Gitlab::Graphql::Deprecations::Deprecation
- Includes:
- ActiveModel::Validations
- Defined in:
- lib/gitlab/graphql/deprecations/deprecation.rb
Constant Summary collapse
- REASON_RENAMED =
:renamed
- REASON_ALPHA =
:alpha
- REASONS =
{ REASON_RENAMED => 'This was renamed.', REASON_ALPHA => 'This feature is an Experiment. It can be changed or removed at any time.' }.freeze
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql)
- #alpha? ⇒ Boolean
- #deprecation_reason ⇒ Object
- #edit_description(original_description) ⇒ Object
-
#initialize(reason: nil, milestone: nil, replacement: nil) ⇒ Deprecation
constructor
A new instance of Deprecation.
- #markdown(context: :inline) ⇒ Object
- #original_description ⇒ Object
- #replacement_markdown ⇒ Object
Constructor Details
#initialize(reason: nil, milestone: nil, replacement: nil) ⇒ Deprecation
Returns a new instance of Deprecation.
39 40 41 42 43 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 39 def initialize(reason: nil, milestone: nil, replacement: nil) @reason = reason.presence @milestone = milestone.presence @replacement = replacement.presence end |
Class Method Details
.parse(alpha: nil, deprecated: nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 25 def self.parse(alpha: nil, deprecated: nil) = alpha || deprecated return unless if alpha raise ArgumentError, '`alpha` and `deprecated` arguments cannot be passed at the same time' \ if deprecated [:reason] = :alpha end new(**) end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql
45 46 47 48 49 50 51 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 45 def ==(other) return false unless other.is_a?(self.class) [reason_text, milestone, replacement] == [:reason_text, :milestone, :replacement].map do |attr| other.send(attr) # rubocop: disable GitlabSecurity/PublicSend end end |
#alpha? ⇒ Boolean
98 99 100 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 98 def alpha? reason == REASON_ALPHA end |
#deprecation_reason ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 90 def deprecation_reason [ reason_text, replacement && "Please use `#{replacement}`.", "#{changed_in_milestone}." ].compact.join(' ') end |
#edit_description(original_description) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 76 def edit_description(original_description) @original_description = original_description return unless original_description original_description + description_suffix end |
#markdown(context: :inline) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 54 def markdown(context: :inline) parts = [ "#{changed_in_milestone(format: :markdown)}.", reason_text, replacement_markdown.then { |r| "Use: #{r}." if r } ].compact case context when :block ['WARNING:', *parts].join("\n") when :inline parts.join(' ') end end |
#original_description ⇒ Object
83 84 85 86 87 88 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 83 def original_description return unless @original_description return @original_description if @original_description.ends_with?('.') "#{@original_description}." end |
#replacement_markdown ⇒ Object
69 70 71 72 73 74 |
# File 'lib/gitlab/graphql/deprecations/deprecation.rb', line 69 def replacement_markdown return unless replacement.present? return "`#{replacement}`" unless replacement.include?('.') # only fully qualified references can be linked "[`#{replacement}`](##{replacement.downcase.tr('.', '')})" end |