Sha256: d9f30b00e37431ab06e0ca2fadcbabae656e102958a90cae22c254bb43012332
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true module Grape class Router # this could be an OpenStruct, but doesn't work in Ruby 2.3.0, see https://bugs.ruby-lang.org/issues/12251 class AttributeTranslator attr_reader :attributes, :request_method, :requirements ROUTE_ATTRIBUTES = %i[ prefix version settings format description http_codes headers entity details requirements request_method namespace ].freeze ROUTER_ATTRIBUTES = %i[pattern index].freeze def initialize(**attributes) @attributes = attributes end (ROUTER_ATTRIBUTES + ROUTE_ATTRIBUTES).each do |attr| define_method attr do attributes[attr] end end def to_h attributes end def method_missing(method_name, *args) if setter?(method_name[-1]) attributes[method_name[0..-1]] = *args else attributes[method_name] end end def respond_to_missing?(method_name, _include_private = false) if setter?(method_name[-1]) true else @attributes.key?(method_name) end end private def setter?(method_name) method_name[-1] == '=' end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
grape-1.5.0 | lib/grape/router/attribute_translator.rb |