class TutorialListItem

Attributes

path[R]
product[RW]

Public Class Methods

new(path) click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 5
def initialize(path)
  @path = path
end

Public Instance Methods

as_json() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 82
def as_json
  {
    root: root,
    path: path,
    filename: filename,
    external_link: external_link,
    first_step: first_step,
    languages: languages,
    title: title,
    description: description,
    products: products,
    subtitle: subtitle,
    is_file?: is_file?,
    is_task?: is_task?,
    product: product,
  }
end
available_languages() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 72
def available_languages
  languages.map do |language|
    OpenStruct.new(
      language: language,
      label: Nexmo::Markdown::CodeLanguage.find(language).label,
      url: external_link || "/#{products.join}/tutorials/#{filename}/#{first_step}/#{language}"
    )
  end
end
description() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 40
def description
  tutorial.metadata.description
end
filename() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 28
def filename
  File.basename(@path, '.yml')
end
first_step() click to toggle source

rubocop:enable Naming/PredicateName

# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 58
def first_step
  return if tutorial.metadata.external_link

  tutorial.first_step
end
is_file?() click to toggle source

rubocop:disable Naming/PredicateName

# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 49
def is_file?
  true
end
is_task?() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 53
def is_task?
  true
end
languages() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 20
def languages
  @languages ||= tutorial.available_code_languages.map(&:downcase)
end
product_url() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 64
def product_url
  "/#{I18n.locale}/#{products.join}/tutorials"
end
products() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 44
def products # rubocop:disable Rails/Delegate
  tutorial.products
end
root() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 24
def root
  "#{Rails.configuration.docs_base_path}/config/tutorials"
end
subtitle() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 13
def subtitle
  products
    .map { |product| Product.normalize_title(product) }
    .sort
    .to_sentence
end
title() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 36
def title
  tutorial.metadata.title
end
tutorial() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 9
def tutorial
  @tutorial ||= Tutorial.load(File.basename(@path, '.yml'), nil)
end
url() click to toggle source
# File lib/nexmo_developer/app/presenters/tutorial_list_item.rb, line 68
def url
  external_link || "/#{I18n.locale}/#{products.join}/tutorials/#{filename}/#{first_step}"
end