Class: Nexmo::Markdown::UseCase

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
lib/nexmo_markdown_renderer/models/use_case.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



5
6
7
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5

def description
  @description
end

#document_pathObject

Returns the value of attribute document_path.



5
6
7
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5

def document_path
  @document_path
end

Returns the value of attribute external_link.



5
6
7
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5

def external_link
  @external_link
end

#languagesObject

Returns the value of attribute languages.



5
6
7
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5

def languages
  @languages
end

#productsObject

Returns the value of attribute products.



5
6
7
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5

def products
  @products
end

#rootObject

Returns the value of attribute root.



5
6
7
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5

def root
  @root
end

#titleObject

Returns the value of attribute title.



5
6
7
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5

def title
  @title
end

Class Method Details

.allObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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 = []) ⇒ Object



36
37
38
39
40
41
42
43
# 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 = []) ⇒ Object



29
30
31
32
33
34
# 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

.originObject



45
46
47
# 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

Instance Method Details

#bodyObject



7
8
9
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 7

def body
  File.read(document_path)
end

#pathObject



15
16
17
18
19
# 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_pathObject



11
12
13
# 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

#subtitleObject



21
22
23
24
25
26
27
# 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