api_helper 0.0.6 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c9251a106ef4147f1bdeafd3c63c6bb772bcefe
4
- data.tar.gz: 3f4b4a7493bfe73371c3d9f0879263b367d8b14d
3
+ metadata.gz: c365d5a68f094eb8d390ae7b126f47ea8bc48c70
4
+ data.tar.gz: a450ec9db2270080b79d61a7d1d50af88be9ff10
5
5
  SHA512:
6
- metadata.gz: 994a9811ac0a139ceff2cc1c80af5e2503d41fb30d39ad2c9b3d32a1f1e37759133ee422dc1ce8e40e6c027c2fc82c68b877bbc2ec4b9a2f39813841075eed48
7
- data.tar.gz: 1eac3f4b577c4107ca7031d060f4390509d544f8a51ee13c27c5d2a2fbc2799ebef267bbd8582f853d770709a14b8773f971d5164bd6a4a16739ef7e480428d7
6
+ metadata.gz: 04ea4c190caf03cb2eba99fb542d59ce56052d1b77cb0f5335428f617a097181530e4a0ec5207d777b114b12b8ccea7ebf5ab173cd055b68c88a4b1c54f93a70
7
+ data.tar.gz: 7e0bb35d2464dc17ca87d4e81857e8310d33146c917a94f8df0b05808ef2423e7f80f00f3b3793e0558ea22197821e6646aa32b5ea68246e8a50e97a505d2f08
data/api_helper.gemspec CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "appraisal"
24
24
  spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency "simplecov"
26
+ spec.add_development_dependency "coveralls"
25
27
  spec.add_development_dependency "byebug"
26
28
  spec.add_development_dependency "activerecord"
27
29
  spec.add_development_dependency "sqlite3"
@@ -0,0 +1,29 @@
1
+ this = locals[:self_resource]
2
+
3
+ unless inclusion_field(this).blank?
4
+ inclusion_field(this).each_pair do |field_name, includable_field|
5
+ # use this if fieldset is used
6
+ # next if fieldset(this).present? && !fieldset(this).include?(field_name)
7
+
8
+ # include that child
9
+ if inclusion[this].include?(field_name)
10
+
11
+ child field_name.to_sym, root: field_name.to_sym, object_root: false do
12
+ template = (includable_field[:resource_name] || field_name).to_s.underscore.singularize
13
+ extends template
14
+ end
15
+
16
+ # not to include that child
17
+ else
18
+
19
+ node field_name do |obj|
20
+ if obj.try(includable_field[:id_field]).present?
21
+ obj.try(includable_field[:id_field])
22
+ else
23
+ foreign_key = obj.class.try("#{field_name}_foreign_key")
24
+ obj.try(foreign_key) if foreign_key.present?
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -269,9 +269,14 @@ module APIHelper::Includable
269
269
  def set_inclusion(resource, default_includes: [], permitted_includes: [])
270
270
  @inclusion ||= ActiveSupport::HashWithIndifferentAccess.new
271
271
  @inclusion_field ||= ActiveSupport::HashWithIndifferentAccess.new
272
+ @inclusion_specified ||= ActiveSupport::HashWithIndifferentAccess.new
272
273
  @inclusion[resource] = default_includes.map(&:to_s) if @inclusion[resource].blank? &&
273
274
  !@inclusion_specified[resource]
274
275
  @inclusion[resource] &= permitted_includes.map(&:to_s) if permitted_includes.present?
276
+
277
+ if @fieldset.is_a?(Hash) && @fieldset[resource].present?
278
+ @inclusion[resource] &= @fieldset[resource]
279
+ end
275
280
  end
276
281
 
277
282
  # View Helper to set the inclusion details
@@ -309,6 +314,24 @@ module APIHelper::Includable
309
314
  }
310
315
  end
311
316
 
317
+ # Getter for the data of includable fields
318
+ #
319
+ # Params:
320
+ #
321
+ # +resource+::
322
+ # +Symbol+ the resource name of inclusion data to retrieve
323
+ #
324
+ def inclusion_field(resource = nil)
325
+ # act as a traditional getter if no parameters specified
326
+ if resource.blank?
327
+ @inclusion_field ||= ActiveSupport::HashWithIndifferentAccess.new
328
+
329
+ # returns the inclusion array if an specific resource is passed in
330
+ else
331
+ inclusion_field[resource] || {}
332
+ end
333
+ end
334
+
312
335
  # Returns the description of the 'include' URL parameter
313
336
  def self.include_param_desc(example: nil, default: nil)
314
337
  if default.present?
@@ -326,7 +349,7 @@ module APIHelper::Includable
326
349
 
327
350
  included do
328
351
  if defined? helper_method
329
- helper_method :inclusion, :set_inclusion, :set_inclusion_field
352
+ helper_method :inclusion, :set_inclusion, :set_inclusion_field, :inclusion_field
330
353
  end
331
354
  end
332
355
  end
@@ -62,7 +62,7 @@ require 'active_support'
62
62
  # Then use the helper methods like this:
63
63
  #
64
64
  # # this example uses kaminari
65
- # User.page(page).per(per_page)
65
+ # User.page(pagination_per_page).per(pagination_page)
66
66
  #
67
67
  # HTTP Link header will be automatically set by the way.
68
68
  module APIHelper::Paginatable
@@ -1,3 +1,3 @@
1
1
  module APIHelper
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-14 00:00:00.000000000 Z
11
+ date: 2015-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: coveralls
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: byebug
71
99
  requirement: !ruby/object:Gem::Requirement