jekyll-tagslist 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []