jekyll-microtypo 0.0.9 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd8d196c2e76e6df127fd5d2551b9c34415295e1
4
- data.tar.gz: b98d1980b8e244f7ac40460a06538cd0b8c7649b
3
+ metadata.gz: '0628e2b5c2f6a7fa37b390567655df106eaad46f'
4
+ data.tar.gz: 5f85d6275246f9e39c6a612b781e112c6da7befd
5
5
  SHA512:
6
- metadata.gz: 51a98fc9b1314675bd860f84349d5be9cef8ad8da7a1766f8ff47e283ff8181d4667576a0056afb65d189126747b02a18572a29d8ae8fe5c0ef8a2a5cfb30d7b
7
- data.tar.gz: e4110abe9bc7d7321eb5002638e45b4df5896b3237f55e14c87f0f8238883790b5d1da2cade74c050c19840c5a4ca187cf6f75be3e9e77790273cef4b586d9ba
6
+ metadata.gz: f4884f750e414590c4f90a7b1bad3a07ec2445b7b8f0f57bc8ea32866790f9a28b73d16a13e930e61e2ed30bd0ef522769b15aa134c66fdd0cfb2f97e37e089d
7
+ data.tar.gz: 5533853d81f6e15c26ea6226d182fb4a2d0043471b31b5e5cccff520dc646cf027c8349d7b89b3e009fc5f05ed73b501017edd0a96b1adabae510d6dbb6de796
data/Gemfile CHANGED
@@ -2,6 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in jekyll-post-files.gemspec
4
4
  gemspec
5
-
6
- # Added at 2017-12-13 09:26:02 +0100 by boris:
7
- gem "gem-release", "~> 1.0"
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
3
 
4
4
  task :default => :spec
5
5
 
6
6
  Rake::TestTask.new do |t|
7
- t.libs << 'test'
7
+ t.libs << 'test'
8
8
  end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Microtypo
3
- VERSION = "0.0.9".freeze
3
+ VERSION = '0.1.2'.freeze
4
4
  end
5
5
  end
@@ -1,97 +1,120 @@
1
1
  module Jekyll
