Module: Contentful::Support
- Defined in:
- lib/contentful/support.rb
Overview
Utility methods used by the contentful gem
Class Method Summary collapse
-
.includes_from_response(json, raw = true) ⇒ Array
Returns combined include array from an API Response.
-
.link?(value) ⇒ true, false
Checks if value is a link.
-
.link_array?(value) ⇒ true, false
Checks if value is an array of links.
-
.resource_for_link(link, includes) ⇒ Hash
Returns the resource that matches the link.
-
.snakify(object) ⇒ String
Transforms CamelCase into snake_case (taken from zucker).
Class Method Details
.includes_from_response(json, raw = true) ⇒ Array
Returns combined include array from an API Response
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/contentful/support.rb', line 59 def includes_from_response(json, raw = true) includes = if raw json['items'].dup else json['items'].map(&:raw) end %w(Entry Asset).each do |type| if json.fetch('includes', {}).key?(type) includes.concat(json['includes'].fetch(type, [])) end end includes end |
.link?(value) ⇒ true, false
Checks if value is a link
24 25 26 27 |
# File 'lib/contentful/support.rb', line 24 def link?(value) value.is_a?(::Hash) && value.fetch('sys', {}).fetch('type', '') == 'Link' end |
.link_array?(value) ⇒ true, false
Checks if value is an array of links
34 35 36 37 38 |
# File 'lib/contentful/support.rb', line 34 def link_array?(value) return link?(value[0]) if value.is_a?(::Array) && !value.empty? false end |
.resource_for_link(link, includes) ⇒ Hash
Returns the resource that matches the link
46 47 48 49 50 51 |
# File 'lib/contentful/support.rb', line 46 def resource_for_link(link, includes) includes.detect do |i| i['sys']['id'] == link['sys']['id'] && i['sys']['type'] == link['sys']['linkType'] end end |
.snakify(object) ⇒ String
Transforms CamelCase into snake_case (taken from zucker)
10 11 12 13 14 15 16 17 |
# File 'lib/contentful/support.rb', line 10 def snakify(object) String(object) .gsub(/::/, '/') .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr('-', '_') .downcase end |