Class: JkoApi::Versioning

Inherits:
Object
  • Object
show all
Defined in:
lib/jko_api/versioning.rb

Instance Method Summary collapse

Constructor Details

#initialize(context, &block) ⇒ Versioning

Returns a new instance of Versioning.



3
4
5
6
# File 'lib/jko_api/versioning.rb', line 3

def initialize(context, &block)
  @context, @definitions = context, {}
  instance_eval &block
end

Instance Method Details

#max_version_numberObject



23
24
25
# File 'lib/jko_api/versioning.rb', line 23

def max_version_number
  @definitions.keys.max
end

#min_version_numberObject



19
20
21
# File 'lib/jko_api/versioning.rb', line 19

def min_version_number
  @definitions.keys.min
end

#version(number, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/jko_api/versioning.rb', line 8

def version(number, &block)
  @definitions[number] = block || Proc.new {}
  @context.scope module: "v#{number}", constraints: ->(*) {
    JkoApi.current_version_number == number
  } do
    number.downto(min_version_number) do |i|
      @context.instance_eval &@definitions[i]
    end
  end
end