jekyll-potion 1.0.1

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.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +202 -0
  3. data/jekyll-potion.gemspec +17 -0
  4. data/lib/jekyll-potion/logger.rb +49 -0
  5. data/lib/jekyll-potion/models/favicon.rb +28 -0
  6. data/lib/jekyll-potion/models/page-potion.rb +86 -0
  7. data/lib/jekyll-potion/models/potion-page.rb +26 -0
  8. data/lib/jekyll-potion/models/potion-source-map-page.rb +15 -0
  9. data/lib/jekyll-potion/models/potion-static-file.rb +21 -0
  10. data/lib/jekyll-potion/potion.rb +136 -0
  11. data/lib/jekyll-potion/processor/base/jquery-3.6.0.min.js +2 -0
  12. data/lib/jekyll-potion/processor/base-template/code.js +40 -0
  13. data/lib/jekyll-potion/processor/base-template/navigation.js +43 -0
  14. data/lib/jekyll-potion/processor/base-template/tabs.js +38 -0
  15. data/lib/jekyll-potion/processor/header-template/header.js +31 -0
  16. data/lib/jekyll-potion/processor/make-base-javascript-processor.rb +59 -0
  17. data/lib/jekyll-potion/processor/make-date-processor.rb +30 -0
  18. data/lib/jekyll-potion/processor/make-empty-content-processor.rb +19 -0
  19. data/lib/jekyll-potion/processor/make-favicon-processor.rb +108 -0
  20. data/lib/jekyll-potion/processor/make-front-matter-processor.rb +21 -0
  21. data/lib/jekyll-potion/processor/make-header-link-processor.rb +103 -0
  22. data/lib/jekyll-potion/processor/make-navigation-processor.rb +55 -0
  23. data/lib/jekyll-potion/processor/make-og-tag-processor.rb +45 -0
  24. data/lib/jekyll-potion/processor/make-search-index-processor.rb +205 -0
  25. data/lib/jekyll-potion/processor/make-theme-processor.rb +197 -0
  26. data/lib/jekyll-potion/processor/make-title-processor.rb +53 -0
  27. data/lib/jekyll-potion/processor/rewrite-a-href-processor.rb +43 -0
  28. data/lib/jekyll-potion/processor/rewrite-img-processor.rb +42 -0
  29. data/lib/jekyll-potion/processor/search-template/search.js +123 -0
  30. data/lib/jekyll-potion/processor.rb +152 -0
  31. data/lib/jekyll-potion/site.rb +155 -0
  32. data/lib/jekyll-potion/tag.rb +176 -0
  33. data/lib/jekyll-potion/tags/alerts.rb +24 -0
  34. data/lib/jekyll-potion/tags/api.rb +105 -0
  35. data/lib/jekyll-potion/tags/code.rb +65 -0
  36. data/lib/jekyll-potion/tags/empty.rb +20 -0
  37. data/lib/jekyll-potion/tags/file.rb +22 -0
  38. data/lib/jekyll-potion/tags/link.rb +47 -0
  39. data/lib/jekyll-potion/tags/logo.rb +22 -0
  40. data/lib/jekyll-potion/tags/navigation.rb +35 -0
  41. data/lib/jekyll-potion/tags/pagination.rb +20 -0
  42. data/lib/jekyll-potion/tags/tabs.rb +62 -0
  43. data/lib/jekyll-potion/theme/proto/_includes/container.html +10 -0
  44. data/lib/jekyll-potion/theme/proto/_includes/head.html +4 -0
  45. data/lib/jekyll-potion/theme/proto/_includes/header.html +21 -0
  46. data/lib/jekyll-potion/theme/proto/_includes/image.html +5 -0
  47. data/lib/jekyll-potion/theme/proto/_includes/nav.html +3 -0
  48. data/lib/jekyll-potion/theme/proto/_includes/search.html +29 -0
  49. data/lib/jekyll-potion/theme/proto/_layouts/default.html +19 -0
  50. data/lib/jekyll-potion/theme/proto/_layouts/error.html +23 -0
  51. data/lib/jekyll-potion/theme/proto/_templates/alerts.liquid +4 -0
  52. data/lib/jekyll-potion/theme/proto/_templates/api.liquid +46 -0
  53. data/lib/jekyll-potion/theme/proto/_templates/api=description.liquid +3 -0
  54. data/lib/jekyll-potion/theme/proto/_templates/api=parameter.liquid +5 -0
  55. data/lib/jekyll-potion/theme/proto/_templates/api=response.liquid +7 -0
  56. data/lib/jekyll-potion/theme/proto/_templates/code.liquid +8 -0
  57. data/lib/jekyll-potion/theme/proto/_templates/empty.liquid +15 -0
  58. data/lib/jekyll-potion/theme/proto/_templates/file.liquid +8 -0
  59. data/lib/jekyll-potion/theme/proto/_templates/link.liquid +9 -0
  60. data/lib/jekyll-potion/theme/proto/_templates/logo.liquid +8 -0
  61. data/lib/jekyll-potion/theme/proto/_templates/navigation-page.liquid +14 -0
  62. data/lib/jekyll-potion/theme/proto/_templates/navigation.liquid +5 -0
  63. data/lib/jekyll-potion/theme/proto/_templates/pagination.liquid +30 -0
  64. data/lib/jekyll-potion/theme/proto/_templates/tabs.liquid +8 -0
  65. data/lib/jekyll-potion/theme/proto/_templates/tabs=content.liquid +5 -0
  66. data/lib/jekyll-potion/theme/proto/assets/css/main.scss +1254 -0
  67. data/lib/jekyll-potion/theme/proto/assets/css/syntax.css +80 -0
  68. data/lib/jekyll-potion/theme/proto/assets/js/jsrender.min.js +4 -0
  69. data/lib/jekyll-potion/theme/proto/assets/js/jsrender.min.js.map +1 -0
  70. data/lib/jekyll-potion/theme/proto/assets/js/main.js +237 -0
  71. data/lib/jekyll-potion/theme.rb +165 -0
  72. data/lib/jekyll-potion/util.rb +73 -0
  73. data/lib/jekyll-potion.rb +32 -0
  74. metadata +143 -0
