nexmo_markdown_renderer 0.3.0 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|