nexmo_markdown_renderer 0.3.0 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/config/code_languages.yml +9 -0
- data/config/locales/en.yml +1 -0
- data/lib/nexmo_markdown_renderer.rb +11 -0
- data/lib/nexmo_markdown_renderer/filters/block_escape_filter.rb +3 -3
- data/lib/nexmo_markdown_renderer/filters/code_filter.rb +17 -17
- data/lib/nexmo_markdown_renderer/filters/code_snippet/binding.rb +41 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet/create_application.rb +61 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet/import_dependencies.rb +38 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet/initialize_dependencies.rb +41 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet/install_dependencies.rb +39 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet/instructions.rb +46 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet/renderable.rb +64 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet/run.rb +29 -0
- data/lib/nexmo_markdown_renderer/filters/code_snippet_filter.rb +22 -159
- data/lib/nexmo_markdown_renderer/filters/code_snippets_filter.rb +2 -1
- data/lib/nexmo_markdown_renderer/filters/concerns/prism_code_snippet.rb +22 -0
- data/lib/nexmo_markdown_renderer/filters/markdown_filter.rb +13 -10
- data/lib/nexmo_markdown_renderer/filters/partial_filter.rb +1 -1
- data/lib/nexmo_markdown_renderer/filters/screenshot_filter.rb +1 -1
- data/lib/nexmo_markdown_renderer/filters/tab_filter.rb +73 -70
- data/lib/nexmo_markdown_renderer/filters/utils.rb +50 -0
- data/lib/nexmo_markdown_renderer/models/code_language.rb +7 -3
- data/lib/nexmo_markdown_renderer/models/tutorial.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/android.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/curl.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/dotnet.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/go.rb +23 -0
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/java.rb +4 -3
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/javascript.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/kotlin.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/objective_c.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/php.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/python.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/code_snippet_renderer/ruby.rb +1 -1
- data/lib/nexmo_markdown_renderer/services/doc_finder.rb +2 -2
- data/lib/nexmo_markdown_renderer/views/code_snippets/_application_rtc.html.erb +1 -1
- data/lib/nexmo_markdown_renderer/views/code_snippets/_application_voice.html.erb +1 -1
- data/lib/nexmo_markdown_renderer/views/code_snippets/_configure_client.html.erb +2 -2
- data/lib/nexmo_markdown_renderer/views/code_snippets/_import_dependencies.html.erb +18 -0
- data/lib/version.rb +1 -1
- metadata +16 -3
@@ -0,0 +1,50 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
class Utils
|
4
|
+
def self.generate_source_url(code)
|
5
|
+
# Source example: .repos/vonage/vonage-java-code-snippets/ExampleClass.java
|
6
|
+
# Direct link on GitHub is in form https://github.com/vonage/vonage-java-code-snippets/blob/master/ExampleClass.java
|
7
|
+
start_section = 'https://github.com'
|
8
|
+
|
9
|
+
# Insert "blob/master" and strip ".repos"
|
10
|
+
repo_path = '\\0blob/master/'
|
11
|
+
file_section = code['source'].sub('.repos', '').sub(%r{(-quickstart|-code-snippets|-code-snippets)/}, repo_path)
|
12
|
+
|
13
|
+
# Line highlighting
|
14
|
+
line_section = ''
|
15
|
+
if code['from_line']
|
16
|
+
line_section += "#L#{code['from_line']}"
|
17
|
+
if code['to_line']
|
18
|
+
# If we've provided a to_line, use that
|
19
|
+
line_section += "-L#{code['to_line']}" if code['to_line']
|
20
|
+
else
|
21
|
+
# By default we read to the end of the file
|
22
|
+
line_section += "-L#{File.read("#{Nexmo::Markdown::Config.docs_base_path}/#{code['source']}").lines.count}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
start_section + file_section + line_section
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.generate_code_block(language, input, unindent)
|
30
|
+
return '' unless input
|
31
|
+
filename = "#{Nexmo::Markdown::Config.docs_base_path}/#{input['source']}"
|
32
|
+
raise "CodeSnippetFilter - Could not load #{filename} for language #{language}" unless File.exist?(filename)
|
33
|
+
|
34
|
+
code = File.read(filename)
|
35
|
+
lexer = Nexmo::Markdown::CodeLanguage.find(language).lexer
|
36
|
+
|
37
|
+
total_lines = code.lines.count
|
38
|
+
|
39
|
+
# Minus one since lines are not zero-indexed
|
40
|
+
from_line = (input['from_line'] || 1) - 1
|
41
|
+
to_line = (input['to_line'] || total_lines) - 1
|
42
|
+
|
43
|
+
code = code.lines[from_line..to_line].join
|
44
|
+
code.unindent! if unindent
|
45
|
+
formatter = Rouge::Formatters::HTML.new
|
46
|
+
formatter.format(lexer.lex(code))
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -3,8 +3,12 @@ module Nexmo
|
|
3
3
|
class CodeLanguage
|
4
4
|
include ActiveModel::Model
|
5
5
|
attr_accessor :key, :label, :type, :dependencies, :unindent, :icon, :run_command
|
6
|
-
attr_writer :weight, :linkable, :languages, :lexer
|
7
|
-
|
6
|
+
attr_writer :weight, :linkable, :languages, :lexer, :version
|
7
|
+
|
8
|
+
def version
|
9
|
+
@version || nil
|
10
|
+
end
|
11
|
+
|
8
12
|
def weight
|
9
13
|
@weight || 999
|
10
14
|
end
|
@@ -72,7 +76,7 @@ module Nexmo
|
|
72
76
|
end
|
73
77
|
|
74
78
|
private_class_method def self.config
|
75
|
-
@config ||= YAML.load_file(
|
79
|
+
@config ||= YAML.load_file("#{Nexmo::Markdown::Config.docs_base_path}/config/code_languages.yml")
|
76
80
|
end
|
77
81
|
end
|
78
82
|
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
|
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
module CodeSnippetRenderer
|
4
|
+
class Go < Base
|
5
|
+
def self.dependencies(deps, _version)
|
6
|
+
{ 'code' => "go get #{deps.join(' ')}" }
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.run_command(command, _filename, _file_path)
|
10
|
+
::I18n.t('services.code_snippet_renderer.run_command', command: command)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.create_instructions(filename)
|
14
|
+
::I18n.t('services.code_snippet_renderer.create_instructions', filename: filename)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.add_instructions(_filename)
|
18
|
+
::I18n.t('services.code_snippet_renderer.add_instructions_to_code')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -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',
|
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/
|
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 Kotlin < Base
|
5
|
-
def self.dependencies(
|
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
|
}
|
@@ -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?(
|
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}"
|
@@ -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 "<%=
|
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 "<%=
|
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="<%=
|
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="<%=
|
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>
|
data/lib/version.rb
CHANGED
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.3
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nexmo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-26 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
|
@@ -287,6 +297,7 @@ files:
|
|
287
297
|
- lib/nexmo_markdown_renderer/services/code_snippet_renderer/base.rb
|
288
298
|
- lib/nexmo_markdown_renderer/services/code_snippet_renderer/curl.rb
|
289
299
|
- lib/nexmo_markdown_renderer/services/code_snippet_renderer/dotnet.rb
|
300
|
+
- lib/nexmo_markdown_renderer/services/code_snippet_renderer/go.rb
|
290
301
|
- lib/nexmo_markdown_renderer/services/code_snippet_renderer/java.rb
|
291
302
|
- lib/nexmo_markdown_renderer/services/code_snippet_renderer/javascript.rb
|
292
303
|
- lib/nexmo_markdown_renderer/services/code_snippet_renderer/kotlin.rb
|
@@ -303,6 +314,7 @@ files:
|
|
303
314
|
- lib/nexmo_markdown_renderer/views/code_snippets/_code_only.html.erb
|
304
315
|
- lib/nexmo_markdown_renderer/views/code_snippets/_configure_client.html.erb
|
305
316
|
- lib/nexmo_markdown_renderer/views/code_snippets/_dependencies.html.erb
|
317
|
+
- lib/nexmo_markdown_renderer/views/code_snippets/_import_dependencies.html.erb
|
306
318
|
- lib/nexmo_markdown_renderer/views/code_snippets/_write_code.html.erb
|
307
319
|
- lib/nexmo_markdown_renderer/views/code_snippets/list/plain.html.erb
|
308
320
|
- lib/nexmo_markdown_renderer/views/concepts/list/plain.html.erb
|
@@ -333,7 +345,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
333
345
|
- !ruby/object:Gem::Version
|
334
346
|
version: '0'
|
335
347
|
requirements: []
|
336
|
-
|
348
|
+
rubyforge_project:
|
349
|
+
rubygems_version: 2.7.6.2
|
337
350
|
signing_key:
|
338
351
|
specification_version: 4
|
339
352
|
summary: Middleware to render Markdown Documents in Nexmo Developer Platform.
|