Class: Nexmo::Markdown::UseCase
- Inherits:
-
Object
- Object
- Nexmo::Markdown::UseCase
- Includes:
- ActiveModel::Model
- Defined in:
- lib/nexmo_markdown_renderer/models/use_case.rb
Instance Attribute Summary collapse
-
#description ⇒ Object
Returns the value of attribute description.
-
#document_path ⇒ Object
Returns the value of attribute document_path.
-
#external_link ⇒ Object
Returns the value of attribute external_link.
-
#languages ⇒ Object
Returns the value of attribute languages.
-
#products ⇒ Object
Returns the value of attribute products.
-
#root ⇒ Object
Returns the value of attribute root.
-
#title ⇒ Object
Returns the value of attribute title.
Class Method Summary collapse
- .all ⇒ Object
- .by_language(language, use_cases = []) ⇒ Object
- .by_product(product, use_cases = []) ⇒ Object
- .origin ⇒ Object
Instance Method Summary collapse
Instance Attribute Details
#description ⇒ Object
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_path ⇒ Object
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 |
#external_link ⇒ Object
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 |
#languages ⇒ Object
Returns the value of attribute languages.
5 6 7 |
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5 def languages @languages end |
#products ⇒ Object
Returns the value of attribute products.
5 6 7 |
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5 def products @products end |
#root ⇒ Object
Returns the value of attribute root.
5 6 7 |
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 5 def root @root end |
#title ⇒ Object
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
.all ⇒ Object
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 |
.origin ⇒ Object
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
#body ⇒ Object
7 8 9 |
# File 'lib/nexmo_markdown_renderer/models/use_case.rb', line 7 def body File.read(document_path) end |
#path ⇒ Object
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_path ⇒ Object
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 |
#subtitle ⇒ Object
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 |