Sha256: 5910333c80f0fe29246d6686bab37e1693bc10c141427ad47053167aad799d00

Contents?: true

Size: 1.15 KB

Versions: 15

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Nexmo
  module OAS
    module Renderer
      module Presenters
        class Groups
          def initialize(definition)
            @definition = definition
          end

          def groups
            tags = @definition.raw['tags']
            # For now we only use the first tag in the list as an equivalent for the old x-group functionality
            @groups = @definition.endpoints.group_by do |endpoint|
              next nil unless tags

              endpoint.raw['tags']&.first
            end

            # We want to use the order in which the tags are defined in the definition, so iterate over the tags
            # and store the index against the tag name. We'll use this later for sorting
            ordering = {}
            tags&.each_with_index do |tag, index|
              ordering[tag['name'].capitalize] = index
            end

            # Sort by the order in which they're defined in the definition
            @groups = @groups.sort_by do |name, _|
              next -1 if name.nil?

              ordering[name.capitalize] || 999
            end
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
nexmo-oas-renderer-2.7.2 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.7.1 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.7.0 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.6.0 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.5.0 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.4.1 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.4.0 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.3.0 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.2.0 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.1.3 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.1.2 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.1.1 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.1.0 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.0.1 lib/nexmo/oas/renderer/presenters/groups.rb
nexmo-oas-renderer-2.0.0 lib/nexmo/oas/renderer/presenters/groups.rb