Class: Primer::Deprecations
- Inherits:
-
Object
- Object
- Primer::Deprecations
- Defined in:
- lib/primer/deprecations.rb
Overview
:nodoc:
Class Method Summary collapse
- .correctable?(component_name) ⇒ Boolean
- .deprecated?(component_name) ⇒ Boolean
- .deprecated_components ⇒ Object
- .deprecation_message(component_name) ⇒ Object
- .guide(component_name) ⇒ Object
- .guide?(component_name) ⇒ Boolean
- .register(file_path) ⇒ Object
- .register_deprecation(component, options) ⇒ Object
- .replacement(component_name) ⇒ Object
- .replacement?(component_name) ⇒ Boolean
Class Method Details
.correctable?(component_name) ⇒ Boolean
48 49 50 51 52 53 |
# File 'lib/primer/deprecations.rb', line 48 def correctable?(component_name) dep = registered_deprecations[component_name] return false if dep.nil? dep[:autocorrect] end |
.deprecated?(component_name) ⇒ Boolean
32 33 34 35 |
# File 'lib/primer/deprecations.rb', line 32 def deprecated?(component_name) # if the component is registered, it is deprecated registered_deprecations.key?(component_name) end |
.deprecated_components ⇒ Object
28 29 30 |
# File 'lib/primer/deprecations.rb', line 28 def deprecated_components registered_deprecations.keys.sort end |
.deprecation_message(component_name) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/primer/deprecations.rb', line 66 def (component_name) return nil unless deprecated?(component_name) msg = ["'#{component_name}' has been deprecated."] # this nested structure is complex, because it has to # match all of the valid scenarios for a component being # replaceable, auto-correctable, and having a guide. for # more information on what is and is not valid, see the # documentation here: docs/contributors/deprecations.md if replacement?(component_name) msg << "Please update your code to use '#{replacement(component_name)}'." msg << "Use Rubocop's auto-correct, or replace it yourself." if correctable?(component_name) msg << "See #{guide(component_name)} for more information." if guide?(component_name) else # if there is no replacement, it must have a guide. this is enforced through tests msg << "Unfortunately, there is no direct replacement." msg << "See #{guide(component_name)} for more information and available options." end msg.join(" ") end |
.guide(component_name) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/primer/deprecations.rb', line 59 def guide(component_name) dep = registered_deprecations[component_name] return nil if dep.nil? dep[:guide] end |
.guide?(component_name) ⇒ Boolean
55 56 57 |
# File 'lib/primer/deprecations.rb', line 55 def guide?(component_name) !guide(component_name).nil? end |
.register(file_path) ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/primer/deprecations.rb', line 9 def register(file_path) data = YAML.load_file(file_path) data["deprecations"].each do |dep| register_deprecation(dep["component"], { autocorrect: dep["autocorrect"], guide: dep["guide"], replacement: dep["replacement"] }) end end |
.register_deprecation(component, options) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/primer/deprecations.rb', line 20 def register_deprecation(component, ) registered_deprecations[component] = { autocorrect: [:autocorrect], guide: [:guide], replacement: [:replacement] } end |
.replacement(component_name) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/primer/deprecations.rb', line 41 def replacement(component_name) dep = registered_deprecations[component_name] return nil if dep.nil? dep[:replacement] end |
.replacement?(component_name) ⇒ Boolean
37 38 39 |
# File 'lib/primer/deprecations.rb', line 37 def replacement?(component_name) !replacement(component_name).nil? end |