Module: ContentfulMiddleman::Helpers

Defined in:
lib/contentful_middleman/helpers.rb

Instance Method Summary collapse

Instance Method Details

#contentful_instancesObject



6
7
8
# File 'lib/contentful_middleman/helpers.rb', line 6

def contentful_instances
  ContentfulMiddleman.instances
end

#localize(entry, field, locale, fallback_locale = 'en-US') ⇒ Object



18
19
20
21
22
23
# File 'lib/contentful_middleman/helpers.rb', line 18

def localize(entry, field, locale, fallback_locale='en-US')
  value = entry.fetch(field)

  return localize_array(value, locale, fallback_locale) if value.is_a? ::Array
  localize_value(value, locale, fallback_locale)
end

#localize_array(value, locale, fallback_locale = 'en-US') ⇒ Object



25
26
27
28
29
# File 'lib/contentful_middleman/helpers.rb', line 25

def localize_array(value, locale, fallback_locale='en-US')
  value.map do |v|
    localize_value(v, locale, fallback_locale)
  end
end

#localize_entry(entry, locale, fallback_locale = 'en-US') ⇒ Object



10
11
12
13
14
15
16
# File 'lib/contentful_middleman/helpers.rb', line 10

def localize_entry(entry, locale, fallback_locale='en-US')
  localized_entry = ::Thor::CoreExt::HashWithIndifferentAccess.new
  entry.each do |field, value|
    localized_entry[field] = localize(entry, field, locale, fallback_locale)
  end
  localized_entry
end

#localize_value(value, locale, fallback_locale = 'en-US') ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/contentful_middleman/helpers.rb', line 31

def localize_value(value, locale, fallback_locale='en-US')
  value = value.fetch(locale) if value.respond_to?(:fetch) && value.respond_to?(:key?) && value.key?(locale)
  value = value.fetch(fallback_locale) if value.respond_to?(:fetch) && value.respond_to?(:key?) && value.key?(fallback_locale)

  return localize_array(value, locale, fallback_locale) if value.is_a? ::Array
  return localize_entry(value, locale, fallback_locale) if value.is_a? ::Hash
  value
end

#with_preview(space: '', access_token: '', tries: 3, expires_in: ContentfulMiddleman::Tools::PreviewProxy.hours(2), &block) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/contentful_middleman/helpers.rb', line 40

def with_preview(space: '', access_token: '', tries: 3, expires_in: ContentfulMiddleman::Tools::PreviewProxy.hours(2), &block)
  preview_client = ContentfulMiddleman::Tools::PreviewProxy.instance(
    space: space,
    access_token: access_token,
    tries: tries,
    expires_in: expires_in
  )

  block.call(preview_client)
end