class Nexmo::Markdown::UseCase

Attributes

description[RW]
document_path[RW]
languages[RW]
products[RW]
root[RW]
title[RW]

Public Class Methods

all() click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 49
def self.all
  files.map do |document_path|
    document_path = Pathname.new(document_path)
    document = File.read(document_path)
    frontmatter = YAML.safe_load(document)

    new({
      title: frontmatter['title'],
      description: frontmatter['description'],
      external_link: frontmatter['external_link'],
      products: frontmatter['products'].split(',').map(&:strip),
      languages: frontmatter['languages'] || [],
      document_path: document_path,
      root: origin.to_s,
    })
  end
end
by_language(language, use_cases = []) click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 36
def self.by_language(language, use_cases = [])
  language = language.downcase
  use_cases = all if use_cases.empty?

  use_cases.select do |use_case|
    use_case.languages.map(&:downcase).include? language
  end
end
by_product(product, use_cases = []) click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 29
def self.by_product(product, use_cases = [])
  use_cases = all if use_cases.empty?
  use_cases.select do |use_case|
    use_case.products.include? product
  end
end
origin() click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 45
def self.origin
  Pathname.new("#{Nexmo::Markdown::Config.docs_base_path}/_use_cases")
end

Private Class Methods

files() click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 67
                     def self.files
  Dir.glob("#{origin}/#{::I18n.default_locale}/**/*.md")
end

Public Instance Methods

body() click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 7
def body
  File.read(document_path)
end
path() click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 15
def path
  return external_link if external_link

  "/use-cases/#{relative_path}"
end
relative_path() click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 11
def relative_path
  document_path.relative_path_from(self.class.origin).sub(/\w{2}\//, '').to_s.gsub('.md', '')
end
subtitle() click to toggle source
# File lib/nexmo_markdown_renderer/models/use_case.rb, line 21
def subtitle
  normalized_products = products.map do |product|
    Product.normalize_title(product)
  end

  normalized_products.sort.to_sentence
end