jekyll-microtypo 0.0.9 → 0.1.2

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
  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