2
- module Microtypo
3
- # Example:
4
- # {{ content | microtypo: "fr_FR" }}
5
- def microtypo(input, locale = nil)
6
- locale = 'en_US'.freeze unless locale
7
-
8
- arrayResponse = []
9
-
10
- # <pre></pre> management
11
- # Replace \n in <pre> by <br />\n in order to keep line break visualy
12
- preArray = input.to_s.split('<pre'.freeze)
13
- preArray.each do |input|
14
- endPreArray = input.to_s.split('</pre>'.freeze)
15
- if endPreArray.size == 2
16
- arrayResponse.push('<pre'.freeze)
17
- arrayResponse.push(endPreArray.first)
18
- arrayResponse.push('</pre>'.freeze)
19
- end
20
- input = endPreArray.last
21
-
22
- # <!-- nomicrotypo --><!-- endnomicrotypo --> management
23
- noFixCommentArray = input.to_s.split('<!-- nomicrotypo -->'.freeze)
24
- noFixCommentArray.each do |input|
25
- endNoFixCommentArray = input.to_s.split('<!-- endnomicrotypo -->'.freeze)
26
- if endNoFixCommentArray.size == 2
27
- arrayResponse.push(endNoFixCommentArray.first)
28
- end
29
- input = endNoFixCommentArray.last
30
-
31
- # <script></script> management
32
- scriptArray = input.to_s.split('<script'.freeze)
33
- scriptArray.each do |input|
34
- endScriptArray = input.to_s.split('</script>'.freeze)
35
- if endScriptArray.size == 2
36
- arrayResponse.push('<script'.freeze)
37
- arrayResponse.push(endScriptArray.first)
38
- arrayResponse.push('</script>'.freeze)
39
- end
40
- input = endScriptArray.last
41
-
42
- if locale == 'fr_FR'
43
-
44
- # 1er, 3ème, 4ème…
45
- input.gsub!(/(\d)(e|è)(r|me)?([\s.,])/, '\1<sup>\2\3</sup>\4'.freeze)
46
-
47
- # Guillemets à la française
48
- input.gsub!(/(&ldquo;|“|«)(\s|&nbsp;| )*/, '«&#8239;'.freeze)
49
- input.gsub!(/(\s|&nbsp;| )*(&rdquo;|”|»)/, '&#8239;»'.freeze)
50
-
51
- # Special punctuation
52
- input.gsub!(/ \?\!([^\w]|$)/, '&#8239;&#8264;\1'.freeze)
53
- input.gsub!(/ \!\?([^\w]|$)/, '&#8239;&#8265;\1'.freeze)
54
- input.gsub!(/ \!\!\!([^\w]|$)/, '&#8239;&#8252;\1'.freeze)
55
- input.gsub!(/ \!\!([^\w]|$)/, '&#8239;&#8252;\1'.freeze)
56
-
57
- # Thin non-breaking space before '%', ';', '!', '?', 'px'
58
- input.gsub!(/(\s)+(\d+)(\s)?(px|%)(\s|.)/, '\1\2&#8239;\4\5'.freeze)
59
- input.gsub!(/ (%|;|\!|\?)([^\w!]|$)/, '&#8239;\1\2'.freeze)
60
-
61
- # non-breaking space
62
- input.gsub!(' :'.freeze, '&nbsp;:'.freeze)
63
-
64
- # Currencies
65
- input.gsub!(/(\d+)\s*($|€)/, '\1&nbsp;\2'.freeze)
66
-
67
- # nbsp after middle dash (dialogs)
68
- input.gsub!(/(—|&mdash;)(\s)/, '\1&nbsp;'.freeze)
69
-
70
- # Times
71
- input.gsub!(/(\s)+(\d+)(\s)*x(\s)*(?=\d)/, '\1\2&nbsp;&times;&nbsp;\5'.freeze)
72
-
73
- elsif locale == 'en_US'
74
-
75
- # Remove useless spaces
76
- input.gsub!(/ (:|%|;|\!|\?)([^\w!]|$)/, '\1\2'.freeze)
77
-
78
- # Currencies
79
- input.gsub!(/($|€)\s*(\d+)/, '\1\2'.freeze)
80
-
81
- end
82
-
83
- # Elipsis
84
- input.gsub!('...', '&#8230;'.freeze)
85
-
86
- arrayResponse.push input
87
- end
88
- end
2
+ module Microtypo
3
+ @@settings = []
4
+
5
+ def get_settings
6
+ if @@settings.none?
7
+ @@settings = Jekyll.configuration({})['microtypo'] || {}
8
+ end
9
+ @@settings
10
+ end
11
+
12
+ # Example:
13
+ # {{ content | microtypo: "fr_FR" }}
14
+ def microtypo(input, locale = nil, settings = {})
15
+ if settings.none?
16
+ settings = get_settings
17
+ end
18
+ settings['median'] ||= false
19
+
20
+ locale ||= 'en_US'.freeze
21
+
22
+ array_response = []
23
+
24
+ # <pre></pre> management
25
+ # Replace \n in <pre> by <br />\n in order to keep line break visualy
26
+ pre_array = input.to_s.split('<pre'.freeze)
27
+ pre_array.each do |input|
28
+ end_pre_array = input.to_s.split('</pre>'.freeze)
29
+ if end_pre_array.size == 2
30
+ array_response.push('<pre'.freeze)
31
+ array_response.push(end_pre_array.first)
32
+ array_response.push('</pre>'.freeze)
33
+ end
34
+ input = end_pre_array.last
35
+
36
+ # <!-- nomicrotypo --><!-- endnomicrotypo --> management
37
+ no_fix_comment_array = input.to_s.split('<!-- nomicrotypo -->'.freeze)
38
+ no_fix_comment_array.each do |input|
39
+ endno_fix_comment_array = input.to_s.split('<!-- endnomicrotypo -->'.freeze)
40
+ if endno_fix_comment_array.size == 2
41
+ array_response.push(endno_fix_comment_array.first)
42
+ end
43
+ input = endno_fix_comment_array.last
44
+
45
+ # <script></script> management
46
+ script_array = input.to_s.split('<script'.freeze)
47
+ script_array.each do |input|
48
+ end_script_array = input.to_s.split('</script>'.freeze)
49
+ if end_script_array.size == 2
50
+ array_response.push('<script'.freeze)
51
+ array_response.push(end_script_array.first)
52
+ array_response.push('</script>'.freeze)
89
53
  end
