Class: AppMap::Swagger::Stable
- Inherits:
-
Object
- Object
- AppMap::Swagger::Stable
- Defined in:
- lib/appmap/swagger/stable.rb
Overview
Transform raw Swagger into a “stable” variant. For example, remove descriptions and parameter examples, whose variance does not substantially affect the API.
Instance Method Summary collapse
-
#initialize(swagger_yaml) ⇒ Stable
constructor
A new instance of Stable.
- #perform ⇒ Object
Constructor Details
#initialize(swagger_yaml) ⇒ Stable
Returns a new instance of Stable.
9 10 11 |
# File 'lib/appmap/swagger/stable.rb', line 9 def initialize(swagger_yaml) @swagger_yaml = swagger_yaml end |
Instance Method Details
#perform ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/appmap/swagger/stable.rb', line 13 def perform clean_only = nil clean = lambda do |obj, properties = %w[description example]| return obj.each(&clean_only.(properties)) if obj.is_a?(Array) return unless obj.is_a?(Hash) properties.each { |property| obj.delete property } obj.each do |key, value| # Don't clean 'description' from within 'properties' props = key == 'properties' ? %w[example] : properties clean_only.(props).(value) end obj end clean_only = lambda do |properties| lambda do |example| clean.(example, properties) end end clean.(@swagger_yaml.deep_dup) end |