jekyll-tagslist 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Join the chat at https://gitter.im/crispgm/jekyll-tags-list-plugin](https://badges.gitter.im/crispgm/jekyll-tags-list-plugin.svg)](https://gitter.im/crispgm/jekyll-tags-list-plugin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
|
+
![](https://img.shields.io/badge/license-MIT-blue.svg)
|
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: []
|