nexmo_markdown_renderer 0.2.2 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/config/locales/en.yml +1 -0
  3. data/lib/nexmo_markdown_renderer.rb +24 -1
  4. data/lib/nexmo_markdown_renderer/filters/block_escape_filter.rb +3 -3
  5. data/lib/nexmo_markdown_renderer/filters/code_filter.rb +17 -17
  6. data/lib/nexmo_markdown_renderer/filters/code_snippet/binding.rb +41 -0
  7. data/lib/nexmo_markdown_renderer/filters/code_snippet/create_application.rb +61 -0
  8. data/lib/nexmo_markdown_renderer/filters/code_snippet/import_dependencies.rb +38 -0
  9. data/lib/nexmo_markdown_renderer/filters/code_snippet/initialize_dependencies.rb +41 -0
  10. data/lib/nexmo_markdown_renderer/filters/code_snippet/install_dependencies.rb +39 -0
  11. data/lib/nexmo_markdown_renderer/filters/code_snippet/instructions.rb +46 -0
  12. data/lib/nexmo_markdown_renderer/filters/code_snippet/renderable.rb +62 -0
  13. data/lib/nexmo_markdown_renderer/filters/code_snippet/run.rb +29 -0
  14. data/lib/nexmo_markdown_renderer/filters/code_snippet_filter.rb +22 -159
  15. data/lib/nexmo_markdown_renderer/filters/code_snippets_filter.rb +2 -1
  16. data/lib/nexmo_markdown_renderer/filters/concerns/prism_code_snippet.rb +22 -0
  17. data/lib/nexmo_markdown_renderer/filters/markdown_filter.rb +13 -10
  18. data/lib/nexmo_markdown_renderer/filters/partial_filter.rb +1 -1
  19. data/lib/nexmo_markdown_renderer/filters/screenshot_filter.rb +1 -1
  20. data/lib/nexmo_markdown_renderer/filters/tab_filter.rb +73 -70
  21. data/lib/nexmo_markdown_renderer/filters/utils.rb +50 -0
  22. data/lib/nexmo_markdown_renderer/models/code_language.rb +7 -3
  23. data/lib/nexmo_markdown_renderer/models/tutorial.rb +116 -72
  24. data/lib/nexmo_markdown_renderer/models/tutorial/file_loader.rb +32 -0
  25. data/lib/nexmo_markdown_renderer/models/tutorial/metadata.rb +57 -0
  26. data/lib/nexmo_markdown_renderer/models/tutorial/prerequisite.rb +35 -0
  27. data/lib/nexmo_markdown_renderer/models/tutorial/task.rb +49 -0
  28. data/lib/nexmo_markdown_renderer/models/use_case.rb +2 -15
  29. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/android.rb +1 -1
  30. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/curl.rb +1 -1
  31. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/dotnet.rb +1 -1
  32. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/java.rb +4 -3
  33. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/javascript.rb +1 -1
  34. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/kotlin.rb +1 -1
  35. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/objective_c.rb +1 -1
  36. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/php.rb +1 -1
  37. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/python.rb +1 -1
  38. data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/ruby.rb +1 -1
  39. data/lib/nexmo_markdown_renderer/services/doc_finder.rb +7 -2
  40. data/lib/nexmo_markdown_renderer/views/code_snippets/_application_rtc.html.erb +1 -1
  41. data/lib/nexmo_markdown_renderer/views/code_snippets/_application_voice.html.erb +1 -1
  42. data/lib/nexmo_markdown_renderer/views/code_snippets/_configure_client.html.erb +2 -2
  43. data/lib/nexmo_markdown_renderer/views/code_snippets/_import_dependencies.html.erb +18 -0
  44. data/lib/version.rb +1 -1
  45. metadata +18 -3
@@ -20,23 +20,12 @@ module Nexmo
20
20
 
21
21
  def subtitle
22
22
  normalized_products = products.map do |product|