@@ -0,0 +1,105 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class ApiTag < PotionBlock
6
+
7
+ QUERY_CATEGORY = "query"
8
+ BODY_CATEGORY = "body"
9
+
10
+ def initialize(tag_name, markup, options)
11
+ super
12
+
13
+ ensure_valid_attr("method", "path", "summary")
14
+ end
15
+
16
+ def blank?
17
+ false
18
+ end
19
+
20
+ def api_description(page_context)
21
+ output = []
22
+ @elements.select { |e| e.instance_of? ApiDescriptionTag }
23
+ .each { |e| output << e.render(page_context) }
24
+ output.join
25
+ end
26
+
27
+ def api_responses(page_context)
28
+ output = []
29
+ @elements.select { |e| e.instance_of? ApiResponseTag }
30
+ .each { |e| output << e.render(page_context) }
31
+ output.join
32
+ end
33
+
34
+ def render(page_context)
35
+ @params["description"] = api_description(page_context)
36
+
37
+ parameter_map = @elements.select { |e| e.instance_of? ApiParameterTag }
38
+ .group_by { |parameter| parameter.category }
39
+ .map { |category, parameters| [category, parameters.sort_by { |parameter| parameter.line_number }] }
40
+ .to_h
41
+
42
+ @params["query_parameters"] = parameter_map[QUERY_CATEGORY].map { |query_parameters| query_parameters.render(page_context) }
43
+ .join if parameter_map.has_key?(QUERY_CATEGORY)
44
+
45
+ @params["body_parameters"] = parameter_map[BODY_CATEGORY].map { |query_parameters| query_parameters.render(page_context) }
46
+ .join if parameter_map.has_key?(BODY_CATEGORY)
47
+
48
+ @params["responses"] = api_responses(page_context)
49
+
50
+ Potion[:theme].render_template(@template_name, @params)
51
+ end
52
+ end
53
+
54
+ class ApiDescriptionTag < Liquid::Block
55
+ include PotionBlockElement
56
+
57
+ def render(page_context)
58
+ @params["description"] = @body.render(page_context)
59
+ Potion[:theme].render_template(@template_name, @params)
60
+ end
61
+ end
62
+
63
+ class ApiParameterTag < Liquid::Block
64
+ include PotionBlockElement
65
+
66
+ def initialize(tag_name, markup, options)
67
+ super
68
+
69
+ ensure_valid_attr("name", "type", "category")
70
+ end
71
+
72
+ def category
73
+ @params["category"]
74
+ end
75
+
76
+ def render(page_context)
77
+ @params["description"] = @body.render(page_context)
78
+ Potion[:theme].render_template(@template_name, @params)
79
+ end
80
+ end
81
+
82
+ class ApiResponseTag < Liquid::Block
83
+ include PotionBlockElement
84
+
85
+ def initialize(tag_name, markup, options)
86
+ super
87
+
88
+ ensure_valid_attr("status")
89
+ end
90
+
91
+ def status
92
+ @params["status"]
93
+ end
94
+
95
+ def render(page_context)
96
+ @params["body"] = @body.render(page_context)
97
+ Potion[:theme].render_template(@template_name, @params)
98
+ end
99
+ end
100
+ end
101
+
102
+ Jekyll::Potion::ApiTag.register_tag("description", Jekyll::Potion::ApiDescriptionTag)
103
+ Jekyll::Potion::ApiTag.register_tag("parameter", Jekyll::Potion::ApiParameterTag)
104
+ Jekyll::Potion::ApiTag.register_tag("response", Jekyll::Potion::ApiResponseTag)
105
+ Liquid::Template.register_tag("api", Jekyll::Potion::ApiTag)
@@ -0,0 +1,65 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class CodeTag < Liquid::Block
6
+ CODE_BLOCK_START = Regexp.new(%r!\A`{3,}!im).freeze
7
+ CODE_BLOCK_END = Regexp.new(%r!`{3,}\z!im).freeze
8
+
9
+ CODE_BLOCK = Regexp.new(%r!\A`{3,}(.*)`{3,}\z!im).freeze
10
+
11
+ include PotionTag
12
+
13
+ def initialize(tag_name, markup, options)
14
+ @body = ""
15
+ super
16
+ end
17
+
18
+ def parse(tokens)
19
+ block_open = false
20
+
21
+ while (token = tokens.shift)
22
+ strip_token = token.strip
23
+
24
+ if CODE_BLOCK.match?(strip_token)
25
+ @body << token
26
+ next
27
+ end
28
+
29
+ if not block_open and CODE_BLOCK_START.match?(strip_token)
30
+ block_open = true
31
+ end
32
+
33
+ if not block_open and strip_token == @end_tag_name
34
+ return
35
+ end
36
+
37
+ @body << token if block_open
38
+
39
+ if block_open and CODE_BLOCK_END.match?(strip_token)
40
+ block_open = false
41
+ end
42
+ end
43
+
44
+ raise SyntaxError, parse_context.locale.t("errors.syntax.tag_never_closed", block_name: @end_tag_name) unless block_open
45
+ raise SyntaxError, "code block is not closed" if block_open
46
+ end
47
+
48
+ def nodelist
49
+ [@body]
50
+ end
51
+
52
+ def blank?
53
+ @body.empty?
54
+ end
55
+
56
+ def render(page_context)
57
+ @params["body"] = Potion[:site].markdown_convert(@body)
58
+ @params.merge!(Potion[:tags][:code])
59
+
60
+ Potion[:theme].render_template(@template_name, @params)
61
+ end
62
+ end
63
+ end
64
+
65
+ Liquid::Template.register_tag("code", Jekyll::Potion::CodeTag)
@@ -0,0 +1,20 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class EmptyTag < Liquid::Tag
6
+ include PotionTag
7
+
8
+ def initialize(tag_name, markup, options)
9
+ super
10
+ end
11
+
12
+ def render(page_context)
13
+ @params["potion"] = PagePotion.potion(page_context)
14
+
15
+ Potion[:theme].render_template(@template_name, @params)
16
+ end
17
+ end
18
+ end
19
+
20
+ Liquid::Template.register_tag("empty", Jekyll::Potion::EmptyTag)
@@ -0,0 +1,22 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class FileTag < Liquid::Tag
6
+ include PotionTag
7
+
8
+ def initialize(tag_name, markup, options)
9
+ super
10
+ ensure_valid_attr("src")
11
+ end
12
+
13
+ def render(page_context)
14
+ @params["src"] = Potion[:site].base_url(@params["src"])
15
+ @params["caption"] = @params["src"] unless @params.has_key?("caption")
16
+
17
+ Potion[:theme].render_template(@template_name, @params)
18
+ end
19
+ end
20
+ end
21
+
22
+ Liquid::Template.register_tag("file", Jekyll::Potion::FileTag)
@@ -0,0 +1,47 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class LinkTag < Liquid::Tag
6
+ require "net/http"
7
+ require "nokogiri"
8
+
9
+ include PotionTag
10
+
11
+ HTTP_SCHEME = %r!http(s)?://!im.freeze
12
+
13
+ def initialize(tag_name, markup, options)
14
+ super
15
+ ensure_valid_attr("url")
16
+ end
17
+
18
+ def render(page_context)
19
+ if @params["url"] =~ HTTP_SCHEME
20
+ begin
21
+ res = Net::HTTP.get_response URI(@params["url"])
22
+ raise RuntimeError, res.class.name unless res.is_a?(Net::HTTPSuccess)
23
+ html = Nokogiri::HTML.parse(res.body)
24
+ @params["title"] = html.title
25
+ @params["description"] = html.at("meta[name='description']")["content"] unless html.at("meta[name='description']").nil?
26
+ rescue => error
27
+ logger.warn("#{@params["url"]} is break.", error.message)
28
+ @params["title"] = @params["url"]
29
+ end
30
+ else
31
+ potion = PagePotion.potion(@params["url"])
32
+
33
+ unless potion.nil?
34
+ @params["title"] = potion.title
35
+ @params["description"] = potion.description
36
+ @params["url"] = potion.url
37
+ end
38
+ end
39
+
40
+ @params["title"] = @params["caption"] unless @params["caption"].nil? || @params["caption"].empty?
41
+
42
+ Potion[:theme].render_template(@template_name, @params)
43
+ end
44
+ end
45
+ end
46
+
47
+ Liquid::Template.register_tag("link", Jekyll::Potion::LinkTag)
@@ -0,0 +1,22 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class LogoTag < Liquid::Tag
6
+ include PotionTag
7
+
8
+ def initialize(tag_name, markup, options)
9
+ super
10
+ end
11
+
12
+ def render(page_context)
13
+ @params["index_url"] = Potion[:site].index_url
14
+ @params["site_icon"] = Potion[:site].base_url(Potion[:site][:icon]) unless Potion[:site].empty?(:icon)
15
+ @params["site_title"] = Potion[:site][:title]
16
+
17
+ Potion[:theme].render_template(@template_name, @params)
18
+ end
19
+ end
20
+ end
21
+
22
+ Liquid::Template.register_tag("logo", Jekyll::Potion::LogoTag)
@@ -0,0 +1,35 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class NavigationTag < Liquid::Tag
6
+ include PotionTag
7
+
8
+ POTION_KEY = "potion".freeze
9
+
10
+ DEFAULT_CONFIG = {
11
+ "active_class" => "active",
12
+ "fold_class" => "fold"
13
+ }
14
+
15
+ def initialize(tag_name, markup, options)
16
+ super
17
+ end
18
+
19
+ def render(page_context)
20
+ if @template_name == @tag_name
21
+ Potion[:site].render_navigation(self)
22
+ else
23
+ @params[POTION_KEY] = page_context[POTION_KEY]
24
+ Potion[:theme].render_template(@template_name, @params)
25
+ end
26
+ end
27
+
28
+ def render_only_one(navigation)
29
+ @params["navigation"] = navigation
30
+ Potion[:theme].render_template(@template_name, @params)
31
+ end
32
+ end
33
+ end
34
+
35
+ Liquid::Template.register_tag("navigation", Jekyll::Potion::NavigationTag)
@@ -0,0 +1,20 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class PaginationTag < Liquid::Tag
6
+ include PotionTag
7
+
8
+ def initialize(tag_name, markup, options)
9
+ super
10
+ end
11
+
12
+ def render(page_context)
13
+ @params["potion"] = PagePotion.potion(page_context)
14
+
15
+ Potion[:theme].render_template(@template_name, @params)
16
+ end
17
+ end
18
+ end
19
+
20
+ Liquid::Template.register_tag("pagination", Jekyll::Potion::PaginationTag)
@@ -0,0 +1,62 @@
1
+ # SPDX-FileCopyrightText: Copyright 2022 SK TELECOM CO., LTD.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ module Jekyll::Potion
5
+ class TabsTag < PotionBlock
6
+ DEFAULT_CONFIG = {
7
+ "tabs_class" => "tabs",
8
+ "active_class" => "active"
9
+ }
10
+
11
+ def render_tab_content(page_context)
12
+ output = []
13
+ @elements.each { |e| output << e.render(page_context) }
14
+ output.join
15
+ end
16
+
17
+ def render(page_context)
18
+ @params["id"] = id
19
+
20
+ tabs = []
21
+ @elements.each_index { |i|
22
+ @elements[i].first = i == 0;
23
+ }
24
+
25
+ @elements.each do |e|
26
+ tabs.push({ "title" => e.title, "id" => e.id, "first" => e.first })
27
+ end
28
+
29
+ @params["tabs"] = tabs
30
+ @params["contents"] = render_tab_content(page_context)
31
+ @params.merge!(Potion[:tags][:tabs])
32
+
33
+ Potion[:theme].render_template(@template_name, @params)
34
+ end
35
+ end
36
+
37
+ class TabContentTag < Liquid::Block
38
+ include PotionBlockElement
39
+
40
+ attr_accessor :first
41
+
42
+ def id_format
43
+ "tab-content-#{options.line_number}"
44
+ end
45
+
46
+ def title
47
+ @params["title"]
48
+ end
49
+
50
+ def render(page_context)
51
+ @params["id"] = id
52
+ @params["first"] = first
53
+ @params["body"] = Potion[:site].markdown_convert(@body.render(page_context))
54
+ @params.merge!(Potion[:tags][:tabs])
55
+
56
+ Potion[:theme].render_template(@template_name, @params)
57
+ end
58
+ end
59
+ end
60
+
61
+ Jekyll::Potion::TabsTag.register_tag("content", Jekyll::Potion::TabContentTag)
62
+ Liquid::Template.register_tag("tabs", Jekyll::Potion::TabsTag)
@@ -0,0 +1,10 @@
1
+ <div id="container" class="main-container">
2
+ <div class="header">
3
+ <h1>{{ page.title }}</h1>
4
+ <div class="description">{{ page.description }}</div>
5
+ </div>
6
+ <div class="content">
7
+ {{ content | markdownify }}
8
+ {% pagination %}
9
+ </div>
10
+ </div>
@@ -0,0 +1,4 @@
1
+ <meta charset="utf-8">
2
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
3
+ <meta http-equiv="Cache-Control" content="no-cache" >
4
+ <meta http-equiv="Pragma" content="no-cache">
@@ -0,0 +1,21 @@
1
+ <div class="header menu">
2
+ <div>
3
+ <div id="menu" class="menu-icon show_menu"></div>
4
+ </div>
5
+ </div>
6
+ <div class="header title">
7
+ {% logo %}
8
+ </div>
9
+ <div class="header search">
10
+ <div>
11
+ <div class="search-bar show_search">
12
+ <div class="search-icon"></div>
13
+ <div class="search_text">| 검색</div>
14
+ </div>
15
+ </div>
16
+ </div>
17
+ <div class="header search-s">
18
+ <div>
19
+ <div class="search-icon show_search"></div>
20
+ </div>
21
+ </div>
@@ -0,0 +1,5 @@
1
+ <div id="modal_image_area" class="modal hide">
2
+ <div class="modal-wrapper">
3
+ <img id="modal_image" class="modal-image" src="" data-skip-src-to-absolute>
4
+ </div>
5
+ </div>
@@ -0,0 +1,3 @@
1
+ <div class="nav-container">
2
+ {% navigation %}
3
+ </div>
@@ -0,0 +1,29 @@
1
+ <script type="text/x-jsrender" id="search_contents_tmpl">
2
+ {% raw %}
3
+ <div class="search-content">
4
+ <a href="{{:url}}">
5
+ <div class="bold">{{:title}}</div>
6
+ <div class="content">
7
+ {{for sentences}}
8
+ <p>{{:}}</p>
9
+ {{/for}}
10
+ </div>
11
+ </a>
12
+ </div>
13
+ {% endraw %}
14
+ </script>
15
+ <div id="modal_search_area" class="modal hide">
16
+ <div class="modal-wrapper">
17
+ <div class="modal-search">
18
+ <div class="search-area">
19
+ <input id="search_keyword" type="text" placeholder="최소 2자 이상의 검색어를 입력하신 후 Enter를 입력하세요.">
20
+ </div>
21
+ <div class="search-result-area">
22
+ <div class="search-container">
23
+ <div id="search_contents" class="search-contents">
24
+ </div>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
@@ -0,0 +1,19 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ {% include head.html %}
5
+ </head>
6
+ <body>
7
+ <header>
8
+ {% include header.html %}
9
+ </header>
10
+ <nav>
11
+ {% include nav.html %}
12
+ </nav>
13
+ <main>
14
+ {% include container.html %}
15
+ </main>
16
+ {% include image.html %}
17
+ {% include search.html %}
18
+ </body>
19
+ </html>
@@ -0,0 +1,23 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ {% include head.html %}
5
+ </head>
6
+ <body>
7
+ <header>
8
+ {% include header.html %}
9
+ </header>
10
+ <nav>
11
+ {% include nav.html %}
12
+ </nav>
13
+ <main>
14
+ <div id="container" class="main-container">
15
+ <div class="content">
16
+ {{ content | markdownify }}
17
+ </div>
18
+ </div>
19
+ </main>
20
+ {% include image.html %}
21
+ {% include search.html %}
22
+ </body>
23
+ </html>
@@ -0,0 +1,4 @@
1
+ <div class="alerts {{ style }}">
2
+ <div class="style"></div>
3
+ <div class="body">{{ body }}</div>
4
+ </div>
@@ -0,0 +1,46 @@
1
+ <div class="api">
2
+ <div class="header">
3
+ <div class="title">{{ summary }}</div>
4
+ </div>
5
+ <div class="description">
6
+ <div class="description-area">
7
+ <div class="api-description">
8
+ <div class="method"><label class="bold">{{ method | upcase }}</label></div>
9
+ <div class="url">
10
+ <label>{{ base_url }}</label>
11
+ <label class="gray">{{ path }}</label>
12
+ </div>
13
+ </div>
14
+ {{ description }}
15
+ </div>
16
+ </div>
17
+ <div class="content">
18
+ <div class="request-categories">
19
+ <div class="large">Parameters</div>
20
+ <div class="content">
21
+ {% if query_parameters %}
22
+ <div class="category">
23
+ <div class="title">Query</div>
24
+ <div class="parameters">
25
+ {{ query_parameters }}
26
+ </div>
27
+ </div>
28
+ {% endif %}
29
+ {% if body_parameters %}
30
+ <div class="category">
31
+ <div class="title">Body</div>
32
+ <div class="parameters">
33
+ {{ body_parameters }}
34
+ </div>
35
+ </div>
36
+ {% endif %}
37
+ </div>
38
+ </div>
39
+ <div class="responses">
40
+ <div class="large">Responses</div>
41
+ <div class="content">
42
+ {{ responses }}
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </div>
@@ -0,0 +1,3 @@
1
+ <div class="content gray">
2
+ {{ description }}
3
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="parameter">
2
+ <div class="name">{{ name }}</div>
3
+ <div class="type">{{ type }}</div>
4
+ <div class="description">{{ description }}</div>
5
+ </div>
@@ -0,0 +1,7 @@
1
+ <div class="response">
2
+ <div class="header">
3
+ <div class="status"><label>{{ status }}</label></div>
4
+ <div class="description gray">{{ description }}</div>
5
+ </div>
6
+ <div class="content">{{ body }}</div>
7
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="{{ code_class }}">
2
+ <div class="header">
3
+ <div class="title">{{ title }}</div>
4
+ <div class="copy" data-code-copy-target-id></div>
5
+ <div class="{{ success_class }}" data-skip-search-index>복사성공!</div>
6
+ </div>
7
+ <div class="body">{{ body }}</div>
8
+ </div>
@@ -0,0 +1,15 @@
1
+ <div class="block-row" data-skip-search-index>
2
+ {% for child in potion.children %}
3
+ <div>
4
+ <div class="block">
5
+ <a class="block-body" href="{{ child.url }}">
6
+ <div class="thumb document"></div>
7
+ <div class="content">
8
+ <div class="bold">{{ child.title }}</div>
9
+ <div class="small">{{ child.description }}</div>
10
+ </div>
11
+ </a>
12
+ </div>
13
+ </div>
14
+ {% endfor %}
15
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="block">
2
+ <a class="block-body" href="{{ src }}" target="_blank" data-skip-href-to-absolute>
3
+ <div class="thumb file"></div>
4
+ <div class="content">
5
+ <div class="large">{{ caption }}</div>
6
+ </div>
7
+ </a>
8
+ </div>
@@ -0,0 +1,9 @@
1
+ <div class="block">
2
+ <a class="block-body" href="{{ url }}">
3
+ <div class="thumb link"></div>
4
+ <div class="content">
5
+ <div class="large">{{ title }}</div>
6
+ <div class="small">{{ description }}</div>
7
+ </div>
8
+ </a>
9
+ </div>
@@ -0,0 +1,8 @@
1
+ <div>
2
+ <a href="{{ index_url }}" class="link">
3
+ {% if site_icon %}
4
+ <img src="{{ site_icon }}">
5
+ {% endif %}
6
+ {{ site_title }}
7
+ </a>
8
+ </div>