54
+ input = end_script_array.last
55
+
56
+ if locale == 'fr_FR'
57
+
58
+ # Ordinals
59
+ input.gsub!(/(\d)(e|è)(r|me)?([\s.,])/, '\1<sup>\2\3</sup>\4'.freeze)
60
+
61
+ # Num
62
+ input.gsub!(/n°\s*(\d)/, 'n<sup>o</sup>&#8239;\1'.freeze)
63
+
64
+ # French Guillemets
65
+ input.gsub!(/(&ldquo;|“|«)(\s|&nbsp;| )*/, '«&#8239;'.freeze)
66
+ input.gsub!(/(\s|&nbsp;| )*(&rdquo;|”|»)/, '&#8239;»'.freeze)
67
+
68
+ # Point median
69
+
70
+ if settings['median'] == true
71
+ input.gsub!(/(\p{L}+)(·\p{L}+)((·)(\p{L}+))?/, '\1<span aria-hidden="true">\2\4</span>\5'.freeze)
72
+ end
73
+
74
+ # Special punctuation
75
+ input.gsub!(/(\s)+\?\!([^\w]|$)/, '&#8239;&#8264;\2'.freeze)
76
+ input.gsub!(/(\s)+\!\?([^\w]|$)/, '&#8239;&#8265;\2'.freeze)
77
+ input.gsub!(/(\s)+\!\!\!([^\w]|$)/, '&#8239;&#8252;\2'.freeze)
78
+ input.gsub!(/(\s)+\!\!([^\w]|$)/, '&#8239;&#8252;\2'.freeze)
79
+
80
+ # Thin non-breaking space before '%', ';', '!', '?', 'px'
81
+ input.gsub!(/(\s)+(\d+)(\s)?(px|%)(\s|.)/, '\1\2&#8239;\4\5'.freeze)
82
+ input.gsub!(/ (%|;|\!|\?)([^\w!]|$)/, '&#8239;\1\2'.freeze)
83
+
84
+ # non-breaking space
85
+ input.gsub!(' :'.freeze, '&nbsp;:'.freeze)
90
86
 
91
- # Clean empty lines
92
- arrayResponse.join.gsub(/\A\s*\n$/, ''.freeze)
87
+ # Currencies
88
+ input.gsub!(/(\d+)\s*($|€)/, '\1&nbsp;\2'.freeze)
89
+
90
+ # nbsp after middle dash (dialogs)
91
+ input.gsub!(/(—|&mdash;)(\s)/, '\1&nbsp;'.freeze)
92
+
93
+ # Times
94
+ input.gsub!(/(\s)+(\d+)(\s)*x(\s)*(?=\d)/, '\1\2&nbsp;&times;&nbsp;\5'.freeze)
95
+
96
+ elsif locale == 'en_US'
97
+
98
+ # Remove useless spaces
99
+ input.gsub!(/ (:|%|;|\!|\?)([^\w!]|$)/, '\1\2'.freeze)
100
+
101
+ # Currencies
102
+ input.gsub!(/($|€)\s*(\d+)/, '\1\2'.freeze)
103
+
104
+ end
105
+
106
+ # Elipsis
107
+ input.gsub!('...', '&#8230;'.freeze)
108
+
109
+ array_response.push input
110
+ end
93
111
  end
94
- end
95
- end
112
+ end
113
+
114
+ # Clean empty lines
115
+ array_response.join.gsub(/\A\s*\n$/, ''.freeze)
116
+ end
117
+ end
118
+ end
96
119
 
97
120
  Liquid::Template.register_filter(Jekyll::Microtypo)
@@ -1 +1 @@
1
- require "jekyll/microtypo"
1
+ require 'jekyll/microtypo'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-microtypo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boris Schapira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-13 00:00:00.000000000 Z
11
+ date: 2017-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -92,6 +92,20 @@ dependencies:
92
92
  - - ">="
93
93
  - !ruby/object:Gem::Version
94
94
  version: 5.8.4
95
+ - !ruby/object:Gem::Dependency
96
+ name: gem-release
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.0'
95
109
  description: " Jekyll plugin that improves microtypography\n"
96
110
  email:
97
111
  - contact@borisschapira.com
@@ -126,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
140
  version: '0'
127
141
  requirements: []
128
142
  rubyforge_project:
129
- rubygems_version: 2.6.12
143
+ rubygems_version: 2.5.2
130
144
  signing_key:
131
145
  specification_version: 4
132
146
  summary: Jekyll plugin that improves microtypography