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 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
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ if ENV["GH_PAGES"]
5
+ gem "github-pages"
6
+ elsif ENV["JEKYLL_VERSION"]
7
+ gem "jekyll", "~> #{ENV["JEKYLL_VERSION"]}"
8
+ end
9
+
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)
@@ -0,0 +1,5 @@
1
+ module Jekyll
2
+ module Tagslist
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require "jekyll-tagslist/version"
2
+ require "jekyll-tagslist/tagslist_tag"
3
+
4
+ module Jekyll
5
+ module Tagslist
6
+ end
7
+ end
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: []