jekyll-tagslist 1.0.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/.gitignore +22 -0
- data/Gemfile +9 -0
- data/README.md +46 -0
- data/Rakefile +1 -0
- data/jekyll-tagslist.gemspec +25 -0
- data/lib/jekyll-tagslist/tagslist_tag.rb +108 -0
- data/lib/jekyll-tagslist/version.rb +5 -0
- data/lib/jekyll-tagslist.rb +7 -0
- metadata +94 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2fb6ada2ccc1c354b3b7b1b152ae6533be4a51fe
|
4
|
+
data.tar.gz: 2afa5b2fb572ac27e27b253266bec4870d1b1d4a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1fc4ac43942a25ae2757f84b96266a413682dabe0e621db49507fb17d4ff28496764511ceb0eaa834aacc00a9ab35ae2fd014b589440106b87549a5a024a3c28
|
7
|
+
data.tar.gz: fa19fab685a25f67d0686fc786a3e96ced24185dd6701f211271499e3fc515a261609ba9a40d5c20a620ef359fb0ecb4793cb907cfe001d8585109a8bb04f346
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Jekyll Tags List Plugin
|
2
|
+
|
3
|
+
[](https://gitter.im/crispgm/jekyll-tags-list-plugin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
|
+

|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
```
|
9
|
+
<div class="article_tag">
|
10
|
+
{% tags_list :threshold => 1, :show_count => 1, :sort_by => count, :order_by => desc %}
|
11
|
+
</div>
|
12
|
+
```
|
13
|
+
|
14
|
+
## Parameters
|
15
|
+
|
16
|
+
### ```:threshold```
|
17
|
+
* Threshold of tag count
|
18
|
+
* Default Value: 1
|
19
|
+
* Values: Any positive integers
|
20
|
+
|
21
|
+
```:threshold => 1```
|
22
|
+
|
23
|
+
### ```:show_count```
|
24
|
+
* Whether show tag count in tags list
|
25
|
+
* Default Value: 1(which means true)
|
26
|
+
* Set to ```:show_count => 0``` if not need
|
27
|
+
|
28
|
+
```:show_count => 1```
|
29
|
+
|
30
|
+
### ```:sort_by```
|
31
|
+
* Default Value: name
|
32
|
+
* Values: name|count|time
|
33
|
+
|
34
|
+
```:sort_by => count```
|
35
|
+
|
36
|
+
### ```:order_by```
|
37
|
+
* Default Value: asc
|
38
|
+
* Values: asc|desc
|
39
|
+
|
40
|
+
```:order_by => desc```
|
41
|
+
|
42
|
+
# Example
|
43
|
+
|
44
|
+
[https://crisp.lol/archive.html](https://crisp.lol/archive.html)
|
45
|
+
|
46
|
+
Notice: The blog posts might be in Chinese.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jekyll-tagslist/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "jekyll-tagslist"
|
8
|
+
spec.version = Jekyll::Tagslist::VERSION
|
9
|
+
spec.authors = ["David Zhang"]
|
10
|
+
spec.email = ["crispgm@gmail.com"]
|
11
|
+
spec.summary = "A Liquid tag plugin for Jekyll."
|
12
|
+
spec.homepage = "https://github.com/crispgm/jekyll-tags-list-plugin"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.required_ruby_version = '>= 1.9.3'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
# spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
23
|
+
spec.add_development_dependency "rake"
|
24
|
+
spec.add_development_dependency "jekyll", ">= 2.0"
|
25
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) David Zhang, 2016
|
3
|
+
# MIT License
|
4
|
+
#
|
5
|
+
|
6
|
+
module Jekyll
|
7
|
+
|
8
|
+
module Tagslist
|
9
|
+
|
10
|
+
class TagslistTag < Liquid::Tag
|
11
|
+
|
12
|
+
def initialize(tag_name, text, tokens)
|
13
|
+
super
|
14
|
+
|
15
|
+
@text = text
|
16
|
+
|
17
|
+
# set default values
|
18
|
+
@threshold = 1
|
19
|
+
|
20
|
+
# Default: asc
|
21
|
+
# Value: asc, desc
|
22
|
+
@order_by = 'asc'
|
23
|
+
|
24
|
+
# Default: name
|
25
|
+
# Value: name, time, count
|
26
|
+
@sort_by = 'count'
|
27
|
+
|
28
|
+
@show_count = 1
|
29
|
+
|
30
|
+
parse_params
|
31
|
+
end # end of initialize
|
32
|
+
|
33
|
+
def render(context)
|
34
|
+
tags = context.registers[:site].tags.map do |tag, posts|
|
35
|
+
[tag, posts.count] if posts.count >= @threshold
|
36
|
+
end
|
37
|
+
|
38
|
+
tags.compact!
|
39
|
+
|
40
|
+
if @sort_by.eql? 'time'
|
41
|
+
if @order_by.eql? 'desc'
|
42
|
+
tags.reverse
|
43
|
+
end
|
44
|
+
else
|
45
|
+
tags.sort! do |tag1, tag2|
|
46
|
+
sort_seq = 0
|
47
|
+
if @sort_by.eql? 'name'
|
48
|
+
sort_seq = 0
|
49
|
+
elsif @sort_by.eql? 'count'
|
50
|
+
sort_seq = 1
|
51
|
+
end
|
52
|
+
|
53
|
+
if @order_by.eql? 'asc'
|
54
|
+
tag1[sort_seq] <=> tag2[sort_seq]
|
55
|
+
else
|
56
|
+
tag2[sort_seq] <=> tag1[sort_seq]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
html = ""
|
62
|
+
|
63
|
+
tags.each do |tag, count|
|
64
|
+
count_html = @show_count == 0 ? "" : "<div class=\"tag_item_count\">#{count}</div>"
|
65
|
+
html << "<div class=\"tag_item\"><div class=\"tag_item_name\">#{tag}</div>#{count_html}</div>\n"
|
66
|
+
end
|
67
|
+
|
68
|
+
html
|
69
|
+
end # end of render
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def parse_params
|
74
|
+
params = @text.split(',')
|
75
|
+
params.each do |param|
|
76
|
+
key_vals = param.split('=>', 2)
|
77
|
+
param_name = key_vals[0].strip
|
78
|
+
param_value = key_vals[1].strip
|
79
|
+
|
80
|
+
if param_name.eql? ':threshold'
|
81
|
+
param_value = param_value.to_i
|
82
|
+
@threshold = param_value if param_value > 0
|
83
|
+
elsif param_name.eql? ':show_count'
|
84
|
+
param_value = param_value.to_i
|
85
|
+
@show_count = 0 if param_value == 0
|
86
|
+
elsif param_name.eql? ':order_by'
|
87
|
+
@order_by = 'desc' if param_value.eql? 'desc'
|
88
|
+
elsif param_name.eql? ':sort_by'
|
89
|
+
if param_value.eql? 'time'
|
90
|
+
@sort_by = 'time'
|
91
|
+
elsif param_value.eql? 'count'
|
92
|
+
@sort_by = 'count'
|
93
|
+
else
|
94
|
+
@sort_by = 'name'
|
95
|
+
end
|
96
|
+
else
|
97
|
+
next
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end # end of parse_params
|
101
|
+
|
102
|
+
end # end of class
|
103
|
+
|
104
|
+
end # end of module
|
105
|
+
|
106
|
+
end # end of module
|
107
|
+
|
108
|
+
Liquid::Template.register_tag('tags_list', Jekyll::Tagslist::TagslistTag)
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-tagslist
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David Zhang
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-06-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: jekyll
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.0'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- crispgm@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- Gemfile
|
64
|
+
- README.md
|
65
|
+
- Rakefile
|
66
|
+
- jekyll-tagslist.gemspec
|
67
|
+
- lib/jekyll-tagslist.rb
|
68
|
+
- lib/jekyll-tagslist/tagslist_tag.rb
|
69
|
+
- lib/jekyll-tagslist/version.rb
|
70
|
+
homepage: https://github.com/crispgm/jekyll-tags-list-plugin
|
71
|
+
licenses:
|
72
|
+
- MIT
|
73
|
+
metadata: {}
|
74
|
+
post_install_message:
|
75
|
+
rdoc_options: []
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.9.3
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
requirements: []
|
89
|
+
rubyforge_project:
|
90
|
+
rubygems_version: 2.6.4
|
91
|
+
signing_key:
|
92
|
+
specification_version: 4
|
93
|
+
summary: A Liquid tag plugin for Jekyll.
|
94
|
+
test_files: []
|