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
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
|