Module: ContentfulMiddleman::Helpers

Included in:
Core
Defined in:
lib/contentful_middleman/helpers.rb

Instance Method Summary collapse

Instance Method Details

#contentful_instancesObject



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

def contentful_instances
  ContentfulMiddleman.instances
end

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



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

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



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

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



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

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



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

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

#rich_text(document_field, instance_index = 0) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/contentful_middleman/helpers.rb', line 52

def rich_text(document_field, instance_index = 0)
  mappings = begin
               app.extensions[:contentful]["instance_#{instance_index}"].options[:rich_text_mappings] || {}
             rescue Exception
               {}
             end

  RichTextRenderer::Renderer.new(mappings).render(document_field)
end

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



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

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