jekyll-kw-shorten 0.0.11 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e593496e1b6a803fc2ccad35c0e477fefe1fb7fa1f9d5ae4431a84a9c99395f
4
- data.tar.gz: 27ad67e6058c04547fc482d58e9b12bf9f06685ce01ff966b5e7fd7302348801
3
+ metadata.gz: d36305251ad0bc1150e99c902682c9c73b65afe4f816d4a86d15736112f196cc
4
+ data.tar.gz: 5164f0b8763c5a53ec0de2856f389d85769ad3ced8c6d65c380056fcf8e6ff74
5
5
  SHA512:
6
- metadata.gz: cf3e5f9f35fad937a511661d3a6ab694046dc8fe178e84a234c195e46766d3291d2438c0990cba4b534d129d87d951865d4cb8903fe9009b9263cf664a217bf0
7
- data.tar.gz: ece39f6384277d0f5f32fc6c32a79c3903099343cf4d0cea6682fae432814240dffdfe3817852e0339dc4d17db2019a8f400306e2582c415d8de4b63691bc933
6
+ metadata.gz: 9ebeae46e07ae73f34acc940cbbdd275abec21543dfee39c9f01365ba2b033ed712700a13519c227b2f082b84cd3fa1334f479282d9ebf5f0e5371fbb8904823
7
+ data.tar.gz: bd09589257f177bc1259c3b490b2ed54d8c676285effd4d58c0c5b65f432e92ce83e3415d54e66aad224e54a5b22f17ff368fba6eed3a486522d59588224d692
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 n13.org
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,27 +1,125 @@
1
+ # jekyll-kw-shorten
1
2
 
