jekyll-slides 0.1.0
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 +7 -0
- data/CHANGELOG.md +25 -0
- data/LICENSE.txt +203 -0
- data/README.md +180 -0
- data/_includes/slides/controls.html +28 -0
- data/_includes/slides/overview.html +1 -0
- data/_includes/slides/progress.html +3 -0
- data/_layouts/presentation.html +36 -0
- data/assets/css/presentation.css +2 -0
- data/assets/fonts/OFL-atkinson-hyperlegible-mono.txt +93 -0
- data/assets/fonts/OFL-atkinson-hyperlegible-next.txt +93 -0
- data/assets/fonts/README.md +56 -0
- data/assets/fonts/atkinson-hyperlegible-mono-italic.woff2 +0 -0
- data/assets/fonts/atkinson-hyperlegible-mono.woff2 +0 -0
- data/assets/fonts/atkinson-hyperlegible-next-italic.woff2 +0 -0
- data/assets/fonts/atkinson-hyperlegible-next.woff2 +0 -0
- data/assets/js/presentation.js +370 -0
- data/doc/CHANGELOG.md +25 -0
- data/doc/Jekyll/Slides/Assets/SiteAssetFile.md +10 -0
- data/doc/Jekyll/Slides/Assets.md +12 -0
- data/doc/Jekyll/Slides/ComponentRenderer/RenderedDocument.md +15 -0
- data/doc/Jekyll/Slides/ComponentRenderer.md +33 -0
- data/doc/Jekyll/Slides/JekyllIntegration.md +28 -0
- data/doc/Jekyll/Slides/Layout.md +10 -0
- data/doc/Jekyll/Slides/Presentation.md +19 -0
- data/doc/Jekyll/Slides/PresentationParser.md +17 -0
- data/doc/Jekyll/Slides/RangeParser.md +21 -0
- data/doc/Jekyll/Slides/Renderer.md +10 -0
- data/doc/Jekyll/Slides/RougeRenderer.md +16 -0
- data/doc/Jekyll/Slides/SlideMetadata.md +43 -0
- data/doc/Jekyll/Slides/SlideRenderer.md +13 -0
- data/doc/Jekyll/Slides/Support.md +12 -0
- data/doc/Jekyll/Slides.md +50 -0
- data/doc/Jekyll.md +5 -0
- data/doc/README.md +180 -0
- data/doc/index.csv +71 -0
- data/lib/jekyll/slides/assets.rb +47 -0
- data/lib/jekyll/slides/component_renderer.rb +237 -0
- data/lib/jekyll/slides/jekyll_integration.rb +126 -0
- data/lib/jekyll/slides/layout.rb +20 -0
- data/lib/jekyll/slides/presentation.rb +22 -0
- data/lib/jekyll/slides/presentation_parser.rb +102 -0
- data/lib/jekyll/slides/range_parser.rb +52 -0
- data/lib/jekyll/slides/renderer.rb +21 -0
- data/lib/jekyll/slides/rouge_renderer.rb +58 -0
- data/lib/jekyll/slides/slide_metadata.rb +85 -0
- data/lib/jekyll/slides/slide_renderer.rb +93 -0
- data/lib/jekyll/slides/support.rb +25 -0
- data/lib/jekyll/slides/version.rb +7 -0
- data/lib/jekyll/slides.rb +39 -0
- data/lib/jekyll-slides.rb +3 -0
- data/llm.txt +50 -0
- metadata +175 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jekyll
|
|
4
|
+
module Slides
|
|
5
|
+
class SlideMetadata
|
|
6
|
+
LAYOUTS = %w[title statement content code code-left code-right split-code code-result].freeze
|
|
7
|
+
BACKGROUNDS = %w[plain gradient grid spotlight].freeze
|
|
8
|
+
KEYS = %w[layout class background].freeze
|
|
9
|
+
|
|
10
|
+
attr_reader :layout, :background, :custom_class, :content, :values
|
|
11
|
+
|
|
12
|
+
def self.parse(content, index: 0, warning: nil, components: nil)
|
|
13
|
+
new(content, index: index, warning: warning).parse(components: components)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def initialize(content, index: 0, warning: nil)
|
|
17
|
+
@original_content = content.to_s
|
|
18
|
+
@index = index
|
|
19
|
+
@warning = warning
|
|
20
|
+
@content, @values = extract_comment(@original_content)
|
|
21
|
+
@background = @values["background"] || "plain"
|
|
22
|
+
@custom_class = @values["class"].to_s.strip
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def parse(components: nil)
|
|
26
|
+
components ||= ComponentRenderer.new(warning: @warning).render_document(@content).components
|
|
27
|
+
@layout = @values["layout"] || inferred_layout(components)
|
|
28
|
+
|
|
29
|
+
unless LAYOUTS.include?(@layout)
|
|
30
|
+
Support.warn(@warning, "Invalid slide layout #{@layout.inspect}; falling back to automatic layout")
|
|
31
|
+
@layout = inferred_layout(components)
|
|
32
|
+
end
|
|
33
|
+
unless BACKGROUNDS.include?(@background)
|
|
34
|
+
Support.warn(@warning, "Invalid slide background #{@background.inspect}; falling back to plain")
|
|
35
|
+
@background = "plain"
|
|
36
|
+
end
|
|
37
|
+
self
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def extract_comment(body)
|
|
43
|
+
match = body.match(/\A[ \t]*(<!--(.*?)-->)[ \t]*(?:\r?\n)?/m)
|
|
44
|
+
return [body, {}] unless match
|
|
45
|
+
|
|
46
|
+
values = {}
|
|
47
|
+
lines = match[2].to_s.lines.map(&:strip).reject(&:empty?)
|
|
48
|
+
parsed = lines.map { |line| line.match(/\A(\w[\w-]*)\s*:\s*(.*?)\z/) }
|
|
49
|
+
return [body, {}] unless parsed.all?
|
|
50
|
+
return [body, {}] unless parsed.any? { |match_data| KEYS.include?(match_data[1]) }
|
|
51
|
+
|
|
52
|
+
parsed.each do |match_data|
|
|
53
|
+
key = match_data[1]
|
|
54
|
+
if KEYS.include?(key)
|
|
55
|
+
values[key] = match_data[2].strip
|
|
56
|
+
else
|
|
57
|
+
Support.warn(@warning, "Unknown slide metadata key #{key.inspect}; ignoring")
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
[body[match.end(0)..].to_s, values]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def inferred_layout(components)
|
|
64
|
+
return "code-result" if components == %i[editor terminal]
|
|
65
|
+
|
|
66
|
+
editors = components.count(:editor)
|
|
67
|
+
terminals = components.count(:terminal)
|
|
68
|
+
return "split-code" if editors > 1 && components.all? { |component| component == :editor }
|
|
69
|
+
return "code" if editors.positive? || terminals.positive?
|
|
70
|
+
return "title" if @index.to_i.zero?
|
|
71
|
+
|
|
72
|
+
statement_content?(@content) ? "statement" : "content"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def statement_content?(body)
|
|
76
|
+
chunks = body.strip.split(/\n\s*\n/)
|
|
77
|
+
return false unless (1..2).cover?(chunks.length)
|
|
78
|
+
return false unless chunks.first.match?(/\A\s*\#{1,6}\s+.+\z/m)
|
|
79
|
+
return true if chunks.length == 1
|
|
80
|
+
|
|
81
|
+
chunks.last.lines.none? { |line| line.match?(/\A\s*(?:[#>*-]|```|~~~)/) }
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jekyll
|
|
4
|
+
module Slides
|
|
5
|
+
class SlideRenderer
|
|
6
|
+
def initialize(warning: nil, component_renderer: nil, options: {})
|
|
7
|
+
@warning = warning
|
|
8
|
+
@component_renderer = component_renderer || ComponentRenderer.new(warning: warning, options: options)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def render(markdown)
|
|
12
|
+
PresentationParser.new(markdown).parse.each_with_index.map do |source, index|
|
|
13
|
+
metadata = SlideMetadata.new(source, index: index, warning: @warning)
|
|
14
|
+
rendered = @component_renderer.render_document(
|
|
15
|
+
metadata.content,
|
|
16
|
+
id_prefix: "slide-#{index + 1}-"
|
|
17
|
+
)
|
|
18
|
+
metadata.parse(components: rendered.components)
|
|
19
|
+
fragments = rendered.fragments
|
|
20
|
+
body = composition(metadata.layout, fragments)
|
|
21
|
+
classes = ["slide", "layout-#{metadata.layout}", "bg-#{metadata.background}"]
|
|
22
|
+
classes.concat(metadata.custom_class.split(/\s+/)) unless metadata.custom_class.empty?
|
|
23
|
+
attrs = %(class="#{Support.escape(classes.join(' '))}" id="slide-#{index + 1}" data-slide="#{index + 1}" aria-label="Slide #{index + 1}")
|
|
24
|
+
%(<section #{attrs}><div class="slide-content">#{body}</div></section>)
|
|
25
|
+
end.join
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def composition(layout, fragments)
|
|
31
|
+
prose = fragments.select { |kind, _html, _metadata| kind == :prose }.map { |_kind, html, _metadata| html }.join
|
|
32
|
+
visual = fragments.select { |kind, _html, _metadata| kind == :visual }.map { |_kind, html, _metadata| html }.join
|
|
33
|
+
case layout
|
|
34
|
+
when "split-code"
|
|
35
|
+
split_panes(fragments)
|
|
36
|
+
when "code-result"
|
|
37
|
+
%(<div class="prose">#{prose}</div><div class="stack">#{visual}</div>)
|
|
38
|
+
when "code-left"
|
|
39
|
+
%(<div class="panes"><div class="pane visual">#{visual}</div><div class="pane prose">#{prose}</div></div>)
|
|
40
|
+
when "code-right"
|
|
41
|
+
%(<div class="panes"><div class="pane prose">#{prose}</div><div class="pane visual">#{visual}</div></div>)
|
|
42
|
+
when "code"
|
|
43
|
+
code_layout(prose, visual)
|
|
44
|
+
else
|
|
45
|
+
fragments.map { |_kind, html, _metadata| html }.then { |body| %(<div class="prose">#{body.join}</div>) }
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def code_layout(prose, visual)
|
|
50
|
+
prose_html = prose.empty? ? "" : %(<div class="prose">#{prose}</div>)
|
|
51
|
+
%(#{prose_html}<div class="visual">#{visual}</div>)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def split_panes(fragments)
|
|
55
|
+
visual_index = fragments.index { |kind, _| kind == :visual }
|
|
56
|
+
return %(<div class="prose">#{fragments.map { |_kind, html, _metadata| html }.join}</div>) unless visual_index
|
|
57
|
+
|
|
58
|
+
panes = []
|
|
59
|
+
leading = fragments[0...visual_index]
|
|
60
|
+
h1_intro = leading.length == 1 && leading.first[2][:heading_level] == 1
|
|
61
|
+
global = if h1_intro
|
|
62
|
+
leading.map { |_kind, html, _metadata| html }.join
|
|
63
|
+
elsif leading.length > 1
|
|
64
|
+
leading[0...-1].map { |_kind, html, _metadata| html }.join
|
|
65
|
+
end
|
|
66
|
+
pending = if h1_intro
|
|
67
|
+
+""
|
|
68
|
+
elsif leading.length > 1
|
|
69
|
+
leading.last[1].dup
|
|
70
|
+
else
|
|
71
|
+
leading.map { |_kind, html, _metadata| html }.join
|
|
72
|
+
end
|
|
73
|
+
fragments[visual_index..].each do |kind, html, _metadata|
|
|
74
|
+
if kind == :visual
|
|
75
|
+
panes << %(<div class="pane">#{pending}#{html}</div>)
|
|
76
|
+
pending = +""
|
|
77
|
+
else
|
|
78
|
+
pending << html
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
if pending.empty?
|
|
82
|
+
# no trailing prose
|
|
83
|
+
elsif panes.empty?
|
|
84
|
+
panes << %(<div class="pane">#{pending}</div>)
|
|
85
|
+
else
|
|
86
|
+
panes[-1] = panes[-1].sub(%r{</div>\z}, "#{pending}</div>")
|
|
87
|
+
end
|
|
88
|
+
prefix = global && !global.empty? ? %(<div class="prose">#{global}</div>) : ""
|
|
89
|
+
panes.empty? ? prefix : %(#{prefix}<div class="panes">#{panes.join}</div>)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "cgi/escape"
|
|
4
|
+
|
|
5
|
+
module Jekyll
|
|
6
|
+
module Slides
|
|
7
|
+
module Support
|
|
8
|
+
module_function
|
|
9
|
+
|
|
10
|
+
def warn(warning, message)
|
|
11
|
+
return unless warning
|
|
12
|
+
|
|
13
|
+
if warning.respond_to?(:call)
|
|
14
|
+
warning.call(message)
|
|
15
|
+
elsif warning.respond_to?(:warn)
|
|
16
|
+
warning.warn(message)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def escape(value)
|
|
21
|
+
CGI.escapeHTML(value.to_s)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "jekyll"
|
|
4
|
+
require "rouge"
|
|
5
|
+
|
|
6
|
+
module Jekyll
|
|
7
|
+
# Markdown presentations for Jekyll, with editor and terminal components.
|
|
8
|
+
#
|
|
9
|
+
# Add +jekyll-slides+ to the site's plugins and choose the +presentation+
|
|
10
|
+
# layout on a Markdown page. Separate slides with +---+ outside fenced code blocks.
|
|
11
|
+
# The plugin supplies layouts, includes, styles, scripts, and offline fonts
|
|
12
|
+
# while preserving the site's theme and local overrides.
|
|
13
|
+
#
|
|
14
|
+
# Configure defaults under +slides:+ in _config.yml, or use front matter on
|
|
15
|
+
# individual decks. Themes are +midnight+, +minimal-light+, +minimal-dark+,
|
|
16
|
+
# and +ruby+. The supported aspect ratio is 16:9; quote this value in YAML.
|
|
17
|
+
#
|
|
18
|
+
# Jekyll runs Liquid before rendering each slide as one Markdown document.
|
|
19
|
+
# Jekyll::Slides::Presentation also renders slide HTML directly when Jekyll integration
|
|
20
|
+
# is not needed; it does not evaluate Liquid or wrap the presentation layout.
|
|
21
|
+
module Slides
|
|
22
|
+
ROOT = File.expand_path("../..", __dir__)
|
|
23
|
+
LAYOUT_NAME = "presentation"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
require_relative "slides/version"
|
|
28
|
+
require_relative "slides/support"
|
|
29
|
+
require_relative "slides/presentation_parser"
|
|
30
|
+
require_relative "slides/slide_metadata"
|
|
31
|
+
require_relative "slides/range_parser"
|
|
32
|
+
require_relative "slides/rouge_renderer"
|
|
33
|
+
require_relative "slides/component_renderer"
|
|
34
|
+
require_relative "slides/slide_renderer"
|
|
35
|
+
require_relative "slides/presentation"
|
|
36
|
+
require_relative "slides/renderer"
|
|
37
|
+
require_relative "slides/layout"
|
|
38
|
+
require_relative "slides/assets"
|
|
39
|
+
require_relative "slides/jekyll_integration"
|
data/llm.txt
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Module Jekyll::Slides <a id="module-Jekyll-Slides"></a>
|
|
2
|
+
|
|
3
|
+
| | |
|
|
4
|
+
| --- | --- |
|
|
5
|
+
| **Defined in** | lib/jekyll/slides.rb, lib/jekyll/slides/assets.rb, lib/jekyll/slides/layout.rb, lib/jekyll/slides/support.rb, lib/jekyll/slides/version.rb, lib/jekyll/slides/renderer.rb, lib/jekyll/slides/presentation.rb, lib/jekyll/slides/range_parser.rb, lib/jekyll/slides/rouge_renderer.rb, lib/jekyll/slides/slide_metadata.rb, lib/jekyll/slides/slide_renderer.rb, lib/jekyll/slides/component_renderer.rb, lib/jekyll/slides/jekyll_integration.rb, lib/jekyll/slides/presentation_parser.rb |
|
|
6
|
+
|
|
7
|
+
Markdown presentations for Jekyll, with editor and terminal components.
|
|
8
|
+
|
|
9
|
+
Add <code>jekyll-slides</code> to the site's plugins and choose the
|
|
10
|
+
`presentation` layout on a Markdown page. Separate slides with
|
|
11
|
+
<code>---</code> outside fenced code blocks. The plugin supplies layouts,
|
|
12
|
+
includes, styles, scripts, and offline fonts while preserving the site's theme
|
|
13
|
+
and local overrides.
|
|
14
|
+
|
|
15
|
+
Configure defaults under <code>slides:</code> in _config.yml, or use front
|
|
16
|
+
matter on individual decks. Themes are `midnight`, <code>minimal-light</code>,
|
|
17
|
+
<code>minimal-dark</code>, and `ruby`. The supported aspect ratio is 16:9;
|
|
18
|
+
quote this value in YAML.
|
|
19
|
+
|
|
20
|
+
Jekyll runs Liquid before rendering each slide as one Markdown document.
|
|
21
|
+
Jekyll::Slides::Presentation also renders slide HTML directly when Jekyll
|
|
22
|
+
integration is not needed; it does not evaluate Liquid or wrap the
|
|
23
|
+
presentation layout.
|
|
24
|
+
|
|
25
|
+
## Constants
|
|
26
|
+
### `LAYOUT_NAME` <a id="constant-LAYOUT_NAME"></a> <a id="LAYOUT_NAME-constant"></a>
|
|
27
|
+
Not documented.
|
|
28
|
+
|
|
29
|
+
### `ROOT` <a id="constant-ROOT"></a> <a id="ROOT-constant"></a>
|
|
30
|
+
Not documented.
|
|
31
|
+
|
|
32
|
+
### `VERSION` <a id="constant-VERSION"></a> <a id="VERSION-constant"></a>
|
|
33
|
+
Not documented.
|
|
34
|
+
|
|
35
|
+
# Documentation
|
|
36
|
+
|
|
37
|
+
- [Slides/Assets/SiteAssetFile.md](doc/Jekyll/Slides/Assets/SiteAssetFile.md)
|
|
38
|
+
- [Slides/Assets.md](doc/Jekyll/Slides/Assets.md)
|
|
39
|
+
- [Slides/ComponentRenderer/RenderedDocument.md](doc/Jekyll/Slides/ComponentRenderer/RenderedDocument.md)
|
|
40
|
+
- [Slides/ComponentRenderer.md](doc/Jekyll/Slides/ComponentRenderer.md)
|
|
41
|
+
- [Slides/JekyllIntegration.md](doc/Jekyll/Slides/JekyllIntegration.md)
|
|
42
|
+
- [Slides/Layout.md](doc/Jekyll/Slides/Layout.md)
|
|
43
|
+
- [Slides/Presentation.md](doc/Jekyll/Slides/Presentation.md)
|
|
44
|
+
- [Slides/PresentationParser.md](doc/Jekyll/Slides/PresentationParser.md)
|
|
45
|
+
- [Slides/RangeParser.md](doc/Jekyll/Slides/RangeParser.md)
|
|
46
|
+
- [Slides/Renderer.md](doc/Jekyll/Slides/Renderer.md)
|
|
47
|
+
- [Slides/RougeRenderer.md](doc/Jekyll/Slides/RougeRenderer.md)
|
|
48
|
+
- [Slides/SlideMetadata.md](doc/Jekyll/Slides/SlideMetadata.md)
|
|
49
|
+
- [Slides/SlideRenderer.md](doc/Jekyll/Slides/SlideRenderer.md)
|
|
50
|
+
- [Slides/Support.md](doc/Jekyll/Slides/Support.md)
|
metadata
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: jekyll-slides
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Lucian Ghinda
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: jekyll
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '4.3'
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '5'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '4.3'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '5'
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: kramdown
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '2.4'
|
|
39
|
+
- - "<"
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '3'
|
|
42
|
+
type: :runtime
|
|
43
|
+
prerelease: false
|
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '2.4'
|
|
49
|
+
- - "<"
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
version: '3'
|
|
52
|
+
- !ruby/object:Gem::Dependency
|
|
53
|
+
name: kramdown-parser-gfm
|
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirements:
|
|
56
|
+
- - ">="
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: '1.1'
|
|
59
|
+
- - "<"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '2'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '1.1'
|
|
69
|
+
- - "<"
|
|
70
|
+
- !ruby/object:Gem::Version
|
|
71
|
+
version: '2'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: rouge
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: '4'
|
|
79
|
+
- - "<"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '5'
|
|
82
|
+
type: :runtime
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '4'
|
|
89
|
+
- - "<"
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: '5'
|
|
92
|
+
description: A Jekyll plugin for turning Markdown into accessible, responsive slide
|
|
93
|
+
presentations with code and terminal components.
|
|
94
|
+
executables: []
|
|
95
|
+
extensions: []
|
|
96
|
+
extra_rdoc_files: []
|
|
97
|
+
files:
|
|
98
|
+
- CHANGELOG.md
|
|
99
|
+
- LICENSE.txt
|
|
100
|
+
- README.md
|
|
101
|
+
- _includes/slides/controls.html
|
|
102
|
+
- _includes/slides/overview.html
|
|
103
|
+
- _includes/slides/progress.html
|
|
104
|
+
- _layouts/presentation.html
|
|
105
|
+
- assets/css/presentation.css
|
|
106
|
+
- assets/fonts/OFL-atkinson-hyperlegible-mono.txt
|
|
107
|
+
- assets/fonts/OFL-atkinson-hyperlegible-next.txt
|
|
108
|
+
- assets/fonts/README.md
|
|
109
|
+
- assets/fonts/atkinson-hyperlegible-mono-italic.woff2
|
|
110
|
+
- assets/fonts/atkinson-hyperlegible-mono.woff2
|
|
111
|
+
- assets/fonts/atkinson-hyperlegible-next-italic.woff2
|
|
112
|
+
- assets/fonts/atkinson-hyperlegible-next.woff2
|
|
113
|
+
- assets/js/presentation.js
|
|
114
|
+
- doc/CHANGELOG.md
|
|
115
|
+
- doc/Jekyll.md
|
|
116
|
+
- doc/Jekyll/Slides.md
|
|
117
|
+
- doc/Jekyll/Slides/Assets.md
|
|
118
|
+
- doc/Jekyll/Slides/Assets/SiteAssetFile.md
|
|
119
|
+
- doc/Jekyll/Slides/ComponentRenderer.md
|
|
120
|
+
- doc/Jekyll/Slides/ComponentRenderer/RenderedDocument.md
|
|
121
|
+
- doc/Jekyll/Slides/JekyllIntegration.md
|
|
122
|
+
- doc/Jekyll/Slides/Layout.md
|
|
123
|
+
- doc/Jekyll/Slides/Presentation.md
|
|
124
|
+
- doc/Jekyll/Slides/PresentationParser.md
|
|
125
|
+
- doc/Jekyll/Slides/RangeParser.md
|
|
126
|
+
- doc/Jekyll/Slides/Renderer.md
|
|
127
|
+
- doc/Jekyll/Slides/RougeRenderer.md
|
|
128
|
+
- doc/Jekyll/Slides/SlideMetadata.md
|
|
129
|
+
- doc/Jekyll/Slides/SlideRenderer.md
|
|
130
|
+
- doc/Jekyll/Slides/Support.md
|
|
131
|
+
- doc/README.md
|
|
132
|
+
- doc/index.csv
|
|
133
|
+
- lib/jekyll-slides.rb
|
|
134
|
+
- lib/jekyll/slides.rb
|
|
135
|
+
- lib/jekyll/slides/assets.rb
|
|
136
|
+
- lib/jekyll/slides/component_renderer.rb
|
|
137
|
+
- lib/jekyll/slides/jekyll_integration.rb
|
|
138
|
+
- lib/jekyll/slides/layout.rb
|
|
139
|
+
- lib/jekyll/slides/presentation.rb
|
|
140
|
+
- lib/jekyll/slides/presentation_parser.rb
|
|
141
|
+
- lib/jekyll/slides/range_parser.rb
|
|
142
|
+
- lib/jekyll/slides/renderer.rb
|
|
143
|
+
- lib/jekyll/slides/rouge_renderer.rb
|
|
144
|
+
- lib/jekyll/slides/slide_metadata.rb
|
|
145
|
+
- lib/jekyll/slides/slide_renderer.rb
|
|
146
|
+
- lib/jekyll/slides/support.rb
|
|
147
|
+
- lib/jekyll/slides/version.rb
|
|
148
|
+
- llm.txt
|
|
149
|
+
homepage: https://github.com/lucianghinda/jekyll-slides
|
|
150
|
+
licenses:
|
|
151
|
+
- Apache-2.0
|
|
152
|
+
metadata:
|
|
153
|
+
homepage_uri: https://github.com/lucianghinda/jekyll-slides
|
|
154
|
+
source_code_uri: https://github.com/lucianghinda/jekyll-slides/tree/main
|
|
155
|
+
bug_tracker_uri: https://github.com/lucianghinda/jekyll-slides/issues
|
|
156
|
+
changelog_uri: https://github.com/lucianghinda/jekyll-slides/blob/main/CHANGELOG.md
|
|
157
|
+
rubygems_mfa_required: 'true'
|
|
158
|
+
rdoc_options: []
|
|
159
|
+
require_paths:
|
|
160
|
+
- lib
|
|
161
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
|
+
requirements:
|
|
163
|
+
- - ">="
|
|
164
|
+
- !ruby/object:Gem::Version
|
|
165
|
+
version: '3.1'
|
|
166
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
|
+
requirements:
|
|
168
|
+
- - ">="
|
|
169
|
+
- !ruby/object:Gem::Version
|
|
170
|
+
version: '0'
|
|
171
|
+
requirements: []
|
|
172
|
+
rubygems_version: 4.0.11
|
|
173
|
+
specification_version: 4
|
|
174
|
+
summary: Polished technical presentations from Markdown for Jekyll
|
|
175
|
+
test_files: []
|