23
- normalise_product_title(product)
23
+ Product.normalize_title(product)
24
24
  end
25
25
 
26
26
  normalized_products.sort.to_sentence
27
27
  end
28
28
 
29
- def normalise_product_title(product)
30
- return 'SMS' if product == 'messaging/sms'
31
- return 'Voice' if product == 'voice/voice-api'
32
- return 'Number Insight' if product == 'number-insight'
33
- return 'Messages' if product == 'messages'
34
- return 'Dispatch' if product == 'dispatch'
35
- return 'Client SDK' if product == 'client-sdk'
36
- return 'Subaccounts' if product == 'account/subaccounts'
37
- product.camelcase
38
- end
39
-
40
29
  def self.by_product(product, use_cases = [])
41
30
  use_cases = all if use_cases.empty?
42
31
  use_cases.select do |use_case|
@@ -63,7 +52,7 @@ module Nexmo
63
52
  document = File.read(document_path)
64
53
  frontmatter = YAML.safe_load(document)
65
54
 
66
- Nexmo::Markdown::UseCase.new({
55
+ new({
67
56
  title: frontmatter['title'],
68
57
  description: frontmatter['description'],
69
58
  external_link: frontmatter['external_link'],
@@ -75,8 +64,6 @@ module Nexmo
75
64
  end
76
65
  end
77
66
 
78
- private
79
-
80
67
  private_class_method def self.files
81
68
  Dir.glob("#{origin}/**/*.md")
82
69
  end
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Android < Base
5
- def self.dependencies(_deps)
5
+ def self.dependencies(_deps, _version)
6
6
  {
7
7
  'text' => 'See <a href="https://developer.nexmo.com/use-cases/client-sdk-android-add-sdk-to-your-app">How to Add the Nexmo Client SDK to your Android App</a>',
8
8
  }
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Curl < Base
5
- def self.dependencies(deps)
5
+ def self.dependencies(deps, _version)
6
6
  dependencies = deps.map(&:upcase)
7
7
  raise t('.only_permitted_dependency') unless dependencies.include?('JWT')
8
8
  {
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Dotnet < Base
5
- def self.dependencies(deps)
5
+ def self.dependencies(deps, _version)
6
6
  { 'code' => "Install-Package #{deps.join(' ')}" }
7
7
  end
8
8
 
@@ -2,16 +2,17 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Java < Base
5
- def self.dependencies(deps)
5
+ def self.dependencies(deps, version)
6
+ raise "'version' not provided for Java snippet" unless version
6
7
  {
7
8
  'text' => ::I18n.t('services.code_snippet_renderer.add_instructions_to_file', file: 'build.gradle'),
8
- 'code' => deps.map { |d| "compile '#{d.gsub('@latest', '5.2.1')}'" }.join('<br />'),
9
+ 'code' => deps.map { |d| "compile '#{d.gsub('@latest', version)}'" }.join('<br />'),
9
10
  'type' => 'groovy',
10
11
  }
11
12
  end
12
13
 
13
14
  def self.run_command(_command, filename, file_path)
14
- package = file_path.gsub('.repos/nexmo/nexmo-java-code-snippets/src/main/java/', '').tr('/', '.').gsub(filename, '')
15
+ package = file_path.gsub('.repos/vonage/vonage-java-code-snippets/src/main/java/', '').tr('/', '.').gsub(filename, '')
15
16
  file = filename.gsub('.java', '')
16
17
  main = "#{package}#{filename.gsub('.java', '')}"
17
18
  chomped_package = package.chomp('.')
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Javascript < Base
5
- def self.dependencies(deps)
5
+ def self.dependencies(deps, _version)
6
6
  { 'code' => "npm install #{deps.join(' ')}" }
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Kotlin < Base
5
- def self.dependencies(_deps)
5
+ def self.dependencies(deps, _version)
6
6
  {
7
7
  'text' => 'See <a href="https://developer.nexmo.com/use-cases/client-sdk-android-add-sdk-to-your-app">How to Add the Nexmo Client SDK to your Android App</a>',
8
8
  }
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class ObjectiveC < Base
5
- def self.dependencies(_deps)
5
+ def self.dependencies(_deps, _version)
6
6
  {
7
7
  'text' => 'See <a href="/client-sdk/setup/add-sdk-to-your-app/ios">How to Add the Nexmo Client SDK to your iOS App</a>',
8
8
  }
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Php < Base
5
- def self.dependencies(deps)
5
+ def self.dependencies(deps, _version)
6
6
  { 'code' => "composer require #{deps.join(' ')}" }
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Python < Base
5
- def self.dependencies(deps)
5
+ def self.dependencies(deps, _version)
6
6
  { 'code' => "pip install #{deps.join(' ')}" }
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ module Nexmo
2
2
  module Markdown
3
3
  module CodeSnippetRenderer
4
4
  class Ruby < Base
5
- def self.dependencies(deps)
5
+ def self.dependencies(deps, _version)
6
6
  { 'code' => "gem install #{deps.join(' ')}" }
7
7
  end
8
8
 
@@ -91,9 +91,9 @@ module Nexmo
91
91
 
92
92
  def self.load_english
93
93
  paths.each do |path|
94
- if path.starts_with?('app/views')
94
+ if defined?(Rails) && path.starts_with?("#{Rails.root}/app/views")
95
95
  Dir["#{path}/**/*.*"].each do |file|
96
- dictionary[file][::I18n.default_locale.to_s] = ::I18n.default_locale.to_s
96
+ dictionary[file.gsub("#{Rails.root}/", '')][::I18n.default_locale.to_s] = ::I18n.default_locale.to_s
97
97
  end
98
98
  else
99
99
  path_with_locale = "#{path}/#{::I18n.default_locale}"
@@ -120,6 +120,11 @@ module Nexmo
120
120
  def self.strip_root_and_language(root:, language:, document:)
121
121
  document.sub(%r{#{root}\/}, '').sub(%r{#{language}\/}, '')
122
122
  end
123
+
124
+ def self.code_languages_for_tutorial(path:)
125
+ key = strip_root_and_language(root: '/', document: path, language: ::I18n.default_locale)
126
+ dictionary.keys.select { |k| k.include?(key) }
127
+ end
123
128
  end
124
129
  end
125
130
  end
@@ -15,7 +15,7 @@
15
15
  <p><%= ::I18n.t('.code_snippets.nexmo_needs_to_connect_html') %></p>
16
16
  <% end %>
17
17
 
18
- <pre class="Vlt-prism--dark dependencies command-line Vlt-prism--copy-disabled language-bash" data-prompt='$'><code>nexmo app:create "<%=app['name'] %>" <%=app['answer_url'] %> <%=app['event_url'] %> --keyfile=private.key --type=rtc</code></pre>
18
+ <pre class="Vlt-prism--dark dependencies command-line Vlt-prism--copy-disabled language-bash" data-prompt='$'><code>nexmo app:create "<%= name %>" <%= answer_url %> <%= event_url %> --keyfile=private.key --type=rtc</code></pre>
19
19
 
20
20
  <h4><%= ::I18n.t('.code_snippets.application_rtc.use_your_existing_app') %></h4>
21
21
 
@@ -18,7 +18,7 @@
18
18
  <p><%= ::I18n.t('.code_snippets.nexmo_needs_to_connect_html') %></p>
19
19
  <% end %>
20
20
 
21
- <pre class="Vlt-prism--dark dependencies command-line Vlt-prism--copy-disabled language-bash" data-prompt='$'><code>nexmo app:create "<%=app['name'] %>" <%=app['answer_url'] %> <%=app['event_url'] %> --keyfile private.key</code></pre>
21
+ <pre class="Vlt-prism--dark dependencies command-line Vlt-prism--copy-disabled language-bash" data-prompt='$'><code>nexmo app:create "<%= name %>" <%= answer_url %> <%= event_url %> --keyfile private.key</code></pre>
22
22
  <% end %>
23
23
  </div>
24
24
  </div>
@@ -7,13 +7,13 @@
7
7
  <%= create_instructions %>
8
8
  <div class="copy-wrapper">
9
9
 
10
- <div class="copy-button" data-lang="<%= lang %>" data-block="<%= config['source'] %>" data-section="configure">
10
+ <div class="copy-button" data-lang="<%= lang %>" data-block="<%= source %>" data-section="configure">
11
11
  <%= octicon "clippy", :class => 'top left' %> <span>Copy to Clipboard</span>
12
12
  </div>
13
13
  <pre class="Vlt-prism--dark language-<%= lexer.tag %> Vlt-prism--copy-disabled"><code><%= highlighted_client_source %></code></pre>
14
14
  </div>
15
15
 
16
- <p><a data-section="configure" data-lang="<%= lang %>" data-block="<%= config['source'] %>" href="<%= client_url %>">View full source</a></p>
16
+ <p><a data-section="configure" data-lang="<%= lang %>" data-block="<%= source %>" href="<%= client_url %>">View full source</a></p>
17
17
 
18
18
  </div>
19
19
  </div>
@@ -0,0 +1,18 @@
1
+ <div class="Vlt-box Vlt-box--lesspadding Nxd-accordion-emphasis">
2
+ <h5 class="Vlt-js-accordion__trigger Vlt-accordion__trigger" data-accordion="acc<%= id %>" tabindex="0">
3
+ <%= ::I18n.t('.code_snippets.configure_client.import_dependencies') %>
4
+ </h5>
5
+
6
+ <div id="acc<%=id %>" class="Vlt-js-accordion__content Vlt-accordion__content Vlt-accordion__content--noborder">
7
+ <%= create_instructions %>
8
+ <div class="copy-wrapper">
9
+
10
+ <div class="copy-button" data-lang="<%= lang %>" data-block="<%= config['source'] %>" data-section="configure">
11
+ <%= octicon "clippy", :class => 'top left' %> <span>Copy to Clipboard</span>
12
+ </div>
13
+ <pre class="Vlt-prism--dark language-<%= lexer.tag %> Vlt-prism--copy-disabled"><code><%= highlighted_import_source %></code></pre>
14
+ </div>
15
+
16
+ <p><a data-section="configure" data-lang="<%= lang %>" data-block="<%= config['source'] %>" href="<%= client_url %>">View full source</a></p>
17
+ </div>
18
+ </div>
@@ -1,7 +1,7 @@
1
1
  # :nocov:
2
2
  module Nexmo
3
3
  module Markdown
4
- VERSION = '0.2.2'
4
+ VERSION = '0.4.2'
5
5
  end
6
6
  end
7
7
  # :nocov:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexmo_markdown_renderer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nexmo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
11
+ date: 2020-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: banzai
@@ -240,12 +240,21 @@ files:
240
240
  - lib/nexmo_markdown_renderer/filters/block_escape_filter.rb
241
241
  - lib/nexmo_markdown_renderer/filters/break_filter.rb
242
242
  - lib/nexmo_markdown_renderer/filters/code_filter.rb
243
+ - lib/nexmo_markdown_renderer/filters/code_snippet/binding.rb
244
+ - lib/nexmo_markdown_renderer/filters/code_snippet/create_application.rb
245
+ - lib/nexmo_markdown_renderer/filters/code_snippet/import_dependencies.rb
246
+ - lib/nexmo_markdown_renderer/filters/code_snippet/initialize_dependencies.rb
247
+ - lib/nexmo_markdown_renderer/filters/code_snippet/install_dependencies.rb
248
+ - lib/nexmo_markdown_renderer/filters/code_snippet/instructions.rb
249
+ - lib/nexmo_markdown_renderer/filters/code_snippet/renderable.rb
250
+ - lib/nexmo_markdown_renderer/filters/code_snippet/run.rb
243
251
  - lib/nexmo_markdown_renderer/filters/code_snippet_filter.rb
244
252
  - lib/nexmo_markdown_renderer/filters/code_snippet_list_filter.rb
245
253
  - lib/nexmo_markdown_renderer/filters/code_snippets_filter.rb
246
254
  - lib/nexmo_markdown_renderer/filters/collapsible_filter.rb
247
255
  - lib/nexmo_markdown_renderer/filters/columns_filter.rb
248
256
  - lib/nexmo_markdown_renderer/filters/concept_list_filter.rb
257
+ - lib/nexmo_markdown_renderer/filters/concerns/prism_code_snippet.rb
249
258
  - lib/nexmo_markdown_renderer/filters/dynamic_content_filter.rb
250
259
  - lib/nexmo_markdown_renderer/filters/external_link_filter.rb
251
260
  - lib/nexmo_markdown_renderer/filters/frontmatter_filter.rb
@@ -270,6 +279,7 @@ files:
270
279
  - lib/nexmo_markdown_renderer/filters/tooltip_filter.rb
271
280
  - lib/nexmo_markdown_renderer/filters/unfreeze_filter.rb
272
281
  - lib/nexmo_markdown_renderer/filters/use_case_list_filter.rb
282
+ - lib/nexmo_markdown_renderer/filters/utils.rb
273
283
  - lib/nexmo_markdown_renderer/initializers/doc_finder.rb
274
284
  - lib/nexmo_markdown_renderer/initializers/i18n.rb
275
285
  - lib/nexmo_markdown_renderer/initializers/redcarpet.rb
@@ -278,6 +288,10 @@ files:
278
288
  - lib/nexmo_markdown_renderer/models/code_snippet.rb
279
289
  - lib/nexmo_markdown_renderer/models/concept.rb
280
290
  - lib/nexmo_markdown_renderer/models/tutorial.rb
291
+ - lib/nexmo_markdown_renderer/models/tutorial/file_loader.rb
292
+ - lib/nexmo_markdown_renderer/models/tutorial/metadata.rb
293
+ - lib/nexmo_markdown_renderer/models/tutorial/prerequisite.rb
294
+ - lib/nexmo_markdown_renderer/models/tutorial/task.rb
281
295
  - lib/nexmo_markdown_renderer/models/use_case.rb
282
296
  - lib/nexmo_markdown_renderer/services/code_snippet_renderer/android.rb
283
297
  - lib/nexmo_markdown_renderer/services/code_snippet_renderer/base.rb
@@ -299,6 +313,7 @@ files:
299
313
  - lib/nexmo_markdown_renderer/views/code_snippets/_code_only.html.erb
300
314
  - lib/nexmo_markdown_renderer/views/code_snippets/_configure_client.html.erb
301
315
  - lib/nexmo_markdown_renderer/views/code_snippets/_dependencies.html.erb
316
+ - lib/nexmo_markdown_renderer/views/code_snippets/_import_dependencies.html.erb
302
317
  - lib/nexmo_markdown_renderer/views/code_snippets/_write_code.html.erb
303
318
  - lib/nexmo_markdown_renderer/views/code_snippets/list/plain.html.erb
304
319
  - lib/nexmo_markdown_renderer/views/concepts/list/plain.html.erb
@@ -329,7 +344,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
329
344
  - !ruby/object:Gem::Version
330
345
  version: '0'
331
346
  requirements: []
332
- rubygems_version: 3.0.3
347
+ rubygems_version: 3.0.1
333
348
  signing_key:
334
349
  specification_version: 4
335
350
  summary: Middleware to render Markdown Documents in Nexmo Developer Platform.