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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe9250e32774af04ea28ec4dc345d674abe07e513b41e99ca99747101988d035
|
4
|
+
data.tar.gz: 062731fbb4162919f74a193f413454691347543b86f8b52283864a0ddc7d9b6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f880c2e23c71f0e64fc5520567224a1ed19e3ba6c075985d0e0c587ceb44c56b1ee06fdb4d62e27fb9f305b24f550f1ac2c9d83705a0feb27b474cc9ebdf7dc
|
7
|
+
data.tar.gz: e87719a922f7ad01a9896a26eaffbb05c8d693392f6f153a4a34b954d3249afc8274e0499ba4f5c677533e5cc2866148abbe92a5d95007b34bf3fe7faf0adbd0
|
data/config/code_languages.yml
CHANGED
@@ -109,6 +109,15 @@ languages:
|
|
109
109
|
icon: ios
|
110
110
|
dependencies: []
|
111
111
|
|
112
|
+
go:
|
113
|
+
weight: 12
|
114
|
+
label: Go
|
115
|
+
lexer: go
|
116
|
+
icon: curl
|
117
|
+
dependencies:
|
118
|
+
- 'vonage/vonage-go-sdk'
|
119
|
+
run_command: 'go run {filename}'
|
120
|
+
|
112
121
|
platforms:
|
113
122
|
ios:
|
114
123
|
languages:
|
data/config/locales/en.yml
CHANGED
@@ -129,6 +129,7 @@ en:
|
|
129
129
|
write_the_code: Write the code
|
130
130
|
configure_client:
|
131
131
|
initialize_dependencies: Initialize your dependencies
|
132
|
+
import_dependencies: Import dependencies
|
132
133
|
application_messages_dispatch:
|
133
134
|
no_application_html: If you do not have an application you can <a href="/messages/code-snippets/create-an-application">create one</a>. Make sure you also <a href="/messages/code-snippets/configure-webhooks">configure your webhooks</a>.
|
134
135
|
application_rtc:
|
@@ -24,6 +24,7 @@ require_relative 'nexmo_markdown_renderer/services/code_snippet_renderer/php'
|
|
24
24
|
require_relative 'nexmo_markdown_renderer/services/code_snippet_renderer/python'
|
25
25
|
require_relative 'nexmo_markdown_renderer/services/code_snippet_renderer/ruby'
|
26
26
|
require_relative 'nexmo_markdown_renderer/services/code_snippet_renderer/swift'
|
27
|
+
require_relative 'nexmo_markdown_renderer/services/code_snippet_renderer/go'
|
27
28
|
|
28
29
|
require_relative 'nexmo_markdown_renderer/services/doc_finder'
|
29
30
|
require_relative 'nexmo_markdown_renderer/services/doc_finder/doc'
|
@@ -38,6 +39,16 @@ require_relative 'nexmo_markdown_renderer/models/tutorial/prerequisite'
|
|
38
39
|
require_relative 'nexmo_markdown_renderer/models/tutorial/task'
|
39
40
|
require_relative 'nexmo_markdown_renderer/models/use_case'
|
40
41
|
|
42
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/binding'
|
43
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/renderable'
|
44
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/create_application'
|
45
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/initialize_dependencies'
|
46
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/instructions'
|
47
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/import_dependencies'
|
48
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/install_dependencies'
|
49
|
+
require_relative 'nexmo_markdown_renderer/filters/code_snippet/run'
|
50
|
+
|
51
|
+
Dir[File.join(__dir__, 'nexmo_markdown_renderer/filters/concerns', '*.rb')].each { |file| require_relative file }
|
41
52
|
Dir[File.join(__dir__, 'nexmo_markdown_renderer/filters', '*.rb')].each { |file| require_relative file }
|
42
53
|
Dir[File.join(__dir__, 'nexmo_markdown_renderer/filters/i18n', '*.rb')].each { |file| require_relative file }
|
43
54
|
require_relative 'nexmo_markdown_renderer/markdown_renderer'
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Nexmo
|
2
2
|
module Markdown
|
3
3
|
class BlockEscapeFilter < Banzai::Filter
|
4
|
+
include Nexmo::Markdown::Concerns::PrismCodeSnippet
|
5
|
+
|
4
6
|
def call(input)
|
5
7
|
# Freeze to prevent Markdown formatting
|
6
8
|
input.gsub(/````\n(.+?)````/m) do |_s|
|
@@ -8,9 +10,7 @@ module Nexmo
|
|
8
10
|
formatter = Rouge::Formatters::HTML.new
|
9
11
|
highlighted_source = formatter.format(lexer.lex($1))
|
10
12
|
|
11
|
-
output =
|
12
|
-
<pre class="Vlt-prism--dark language-#{lexer.tag} Vlt-prism--copy-disabled"><code>#{highlighted_source}</code></pre>
|
13
|
-
HEREDOC
|
13
|
+
output = code_snippet_body(lexer, highlighted_source)
|
14
14
|
|
15
15
|
"FREEZESTART#{Base64.urlsafe_encode64(output)}FREEZEEND"
|
16
16
|
end
|
@@ -1,43 +1,43 @@
|
|
1
1
|
module Nexmo
|
2
2
|
module Markdown
|
3
3
|
class CodeFilter < Banzai::Filter
|
4
|
+
include Nexmo::Markdown::Concerns::PrismCodeSnippet
|
5
|
+
|
4
6
|
def call(input)
|
5
7
|
input.gsub(/(?!.*snippet)```code(.+?)```/m) do |_s|
|
6
8
|
config = YAML.safe_load($1)
|
7
|
-
|
9
|
+
|
8
10
|
if config['config']
|
9
11
|
configs = YAML.load_file("#{Nexmo::Markdown::Config.docs_base_path}/config/code_examples.yml")
|
10
12
|
config = config['config'].split('.').inject(configs) { |h, k| h[k] }
|
11
13
|
end
|
12
|
-
|
14
|
+
|
13
15
|
code = File.read("#{Nexmo::Markdown::Config.docs_base_path}/#{config['source']}")
|
14
16
|
language = File.extname("#{Nexmo::Markdown::Config.docs_base_path}/#{config['source']}")[1..-1]
|
15
17
|
lexer = language_to_lexer(language)
|
16
|
-
|
18
|
+
|
17
19
|
total_lines = code.lines.count
|
18
|
-
|
20
|
+
|
19
21
|
# Minus one since lines are not zero-indexed
|
20
22
|
from_line = (config['from_line'] || 1) - 1
|
21
23
|
to_line = (config['to_line'] || total_lines) - 1
|
22
|
-
|
24
|
+
|
23
25
|
code = code.lines[from_line..to_line].join
|
24
26
|
code.unindent! if config['unindent']
|
25
|
-
|
27
|
+
|
26
28
|
highlighted_source = highlight(code, lexer)
|
27
|
-
|
28
|
-
|
29
|
-
<pre class="Vlt-prism--dark language-#{lexer.tag} Vlt-prism--copy-disabled"><code>#{highlighted_source}</code></pre>
|
30
|
-
HEREDOC
|
29
|
+
|
30
|
+
code_snippet_body(lexer, highlighted_source)
|
31
31
|
end
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
private
|
35
|
-
|
35
|
+
|
36
36
|
def highlight(source, lexer)
|
37
37
|
formatter = Rouge::Formatters::HTML.new
|
38
38
|
formatter.format(lexer.lex(source))
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def language_to_lexer_name(language)
|
42
42
|
if language_configuration[language]
|
43
43
|
language_configuration[language]['lexer']
|
@@ -45,18 +45,18 @@ module Nexmo
|
|
45
45
|
language
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
def language_to_lexer(language)
|
50
50
|
language = language_to_lexer_name(language)
|
51
51
|
return Rouge::Lexers::PHP.new({ start_inline: true }) if language == 'php'
|
52
|
-
|
52
|
+
|
53
53
|
Rouge::Lexer.find(language.downcase) || Rouge::Lexer.find('text')
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
def language_configuration
|
57
57
|
@language_configuration ||= YAML.load_file("#{GEM_ROOT}/config/code_languages.yml")
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
end
|
62
62
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
module Filters
|
4
|
+
module CodeSnippet
|
5
|
+
class Binding
|
6
|
+
def initialize(config)
|
7
|
+
@config = config
|
8
|
+
end
|
9
|
+
|
10
|
+
def language
|
11
|
+
@language ||= @config['language']
|
12
|
+
end
|
13
|
+
|
14
|
+
def lexer
|
15
|
+
@lexer ||= Nexmo::Markdown::CodeLanguage.find(language).lexer
|
16
|
+
end
|
17
|
+
|
18
|
+
def lang
|
19
|
+
@lang ||= @config['title'].delete('.')
|
20
|
+
end
|
21
|
+
|
22
|
+
def unindent
|
23
|
+
@unindent ||= @config['unindent']
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_name
|
27
|
+
@file_name ||= @config['file_name']
|
28
|
+
end
|
29
|
+
|
30
|
+
def source
|
31
|
+
@source ||= @config['source']
|
32
|
+
end
|
33
|
+
|
34
|
+
def import_dependencies?
|
35
|
+
@config['import_dependencies']
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
module Filters
|
4
|
+
module CodeSnippet
|
5
|
+
class CreateApplication
|
6
|
+
include Renderable
|
7
|
+
|
8
|
+
NGROK_URL = 'http://demo.ngrok.io'.freeze
|
9
|
+
EXAMPLE_URL = 'https://example.com'.freeze
|
10
|
+
|
11
|
+
attr_reader :app
|
12
|
+
|
13
|
+
def initialize(app)
|
14
|
+
@app = app
|
15
|
+
end
|
16
|
+
|
17
|
+
def base_url
|
18
|
+
@base_url ||= @app['disable_ngrok'] && EXAMPLE_URL || NGROK_URL
|
19
|
+
end
|
20
|
+
|
21
|
+
def name
|
22
|
+
@name ||= @app['name'] || 'ExampleProject'
|
23
|
+
end
|
24
|
+
|
25
|
+
def type
|
26
|
+
# We should remove this default once we're sure that all Code Snippets
|
27
|
+
# have a type set e.g audit
|
28
|
+
@type ||= @app.fetch('type', 'voice')
|
29
|
+
end
|
30
|
+
|
31
|
+
def event_url
|
32
|
+
@event_url ||= @app.fetch('event_url', "#{base_url}/webhooks/events")
|
33
|
+
end
|
34
|
+
|
35
|
+
def answer_url
|
36
|
+
@answer_url ||= @app.fetch('answer_url', "#{base_url}/webhooks/answer")
|
37
|
+
end
|
38
|
+
|
39
|
+
def partial
|
40
|
+
@partial ||= begin
|
41
|
+
case type
|
42
|
+
when 'voice', 'rtc'
|
43
|
+
File.read("#{GEM_ROOT}/lib/nexmo_markdown_renderer/views/code_snippets/_application_#{type}.html.erb")
|
44
|
+
when 'messages', 'dispatch'
|
45
|
+
File.read("#{GEM_ROOT}/lib/nexmo_markdown_renderer/views/code_snippets/_application_messages_dispatch.html.erb")
|
46
|
+
else
|
47
|
+
raise "Invalid application type when creating code snippet: '#{type}'"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def render
|
53
|
+
return '' unless @app
|
54
|
+
|
55
|
+
ERB.new(partial).result(binding)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
module Filters
|
4
|
+
module CodeSnippet
|
5
|
+
class ImportDependencies
|
6
|
+
include OcticonsHelper
|
7
|
+
include Renderable
|
8
|
+
|
9
|
+
attr_reader :config
|
10
|
+
|
11
|
+
def initialize(config, snippet)
|
12
|
+
@config = config
|
13
|
+
@snippet = snippet
|
14
|
+
end
|
15
|
+
|
16
|
+
def partial
|
17
|
+
@partial ||= File.read("#{GEM_ROOT}/lib/nexmo_markdown_renderer/views/code_snippets/_import_dependencies.html.erb")
|
18
|
+
end
|
19
|
+
|
20
|
+
def highlighted_import_source
|
21
|
+
@highlighted_import_source ||= ::Nexmo::Markdown::Utils.generate_code_block(
|
22
|
+
language,
|
23
|
+
@config,
|
24
|
+
unindent
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def render
|
29
|
+
return '' unless @config
|
30
|
+
|
31
|
+
create_instructions = renderer.create_instructions(file_name).render_markdown
|
32
|
+
ERB.new(partial).result(binding)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
module Filters
|
4
|
+
module CodeSnippet
|
5
|
+
class InitializeDependencies
|
6
|
+
include OcticonsHelper
|
7
|
+
include Renderable
|
8
|
+
|
9
|
+
def initialize(config, snippet)
|
10
|
+
@config = config
|
11
|
+
@snippet = snippet
|
12
|
+
end
|
13
|
+
|
14
|
+
def partial
|
15
|
+
@partial ||= File.read("#{GEM_ROOT}/lib/nexmo_markdown_renderer/views/code_snippets/_configure_client.html.erb")
|
16
|
+
end
|
17
|
+
|
18
|
+
def highlighted_client_source
|
19
|
+
@highlighted_client_source ||= ::Nexmo::Markdown::Utils.generate_code_block(
|
20
|
+
language,
|
21
|
+
@config,
|
22
|
+
unindent
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def render
|
27
|
+
return '' unless @config
|
28
|
+
|
29
|
+
create_instructions = if import_dependencies?
|
30
|
+
renderer.add_instructions(file_name).render_markdown
|
31
|
+
else
|
32
|
+
renderer.create_instructions(file_name).render_markdown
|
33
|
+
end
|
34
|
+
|
35
|
+
ERB.new(partial).result(binding)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
module Filters
|
4
|
+
module CodeSnippet
|
5
|
+
class InstallDependencies
|
6
|
+
include Renderable
|
7
|
+
|
8
|
+
def initialize(config, version, snippet)
|
9
|
+
@config = config
|
10
|
+
@snippet = snippet
|
11
|
+
@version = version
|
12
|
+
end
|
13
|
+
|
14
|
+
def partial
|
15
|
+
@partial ||= File.read("#{GEM_ROOT}/lib/nexmo_markdown_renderer/views/code_snippets/_dependencies.html.erb")
|
16
|
+
end
|
17
|
+
|
18
|
+
def title
|
19
|
+
@title ||= begin
|
20
|
+
# The only valid dependency for curl examples is `JWT`
|
21
|
+
if @config.map(&:upcase).include?('JWT')
|
22
|
+
::I18n.t('filters.generate_your_jwt')
|
23
|
+
else
|
24
|
+
::I18n.t('filters.install_dependencies')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def render
|
30
|
+
return '' unless @config
|
31
|
+
|
32
|
+
deps = renderer.dependencies(@config, @version)
|
33
|
+
ERB.new(partial).result(binding)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Nexmo
|
2
|
+
module Markdown
|
3
|
+
module Filters
|
4
|
+
module CodeSnippet
|
5
|
+
class Instructions
|
6
|
+
include OcticonsHelper
|
7
|
+
include Renderable
|
8
|
+
|
9
|
+
attr_reader :config
|
10
|
+
|
11
|
+
def initialize(config, snippet)
|
12
|
+
@config = config
|
13
|
+
@snippet = snippet
|
14
|
+
end
|
15
|
+
|
16
|
+
def partial
|
17
|
+
@partial ||= begin
|
18
|
+
if @config['code_only']
|
19
|
+
File.read("#{GEM_ROOT}/lib/nexmo_markdown_renderer/views/code_snippets/_code_only.html.erb")
|
20
|
+
else
|
21
|
+
File.read("#{GEM_ROOT}/lib/nexmo_markdown_renderer/views/code_snippets/_write_code.html.erb")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def highlighted_code_source
|
27
|
+
@highlighted_code_source ||= ::Nexmo::Markdown::Utils.generate_code_block(
|
28
|
+
language,
|
29
|
+
@config['code'],
|
30
|
+
unindent
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
def source_url
|
35
|
+
@source_url ||= ::Nexmo::Markdown::Utils.generate_source_url(@config['code'])
|
36
|
+
end
|
37
|
+
|
38
|
+
def render
|
39
|
+
add_instructions = renderer.add_instructions(file_name).render_markdown
|
40
|
+
ERB.new(partial).result(binding)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
module Nexmo
|
4
|
+
module Markdown
|
5
|
+
module Filters
|
6
|
+
module CodeSnippet
|
7
|
+
module Renderable
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
def_delegators :@snippet, :language, :lang, :renderer, :lexer, :unindent, :file_name, :source, :import_dependencies?
|
11
|
+
|
12
|
+
def id
|
13
|
+
@id ||= SecureRandom.hex
|
14
|
+
end
|
15
|
+
|
16
|
+
def client_url
|
17
|
+
@client_url ||= ::Nexmo::Markdown::Utils.generate_source_url(@config)
|
18
|
+
end
|
19
|
+
|
20
|
+
def renderer
|
21
|
+
case normalized_language
|
22
|
+
when 'curl'
|
23
|
+
Nexmo::Markdown::CodeSnippetRenderer::Curl
|
24
|
+
when 'node'
|
25
|
+
Nexmo::Markdown::CodeSnippetRenderer::Javascript
|
26
|
+
when 'javascript'
|
27
|
+
Nexmo::Markdown::CodeSnippetRenderer::Javascript
|
28
|
+
when 'java'
|
29
|
+
Nexmo::Markdown::CodeSnippetRenderer::Java
|
30
|
+
when 'dotnet'
|
31
|
+
Nexmo::Markdown::CodeSnippetRenderer::Dotnet
|
32
|
+
when 'python'
|
33
|
+
Nexmo::Markdown::CodeSnippetRenderer::Python
|
34
|
+
when 'ruby'
|
35
|
+
Nexmo::Markdown::CodeSnippetRenderer::Ruby
|
36
|
+
when 'php'
|
37
|
+
Nexmo::Markdown::CodeSnippetRenderer::Php
|
38
|
+
when 'android'
|
39
|
+
Nexmo::Markdown::CodeSnippetRenderer::Android
|
40
|
+
when 'kotlin'
|
41
|
+
Nexmo::Markdown::CodeSnippetRenderer::Kotlin
|
42
|
+
when 'objective_c'
|
43
|
+
Nexmo::Markdown::CodeSnippetRenderer::ObjectiveC
|
44
|
+
when 'swift'
|
45
|
+
Nexmo::Markdown::CodeSnippetRenderer::Swift
|
46
|
+
when 'go'
|
47
|
+
Nexmo::Markdown::CodeSnippetRenderer::Go
|
48
|
+
else
|
49
|
+
raise "Unknown language: #{normalized_language}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def normalized_language
|
54
|
+
if language == 'csharp'
|
55
|
+
'dotnet'
|
56
|
+
else
|
57
|
+
language
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|