2
- The project `jekyll-kw-shorten` is a **[filter](https://jekyllrb.com/docs/plugins/filters/)** plug-in for a [jekyll](https://jekyllrb.com/) static page blog.
3
+ ![CI](https://github.com/n13org/jekyll-kw-shorten/workflows/CI/badge.svg)
4
+ ![Coverage](https://github.com/n13org/jekyll-kw-shorten/workflows/Coverage/badge.svg)
5
+ ![RuboCop](https://github.com/n13org/jekyll-kw-shorten/workflows/RuboCop/badge.svg)
6
+
7
+ [![Maintainability](https://api.codeclimate.com/v1/badges/efd40b09af4719e928bb/maintainability)](https://codeclimate.com/github/n13org/jekyll-kw-shorten/maintainability)
8
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/efd40b09af4719e928bb/test_coverage)](https://codeclimate.com/github/n13org/jekyll-kw-shorten/test_coverage)
9
+
10
+ [![Gem Version](https://badge.fury.io/rb/jekyll-kw-shorten.svg)](https://badge.fury.io/rb/jekyll-kw-shorten)
11
+
12
+ A jekyll plugin which can shorten long numbers, e.g. 1000 ➜ 1K or 1000000 ➜ 1M.
13
+
14
+ The project `jekyll-kw-shorten` is a plug-in for a [jekyll](https://jekyllrb.com/) static page blog. It can be used as **[filter](https://jekyllrb.com/docs/plugins/filters/)** and as **[tag](https://jekyllrb.com/docs/plugins/tag/)**.
3
15
 
4
16
  It is published on [rubygems.org](https://rubygems.org/gems/jekyll-kw-shorten), the source code is hosted on [GitHub](https://github.com/n13org/jekyll-kw-shorten).
5
17
 
6
18
  ## Usage
7
19
 
8
- * {{ "txt" | shorten }}
9
- * {{ "text with spaces" | shorten }}
10
- * {{ 500 | shorten }}
11
- * {{ 777 | shorten }}
12
- * {{ 1000 | shorten }}
13
- * {{ 1200 | shorten }}
14
- * {{ 1450 | shorten }}
15
- * {{ 1777 | shorten }}
16
- * {{ 12345 | shorten }}
17
- * {{ 1000000 | shorten }}
18
- * {{ 1110000 | shorten }}
19
- * {{ 1000000000 | shorten }}
20
+ Use the filter `{{ 1234 | shorten }}` or the tag `{% shorten 1234 %}` inside your markdown blog post file to get `1.2 K`.
21
+
22
+ The plug-in supports
23
+
24
+ * positiv numbers
25
+ * negativ numbers with leading `-` or `- `.
26
+ * float numbers (when multiple dots are in the text only the part to the first will be taken)
27
+ * Text with no numbers inside will simply echoed
28
+ * Text with numbers, will be reduced to just the digits
29
+ * Show a rocket `∞ 🚀` for very huge values (>= 1000000000000)
30
+ * Float numbers will be rounded
31
+
32
+ ### Examples as Jekyll Tag
33
+
34
+ | Syntax | OK | Result |
35
+ |-------------------------------|:--:|----------|
36
+ | {% shorten "MyText" %} | ✔️ | "MyText" |
37
+ | {% shorten MyText %} | ✔️ | MyText |
38
+ | {% shorten "My43Text" %} | ✔️ | 43 |
39
+ | {% shorten "My43.56Text" %} | ✔️ | 44 |
40
+ | {% shorten "My43.56.7Text" %} | ✔️ | 44 |
41
+ | {% shorten "1234" %} | ✔️ | 1.2 K |
42
+ | {% shorten 1 %} | ✔️ | 1 |
43
+ | {% shorten -22 %} | ✔️ | -22 |
44
+ | {% shorten - 44 %} | ✔️ | -44 |
45
+ | {% shorten 1000 %} | ✔️ | 1.0 K |
46
+ | {% shorten 1000000 %} | ✔️ | 1.0 M |
47
+ | {% shorten 1000000000 %} | ✔️ | 1.0 B |
48
+ | {% shorten 1000000000000 %} | ✔️ | ∞ 🚀 |
49
+
50
+ ### Examples as Jekyll Filter
51
+
52
+ | Syntax | OK | Result |
53
+ |----------------------------------|:--:|----------|
54
+ | {{ "MyText" \| shorten }} | ✔️ | "MyText" |
55
+ | {{ MyText \| shorten }} | ❌ | |
56
+ | {{ "My43Text" \| shorten }} | ✔️ | 43 |
57
+ | {{ "My43.56Text" \| shorten }} | ✔️ | 44 |
58
+ | {{ "My43.56.7Text" \| shorten }} | ✔️ | 44 |
59
+ | {{ "1234" \| shorten }} | ✔️ | 1.2 K |
60
+ | {{ 1 \| shorten }} | ✔️ | 1 |
61
+ | {{ -22 \| shorten }} | ✔️ | -22 |
62
+ | {{ - 44 \| shorten }} | ❌ | |
63
+ | {{ 1000 \| shorten }} | ✔️ | 1.0 K |
64
+ | {{ 1000000 \| shorten }} | ✔️ | 1.0 M |
65
+ | {{ 1000000000 \| shorten }} | ✔️ | 1.0 B |
66
+ | {{ 1000000000000 \| shorten }} | ✔️ | ∞ 🚀 |
67
+
68
+ **HINTS**:
69
+
70
+ * The filter `{{ MyText | shorten }}` will show nothing (empty string). The filter "thinks" the MyText is a variable (with the value nil). Numbers can be used with and without quotes. Text must be wrapped in quotes.
71
+ * The filter `{{ - 44 | shorten }}` will show nothing (empty string). The filter tries to parse the `-` as first part, not the number behind.
20
72
 
21
73
  ## Installation
22
74
 
75
+ Add `jekyll-kw-shorten` plugin in your Gemfile inside the `jekyll_plugins` group.
76
+
77
+ ```ruby
78
+ group :jekyll_plugins do
79
+ ...
80
+ gem "jekyll-kw-shorten"
81
+ ...
82
+ end
83
+ ```
84
+
85
+ Run `bundle install` to install the gem and update the Gemfile.lock.
86
+
87
+ Add `jekyll-kw-shorten` to the plugins section in your site's `_config.yml`. Then [configure](#configuration) your plug-in.
88
+
89
+ ```yaml
90
+ plugins:
91
+ - jekyll-kw-shorten
92
+ ```
93
+
23
94
  ## Configuration
24
95
 
25
- ## Contribution
96
+ Add the setting to your `_config.yml` file. Details you can find in the [documentation](https://jekyllrb.com/docs/configuration/). The name of the group is `jekyll-kw-shorten`.
97
+
98
+ * **shorten_gt3_digit** will be used for numbers between 1000 and 999999. Default is `' K'`.
99
+ * **shorten_gt6_digit** will be used for numbers between 1000000 and 999999999. Default is `' M'`.
100
+ * **shorten_gt9_digit** will be used for numbers between 1000000000 and 999999999999. Default is `' B'`.
101
+
102
+ ```yaml
103
+ ...
104
+ jekyll-kw-shorten:
105
+ shorten_gt3_digit: ' K'
106
+ shorten_gt6_digit: ' M'
107
+ shorten_gt9_digit: ' B'
108
+ ...
109
+ ```
110
+
111
+ When the config values are omit then the default values are used.
26
112
 
27
113
  ## Test locally
114
+
115
+ Run linting
116
+
117
+ ```shell
118
+ bundle exec rubocop
119
+ ```
120
+
121
+ Run tests
122
+
123
+ ```shell
124
+ bundle exec rake test
125
+ ```
@@ -35,11 +35,11 @@ module Jekyll
35
35
 
36
36
  # shorten filter {{ number | shorten }} for Jekyll
37
37
  module ShortenFilter
38
- def shorten(number)
38
+ def shorten(input)
39
39
  parser = Jekyll::KargWare::Shorten::Parser.new(
40
40
  Jekyll::KargWare::Shorten.get_plugin_config(@context)
41
41
  )
42
- parser.parse(number)
42
+ parser.parse(input)
43
43
  end
44
44
  end
45
45
  end
@@ -7,6 +7,9 @@ module Jekyll
7
7
  module Shorten
8
8
  # jekyll-kw-shorten parser class
9
9
  class Parser
10
+ # https://stackoverflow.com/questions/33952093/how-to-allow-only-one-dot-in-regex
11
+ DIGITS_AND_SINGLE_DOT_ESCAPE_REGEXP = /(-?\s?[0-9]+(\.[0-9]+)?)/.freeze
12
+
10
13
  attr_reader :configuration
11
14
 
12
15
  def initialize(options = {})
@@ -14,10 +17,11 @@ module Jekyll
14
17
  end
15
18
 
16
19
  def parse(text)
17
- return text unless Parser.number?(text)
20
+ num = Parser.only_float_numbers(text)
21
+
22
+ return text unless Parser.number?(num)
18
23
 
19
24
  begin
20
- num = text.to_f
21
25
  if num >= 1000000000000
22
26
  '∞ 🚀'
23
27
  elsif num >= 1000000000
@@ -43,9 +47,16 @@ module Jekyll
43
47
 
44
48
  def self.number?(string)
45
49
  true if Float(string)
50
+ # true if Float(Parser.only_float_numbers(string))
46
51
  rescue StandardError
47
52
  false
48
53
  end
54
+
55
+ def self.only_float_numbers(input)
56
+ input.to_s.scan(DIGITS_AND_SINGLE_DOT_ESCAPE_REGEXP).first.first.to_f
57
+ rescue StandardError
58
+ input
59
+ end
49
60
  end
50
61
  end
51
62
  end
@@ -4,7 +4,7 @@ module Jekyll
4
4
  module KargWare
5
5
  module Shorten
6
6
  RUBYGEM_NAME = 'jekyll-kw-shorten'
7
- VERSION = '0.0.11'
7
+ VERSION = '0.2.1'
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-kw-shorten
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Karg
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-04 00:00:00.000000000 Z
12
+ date: 2021-01-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jekyll
@@ -25,24 +25,28 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '3.8'
28
- description: " A template project for jekyll plugins with some additional content\n"
28
+ description: |2
29
+ A jekyll plugin which can shorten long numbers, e.g. 1000 ➜ 1K or 1000000 ➜ 1M.
30
+
31
+ It can be used as filter `{{ 1234 | shorten }}` and as tag `{% shorten 1234 %}`, the result will be **1.2 K**
29
32
  email:
30
33
  - rubygems.org@n13.org
31
34
  executables: []
32
35
  extensions: []
33
36
  extra_rdoc_files: []
34
37
  files:
38
+ - LICENSE
35
39
  - README.md
36
40
  - lib/jekyll-kw-shorten.rb
37
41
  - lib/jekyll/KargWare/Shorten/configuration.rb
38
42
  - lib/jekyll/KargWare/Shorten/parser.rb
39
43
  - lib/jekyll/KargWare/Shorten/version.rb
40
- homepage: https://notes.n13.org/rubygems
44
+ homepage: https://n13.org/rubygems
41
45
  licenses: []
42
46
  metadata:
43
- homepage_uri: https://notes.n13.org/rubygems
44
- bug_tracker_uri: https://github.com/n13org/jekyll-plugin-template/issues
45
- source_code_uri: https://github.com/n13org/jekyll-plugin-template
47
+ homepage_uri: https://n13.org/rubygems
48
+ bug_tracker_uri: https://github.com/n13org/jekyll-kw-shorten/issues
49
+ source_code_uri: https://github.com/n13org/jekyll-kw-shorten
46
50
  post_install_message:
47
51
  rdoc_options: []
48
52
  require_paths:
@@ -51,7 +55,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
51
55
  requirements:
52
56
  - - ">="
53
57
  - !ruby/object:Gem::Version
54
- version: 2.3.0
58
+ version: 2.5.0
55
59
  required_rubygems_version: !ruby/object:Gem::Requirement
56
60
  requirements:
57
61
  - - ">="
@@ -61,5 +65,5 @@ requirements: []
61
65
  rubygems_version: 3.1.2
62
66
  signing_key:
63
67
  specification_version: 4
64
- summary: A template project for jekyll plugins.
68
+ summary: A jekyll plugin to shorten long numbers
65
69
  test_files: []