jekyll_bootstrap5_tabs 1.0.0 → 1.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 +4 -4
- data/README.md +65 -18
- data/docs/tabDemo.gif +0 -0
- data/jekyll_bootstrap5_tabs.gemspec +40 -0
- data/lib/jekyll_bootstrap5_tabs/version.rb +1 -1
- data/lib/jekyll_bootstrap5_tabs.rb +35 -3
- data/pkg/jekyll_bootstrap5_tabs-1.0.0.gem +0 -0
- data/pkg/jekyll_bootstrap5_tabs-1.1.0.gem +0 -0
- metadata +5 -3
- data/docs/tab-screen.gif +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0001fdf1657866adc8d206052cb3ca8fa750ccb47cd3c6804ca9bdd12bf8bb0e
|
4
|
+
data.tar.gz: ca58073ce8c9c79c3a6be3cf557cbe14c5c33a5291bff829f6981c6f064cd981
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f360a04ac5d004484ea0c87f063bd16471bb517cdc6a48074cb8c7dfff1695b972609996a77d933f73cd7124699c1d639895e26fe863bbbc274fc19cd5b43a13
|
7
|
+
data.tar.gz: f373db002d72ec38e5f3c0f49aace64c064fca11fd37d3fa6bdfda4a2a39c58a5363805ec2f87bdec59227abd11995cc56d035ad0467d5db7b21025ba31a2cb7
|
data/README.md
CHANGED
@@ -2,15 +2,17 @@ Jekyll Bootstrap 5 Tabs
|
|
2
2
|
[](https://badge.fury.io/rb/jekyll_bootstrap5_tabs)
|
3
3
|
===========
|
4
4
|
|
5
|
+
<img src="docs/tabDemo.gif" width="500" height="auto" />
|
6
|
+
|
5
7
|
The original version, written by Artur Gabitov, expected Markdown and Bootstrap 4.
|
6
|
-
This version requires Bootstrap 5 and HTML, not Markdown.
|
8
|
+
[This version](https://rubygems.org/gems/jekyll_bootstrap5_tabs) requires Bootstrap 5 and HTML, not Markdown.
|
7
9
|
|
8
10
|
|
9
11
|
## Installation
|
10
12
|
|
11
13
|
Add this to your project's `Gemfile`:
|
12
14
|
```ruby
|
13
|
-
gem
|
15
|
+
gem 'jekyll_bootstrap5_tabs'
|
14
16
|
```
|
15
17
|
|
16
18
|
Add this to your project's `_config.yml`:
|
@@ -26,40 +28,56 @@ And then execute:
|
|
26
28
|
|
27
29
|
Or install it yourself as:
|
28
30
|
|
29
|
-
$ gem install
|
31
|
+
$ gem install jekyll_bootstrap5_tabs
|
30
32
|
|
31
33
|
|
32
34
|
## Usage
|
33
35
|
|
34
|
-
Bootstrap 5 is required.
|
36
|
+
Bootstrap 5 is required.
|
37
|
+
One way to include Bootstrap 5 into a page within your project is to add the following HTML into the `<head/>` tag:
|
35
38
|
```html
|
36
39
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
37
40
|
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
|
38
41
|
```
|
39
|
-
...and add this to the bottom of the HTML file:
|
42
|
+
...and add this to the bottom of the HTML file, within the `<body/>` tag:
|
40
43
|
```html
|
41
44
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
42
45
|
```
|
43
46
|
|
44
47
|
See this [working minimal Bootstrap 5 tab example](https://codepen.io/mslinn/pen/OJOjVPR)
|
45
48
|
|
46
|
-
|
49
|
+
|
50
|
+
## Two New Liquid Tags
|
51
|
+
The `jekyll_bootstrap5_tabs` plugin provides two new Liquid tags: `tabs` and `tab`.
|
52
|
+
Jekyll interprets the Liquid language when embedded into HTML pages.
|
53
|
+
|
54
|
+
For example, given the following content in a Jekyll page that has
|
55
|
+
[minimal front matter](https://jekyllrb.com/docs/front-matter/):
|
47
56
|
```
|
48
57
|
---
|
49
58
|
---
|
50
|
-
{% tabs
|
51
|
-
{% tab
|
59
|
+
{% tabs demo %}
|
60
|
+
{% tab demo#Home %}
|
52
61
|
Home at last!
|
53
62
|
{% endtab %}
|
54
|
-
{% tab
|
63
|
+
{% tab demo#Profile %}
|
55
64
|
Profile meeee...
|
56
65
|
{% endtab %}
|
57
|
-
{% tab
|
66
|
+
{% tab demo#Messages %}
|
58
67
|
Messages - I have none
|
59
68
|
{% endtab %}
|
60
69
|
{% endtabs %}
|
61
70
|
```
|
62
|
-
The
|
71
|
+
The outer tabs tag has a name: `demo`.
|
72
|
+
Conceptually, this name defines a namespace scope for the inner `tab` tags, but actually this version does not use the name for any purpose.
|
73
|
+
The inner `tab` tags reference the outer `tabs` tag (yes, this is redundant),
|
74
|
+
and introduces the name of the tab that it defines after the octothorpe (aka hash mark, number sign, and pound sign: #). A Bootstrap 5 tab is created for every `tab` tag, and the `id` for each `tag` is defined by the characters following the octothorpe.
|
75
|
+
This `id` is also displayed as the label for the `tab`, so if you want it capitalized a certain way, specify the tag capitalization in the `tab` tag.
|
76
|
+
|
77
|
+
The current implementation does not allow spaces within tab labels.
|
78
|
+
Instead, tab labels may only consist of one word each.
|
79
|
+
|
80
|
+
The `jekyll_bootstrap5_tabs` plugin will generate code similar to the following.
|
63
81
|
```html
|
64
82
|
<ul class="nav nav-tabs">
|
65
83
|
<li class="nav-item">
|
@@ -74,13 +92,38 @@ The jekyll_bootstrap5_tabs plugin will generate code similar to this:
|
|
74
92
|
</ul>
|
75
93
|
|
76
94
|
<div class="tab-content">
|
77
|
-
<div class="tab-pane active" id="home" aria-labelledby="home-tab">
|
78
|
-
|
79
|
-
|
95
|
+
<div class="tab-pane active" id="home" aria-labelledby="home-tab">
|
96
|
+
<editor_fold Home>
|
97
|
+
Home at last!
|
98
|
+
</editor_fold>
|
99
|
+
</div>
|
100
|
+
<div class="tab-pane" id="profile" aria-labelledby="profile-tab">
|
101
|
+
<editor_fold Profile>
|
102
|
+
Profile meeee...
|
103
|
+
</editor_fold>
|
104
|
+
</div>
|
105
|
+
<div class="tab-pane" id="messages" aria-labelledby="messages-tab">
|
106
|
+
<editor_fold Messages>
|
107
|
+
Messages - I have none
|
108
|
+
</editor_fold>
|
109
|
+
</div>
|
80
110
|
</div>
|
81
111
|
```
|
82
112
|
|
83
|
-
|
113
|
+
### New for Version 1.1.0
|
114
|
+
By default, the output is not pretty-printed.
|
115
|
+
However, you can enable pretty-printing for a single set of tabs by including the `pretty` keyword in the `tabs` tag, like this:
|
116
|
+
```
|
117
|
+
{% tabs demo pretty %}
|
118
|
+
... tab tags go here
|
119
|
+
{% endtabs%}
|
120
|
+
```
|
121
|
+
|
122
|
+
You can enable pretty-printing for the entire site by adding the following to `_config.yaml`:
|
123
|
+
```yaml
|
124
|
+
jekyll_bootstrap5_tabs:
|
125
|
+
- pretty: true
|
126
|
+
```
|
84
127
|
|
85
128
|
|
86
129
|
## Building
|
@@ -117,14 +160,18 @@ Now go use the gem in a Jekyll project!
|
|
117
160
|
|
118
161
|
## Development
|
119
162
|
|
120
|
-
After checking out the repo, run `bin/setup` to install dependencies.
|
163
|
+
After checking out the repo, run `bin/setup` to install dependencies.
|
164
|
+
You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
121
165
|
|
122
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
166
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
167
|
+
To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`,
|
168
|
+
which will create a git tag for the version, push git commits and the created tag,
|
169
|
+
and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
123
170
|
|
124
171
|
|
125
172
|
## Contributing
|
126
173
|
|
127
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/mslinn/jekyll-
|
174
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/mslinn/jekyll-bootstrap5-tabs.
|
128
175
|
|
129
176
|
|
130
177
|
## License
|
data/docs/tabDemo.gif
ADDED
Binary file
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/jekyll_bootstrap5_tabs/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'jekyll_bootstrap5_tabs'
|
7
|
+
spec.version = JekyllBootstrap5Tabs::VERSION
|
8
|
+
spec.authors = ['Artur Gabitov', 'Mike Slinn']
|
9
|
+
spec.email = ['applifort@gmail.com', 'mslinn@mslinn.com']
|
10
|
+
|
11
|
+
spec.summary = 'Jekyll plugin for Bootstrap 5 tabs'
|
12
|
+
spec.description = 'Enables Bootstrap 5 tabs in Jekyll 4 websites.'
|
13
|
+
spec.homepage = 'https://mslinn.com/blog/2022/02/13/jekyll-gem.html'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
spec.required_ruby_version = '>= 2.6.0'
|
16
|
+
|
17
|
+
# spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
|
18
|
+
|
19
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
+
spec.metadata["source_code_uri"] = 'https://github.com/mslinn/jekyll_bootstrap5_tabs'
|
21
|
+
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
22
|
+
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
27
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
spec.bindir = 'bin'
|
32
|
+
spec.executables = spec.files.grep(%r{\Abin/}) { |f| File.basename(f) }
|
33
|
+
spec.require_paths = ['lib']
|
34
|
+
|
35
|
+
spec.add_dependency 'jekyll', '>= 3.0'
|
36
|
+
spec.add_dependency 'slim', '~> 3.0'
|
37
|
+
|
38
|
+
# For more information and examples about making a new gem, check out our
|
39
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
40
|
+
end
|
@@ -13,7 +13,28 @@ module JekyllBootstrap5Tabs
|
|
13
13
|
|
14
14
|
raise SyntaxError.new("#{tag} requires name") if args.empty?
|
15
15
|
|
16
|
-
|
16
|
+
argv = args.strip.split ' '
|
17
|
+
@tab_name = argv[0] # TODO @tab_name is never used. Should act as a namespace.
|
18
|
+
|
19
|
+
# Usage can override default and enable pretty-printing, not possible to disable per-tab
|
20
|
+
@pretty_print = false
|
21
|
+
if argv.length>1 && argv[1].downcase == 'pretty'
|
22
|
+
@pretty_print = true
|
23
|
+
puts "Bootstrap tab pretty-printing is enabled for {@tab_name}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param config [YAML] Configuration data that might contain a entry for `jekyll_bootstrap5_tabs`
|
28
|
+
# @param progname [String] The name of the `option:` subentry to look for underneath the `jekyll_bootstrap5_tabs` entry
|
29
|
+
# @return [TrueClass, FalseClass]
|
30
|
+
def check_config_boolean(config, option)
|
31
|
+
tabs_options = config['jekyll_bootstrap5_tabs']
|
32
|
+
return false if tabs_options.nil?
|
33
|
+
|
34
|
+
hash = tabs_options.detect {|option| option["pretty"] }
|
35
|
+
# puts("*********** tabs_options = #{tabs_options}")
|
36
|
+
# puts("*********** hash = #{hash}")
|
37
|
+
return (not hash.nil?) && hash['pretty']
|
17
38
|
end
|
18
39
|
|
19
40
|
def template_path(template_name)
|
@@ -22,10 +43,20 @@ module JekyllBootstrap5Tabs
|
|
22
43
|
end
|
23
44
|
|
24
45
|
def render(context)
|
25
|
-
|
46
|
+
site = context.registers[:site]
|
47
|
+
# Set the pretty-print option for the Slim engine
|
48
|
+
# Global configuration provides the default value of @pretty_print
|
49
|
+
if check_config_boolean(site.config, 'pretty')
|
50
|
+
@pretty_print = true
|
51
|
+
puts "Bootstrap tab pretty-printing is enabled by default for the entire Jekyll site."
|
52
|
+
end
|
53
|
+
|
54
|
+
@environment = context.environments.first # Has type Jekyll::Drops::UnifiedPayloadDrop
|
55
|
+
#puts("TabsBlock.render: @environment = '#{@environment}'")
|
26
56
|
super
|
27
57
|
|
28
58
|
template_file_path = template_path(DEFAULT_TEMPLATE)
|
59
|
+
Slim::Engine.set_options pretty: @pretty_print
|
29
60
|
template = Slim::Template.new(template_file_path)
|
30
61
|
template.render(self)
|
31
62
|
end
|
@@ -37,13 +68,14 @@ module JekyllBootstrap5Tabs
|
|
37
68
|
super
|
38
69
|
|
39
70
|
@tabs_group, @tab = split_params(args.strip)
|
71
|
+
#puts("TabBlock: @tabs_group = '#{@tabs_group}', @tab = '#{@tab}'")
|
40
72
|
raise SyntaxError.new("Block #{tag} requires tabs name") if @tabs_group.empty? || @tab.empty?
|
41
73
|
end
|
42
74
|
|
43
75
|
def render(context)
|
44
76
|
content = super
|
45
77
|
|
46
|
-
environment = context.environments.first
|
78
|
+
environment = context.environments.first # Has type Jekyll::Drops::UnifiedPayloadDrop
|
47
79
|
environment["tabs-#{@tabs_group}"] ||= {}
|
48
80
|
environment["tabs-#{@tabs_group}"][@tab] = content
|
49
81
|
end
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_bootstrap5_tabs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artur Gabitov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-02-
|
12
|
+
date: 2022-02-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jekyll
|
@@ -52,11 +52,13 @@ files:
|
|
52
52
|
- LICENSE.txt
|
53
53
|
- README.md
|
54
54
|
- Rakefile
|
55
|
-
- docs/
|
55
|
+
- docs/tabDemo.gif
|
56
|
+
- jekyll_bootstrap5_tabs.gemspec
|
56
57
|
- lib/jekyll_bootstrap5_tabs.rb
|
57
58
|
- lib/jekyll_bootstrap5_tabs/version.rb
|
58
59
|
- lib/template.slim
|
59
60
|
- pkg/jekyll_bootstrap5_tabs-1.0.0.gem
|
61
|
+
- pkg/jekyll_bootstrap5_tabs-1.1.0.gem
|
60
62
|
- sig/jekyll_bootstrap5_tabs.rbs
|
61
63
|
homepage: https://mslinn.com/blog/2022/02/13/jekyll-gem.html
|
62
64
|
licenses:
|
data/docs/tab-screen.gif
DELETED
Binary file
|