Class: JsonapiCompliable::DSL

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi_compliable/dsl.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDSL

Returns a new instance of DSL.



10
11
12
13
14
15
16
17
# File 'lib/jsonapi_compliable/dsl.rb', line 10

def initialize
  @sideloads = {}
  @filters = {}
  @default_filters = {}
  @extra_fields = {}
  @sorting = nil
  @pagination = nil
end

Instance Attribute Details

#default_filtersObject

Returns the value of attribute default_filters.



3
4
5
# File 'lib/jsonapi_compliable/dsl.rb', line 3

def default_filters
  @default_filters
end

#extra_fieldsObject

Returns the value of attribute extra_fields.



3
4
5
# File 'lib/jsonapi_compliable/dsl.rb', line 3

def extra_fields
  @extra_fields
end

#filtersObject

Returns the value of attribute filters.



3
4
5
# File 'lib/jsonapi_compliable/dsl.rb', line 3

def filters
  @filters
end

#paginationObject

Returns the value of attribute pagination.



3
4
5
# File 'lib/jsonapi_compliable/dsl.rb', line 3

def pagination
  @pagination
end

#sideloadsObject

Returns the value of attribute sideloads.



3
4
5
# File 'lib/jsonapi_compliable/dsl.rb', line 3

def sideloads
  @sideloads
end

#sortingObject

Returns the value of attribute sorting.



3
4
5
# File 'lib/jsonapi_compliable/dsl.rb', line 3

def sorting
  @sorting
end

Instance Method Details

#allow_filter(name, *args, &blk) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/jsonapi_compliable/dsl.rb', line 28

def allow_filter(name, *args, &blk)
  opts = args.extract_options!
  aliases = [name, opts[:aliases]].flatten.compact
  @filters[name.to_sym] = {
    aliases: aliases,
    if: opts[:if],
    filter: blk
  }
end

#default_filter(name, &blk) ⇒ Object



38
39
40
41
42
# File 'lib/jsonapi_compliable/dsl.rb', line 38

def default_filter(name, &blk)
  @default_filters[name.to_sym] = {
    filter: blk
  }
end

#extra_field(field, &blk) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/jsonapi_compliable/dsl.rb', line 52

def extra_field(field, &blk)
  @extra_fields[field.keys.first] ||= []
  @extra_fields[field.keys.first] << {
    name: field.values.first,
    proc: blk
  }
end

#includes(whitelist: nil, &blk) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/jsonapi_compliable/dsl.rb', line 19

def includes(whitelist: nil, &blk)
  whitelist = JSONAPI::IncludeDirective.new(whitelist) if whitelist

  @sideloads = {
    whitelist: whitelist,
    custom_scope: blk
  }
end

#paginate(&blk) ⇒ Object



48
49
50
# File 'lib/jsonapi_compliable/dsl.rb', line 48

def paginate(&blk)
  @pagination = blk
end

#sort(&blk) ⇒ Object



44
45
46
# File 'lib/jsonapi_compliable/dsl.rb', line 44

def sort(&blk)
  @sorting = blk
end