Class: Camille::Schema

Inherits:
Object
  • Object
show all
Defined in:
lib/camille/schema.rb

Defined Under Namespace

Classes: AlreadyDefinedError

Class Method Summary collapse

Class Method Details

.define_endpoint(verb, name, &block) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/camille/schema.rb', line 32

def self.define_endpoint verb, name, &block
  if endpoints[name]
    raise AlreadyDefinedError.new("Endpoint `#{name}` has already been defined.")
  end
  endpoint = Camille::Endpoint.new self, verb, name
  endpoint.instance_exec &block

  endpoints[name] = endpoint
end

.delete(name, &block) ⇒ Object



58
59
60
# File 'lib/camille/schema.rb', line 58

def self.delete name, &block
  define_endpoint :delete, name, &block
end

.endpointsObject



5
6
7
# File 'lib/camille/schema.rb', line 5

def self.endpoints
  @endpoints ||= {}
end

.get(name, &block) ⇒ Object



42
43
44
# File 'lib/camille/schema.rb', line 42

def self.get name, &block
  define_endpoint :get, name, &block
end

.inherited(klass) ⇒ Object



27
28
29
# File 'lib/camille/schema.rb', line 27

def self.inherited klass
  Camille::Loader.loaded_schemas << klass
end

.klass_nameObject



13
14
15
# File 'lib/camille/schema.rb', line 13

def self.klass_name
  self.name.gsub(/^Camille::Schemas::/, '')
end

.literal_linesObject



17
18
19
20
21
22
23
24
25
# File 'lib/camille/schema.rb', line 17

def self.literal_lines
  [
    Camille::Line.new('{'),
    *endpoints.sort_by{|k, e| k}.map do |k, e|
      Camille::Line.new("#{e.function},")
    end.map(&:do_indent),
    Camille::Line.new('}')
  ]
end

.patch(name, &block) ⇒ Object



54
55
56
# File 'lib/camille/schema.rb', line 54

def self.patch name, &block
  define_endpoint :patch, name, &block
end

.pathObject



9
10
11
# File 'lib/camille/schema.rb', line 9

def self.path
  "/#{ActiveSupport::Inflector.underscore klass_name}"
end

.post(name, &block) ⇒ Object



46
47
48
# File 'lib/camille/schema.rb', line 46

def self.post name, &block
  define_endpoint :post, name, &block
end

.put(name, &block) ⇒ Object



50
51
52
# File 'lib/camille/schema.rb', line 50

def self.put name, &block
  define_endpoint :put, name, &block
end