class Head

Attributes

config[R]
frontmatter[R]

Public Class Methods

new(frontmatter = nil) click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 21
def initialize(frontmatter = nil)
  @frontmatter = frontmatter

  after_initialize!
  validate_files_presence!
end

Public Instance Methods

apple_touch_icon() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 70
def apple_touch_icon
  'meta/apple-touch-icon.png'
end
application_name() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 46
def application_name
  @application_name ||= config['application-name']
end
description() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 38
def description
  @description ||= Description.new(config: config, frontmatter: frontmatter).description
end
favicon() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 50
def favicon
  'meta/favicon.ico'
end
favicon_32_squared() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 54
def favicon_32_squared
  'meta/favicon-32x32.png'
end
google_site_verification() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 42
def google_site_verification
  @google_site_verification ||= config['google-site-verification']
end
manifest() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 58
def manifest
  'meta/manifest.json'
end
mstile_144_squared() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 66
def mstile_144_squared
  'meta/mstile-144x144.png'
end
og_image() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 74
def og_image
  @og_image ||= "meta/#{config['og-image']}"
end
og_image_height() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 82
def og_image_height
  @og_image_height ||= config['og-image-height']
end
og_image_width() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 78
def og_image_width
  @og_image_width ||= config['og-image-width']
end
safari_pinned_tab() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 62
def safari_pinned_tab
  'meta/safari-pinned-tab.svg'
end
title() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 28
def title
  @title ||= title_from_frontmatter || config.fetch('title') do
    raise "You must provide a 'title' parameter in header_meta.yml"
  end
end
title_from_frontmatter() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 34
def title_from_frontmatter
  @frontmatter && (@frontmatter['meta_title'] || @frontmatter['title'])
end

Private Instance Methods

after_initialize!() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 88
def after_initialize!
  config_path = "#{Rails.configuration.docs_base_path}/config/header_meta.yml"
  raise 'You must provide a config/header_meta.yml file in your documentation path.' unless File.exist?(config_path)

  @config = YAML.safe_load(File.open(config_path))
end
validate_files_presence!() click to toggle source
# File lib/nexmo_developer/app/presenters/head.rb, line 95
def validate_files_presence!
  %i[favicon favicon_32_squared manifest safari_pinned_tab mstile_144_squared apple_touch_icon og_image].each do |file|
    raise "You must provide a #{send(file).sub('meta/', '')} file inside the public/meta directory" unless File.exist?("#{Rails.configuration.docs_base_path}/public/#{send(file)}")
  end
end