jekyll-bits 0.4.1 → 0.5

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: 358f13f6d9f79531d32f6fb4c07b7d2952676821
4
- data.tar.gz: 784166e5b9ba4002bf92b4296c412c14004b8c16
3
+ metadata.gz: 162d0a9061d3e1902780dd3b30948da8a6498b1d
4
+ data.tar.gz: feb40e9c53871753e24f71b29fee3f25c92916b1
5
5
  SHA512:
6
- metadata.gz: 824d846ded68ab1c7fd4da81d99e7ce7404304cc7925a756a74ce47cf18c5d9675c8c7742b284c72ff855b61ba2c9b16339ffa4e6f613cc7f167e265256762b0
7
- data.tar.gz: a6caeacb7779e3272860616574933ea910d09f794d9f82abe30601b7e660e66b4f1afe219e3d3b9ef08dbffa2834eb01728febc3251407f62a56ff5d5fef511b
6
+ metadata.gz: f7c5f566cb617f5db19ce11d47cb61d026f223e4c31a7ed59d48ac3033eb6b41488779e73b89bc93de46012c778c97026d6b719a6c16beb1749c243e6878359b
7
+ data.tar.gz: 425bde36082f1a9fd24526e1d08984b08361c0a1875ece7d262c0afe8f971e1852f03bd4d883583f961302194b704d86841545ed8d036e485b4de36c42731a82
data/.rubocop.yml CHANGED
@@ -7,3 +7,11 @@ MethodLength:
7
7
  Max: 30
8
8
  Metrics/BlockLength:
9
9
  Max: 50
10
+ Style/ConditionalAssignment:
11
+ Enabled: false
12
+ Metrics/PerceivedComplexity:
13
+ Max: 20
14
+ Metrics/CyclomaticComplexity:
15
+ Max: 15
16
+ Metrics/AbcSize:
17
+ Max: 40
data/README.md CHANGED
@@ -32,9 +32,12 @@ Or with more details:
32
32
  ```yaml
33
33
  ---
34
34
  jb_picture:
35
- src: ... SRC attribute of <IMG>
36
- alt: ... ALT attribute of <IMG>
37
- href: ... HREF attribute of <A>
35
+ src: SRC attribute of <IMG> (mandatory)
36
+ alt: ALT attribute of <IMG> (optional)
37
+ href: HREF attribute of <A> (optional)
38
+ caption: text of <FIGCAPTION> (optional)
39
+ width: width in pixels (optional)
40
+ height: height in pixels (optional)
38
41
  ---
39
42
  ```
40
43
 
data/Rakefile CHANGED
@@ -22,10 +22,9 @@
22
22
 
23
23
  require 'rubygems'
24
24
  require 'rake'
25
- require 'rdoc'
26
25
  require 'rake/clean'
27
26
 
28
- CLEAN = FileList['coverage', 'rdoc']
27
+ CLEAN = FileList['coverage']
29
28
 
30
29
  def name
31
30
  @name ||= File.basename(Dir['*.gemspec'].first, '.*')
@@ -35,7 +34,7 @@ def version
35
34
  Gem::Specification.load(Dir['*.gemspec'].first).version
36
35
  end
37
36
 
38
- task default: [:clean, :test, :rdoc, :rubocop]
37
+ task default: [:clean, :test, :rubocop]
39
38
 
40
39
  require 'rake/testtask'
41
40
  desc 'Run all unit tests'
@@ -45,15 +44,6 @@ Rake::TestTask.new(:test) do |test|
45
44
  test.verbose = false
46
45
  end
47
46
 
48
- require 'rdoc/task'
49
- desc 'Build RDoc documentation'
50
- Rake::RDocTask.new do |rdoc|
51
- rdoc.rdoc_dir = 'rdoc'
52
- rdoc.title = "#{name} #{version}"
53
- rdoc.rdoc_files.include('README*')
54
- rdoc.rdoc_files.include('lib/**/*.rb')
55
- end
56
-
57
47
  require 'rubocop/rake_task'
58
48
  desc 'Run RuboCop on all directories'
59
49
  RuboCop::RakeTask.new(:rubocop) do |task|
data/jekyll-bits.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.rubygems_version = '2.2.2'
9
9
  s.required_ruby_version = '>= 1.9.3'
10
10
  s.name = 'jekyll-bits'
11
- s.version = '0.4.1'
11
+ s.version = '0.5'
12
12
  s.license = 'MIT'
13
13
  s.summary = 'Jekyll Bits'
14
14
  s.description = 'Useful and very simple Jekyll plugins'
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_runtime_dependency('jekyll', '>=1.5.1')
23
23
  s.add_development_dependency 'bundler', '~> 1.5'
24
24
  s.add_development_dependency 'coveralls', '0.7.0'
25
- s.add_development_dependency 'minitest', '5.4.0'
25
+ s.add_development_dependency 'test-unit', '3.0.8'
26
26
  s.add_development_dependency 'rake'
27
27
  s.add_development_dependency 'rdoc', '3.11'
28
28
  s.add_development_dependency 'rubocop', '0.46.0'
@@ -0,0 +1,88 @@
1
+ # encoding: utf-8
2
+ #
3
+ # (The MIT License)
4
+ #
5
+ # Copyright (c) 2016 Yegor Bugayenko
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the 'Software'), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+
25
+ require 'liquid'
26
+
27
+ # Jekyll module
28
+ module Jekyll
29
+ # All our custom filters
30
+ module JbFilters
31
+ def jb_picture_head(page)
32
+ yaml = page['jb_picture']
33
+ return unless yaml
34
+ if yaml.is_a?(Hash)
35
+ raise "src is absent for jb_picture in #{page.url}" unless yaml['src']
36
+ src = yaml['src']
37
+ else
38
+ src = yaml
39
+ end
40
+ "<meta property='og:image' content='#{src}'/>"
41
+ end
42
+
43
+ def jb_picture_body(page)
44
+ yaml = page['jb_picture']
45
+ return unless yaml
46
+ html = "<img itemprop='image' alt='"
47
+ if yaml.is_a?(Hash) && yaml['alt']
48
+ html += CGI.escapeHTML(yaml['alt'])
49
+ else
50
+ html += 'front image'
51
+ end
52
+ html += "' src='"
53
+ if yaml.is_a?(Hash)
54
+ raise "src is absent for jb_picture in #{page.url}" unless yaml['src']
55
+ html += CGI.escapeElement(yaml['src'])
56
+ else
57
+ html += yaml
58
+ end
59
+ html += "'"
60
+ html += " width='#{yaml['width']}'" \
61
+ if yaml.is_a?(Hash) && yaml['width']
62
+ html += " height='#{yaml['height']}'" \
63
+ if yaml.is_a?(Hash) && yaml['height']
64
+ html += '/>'
65
+ html = "<a href='#{CGI.escapeHTML(yaml['href'])}'>#{html}</a>" \
66
+ if yaml.is_a?(Hash) && yaml['href']
67
+ html = "<figure class='jb_picture'>" + html
68
+ html += "<figcaption>#{CGI.escapeHTML(yaml['caption'])}</figcaption>" \
69
+ if yaml.is_a?(Hash) && yaml['caption']
70
+ html + '</figure>'
71
+ end
72
+ end
73
+
74
+ # Box for testing and calling static methods.
75
+ class JbBox
76
+ include JbFilters
77
+ end
78
+
79
+ # Jekyll block
80
+ class JbPictureBlock < Liquid::Tag
81
+ def render(context)
82
+ JbBox.new.jb_picture_body(context.registers[:page])
83
+ end
84
+ end
85
+ end
86
+
87
+ Liquid::Template.register_filter(Jekyll::JbFilters)
88
+ Liquid::Template.register_tag('jb_picture_body', Jekyll::JbPictureBlock)
data/lib/jekyll-bits.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ #
1
3
  # (The MIT License)
2
4
  #
3
5
  # Copyright (c) 2016 Yegor Bugayenko
@@ -20,47 +22,4 @@
20
22
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
23
  # SOFTWARE.
22
24
 
23
- require 'liquid'
24
-
25
- puts 'jekyll-bits is alive'
26
-
27
- # Jekyll module
28
- module Jekyll
29
- # All our custom filters
30
- module JbFilters
31
- def jb_picture_head(page)
32
- yaml = page['jb_picture']
33
- return unless yaml
34
- src = if yaml.is_a?(Array)
35
- yaml['src']
36
- else
37
- yaml
38
- end
39
- "<meta property='og:image' content='#{src}'/>"
40
- end
41
-
42
- def jb_picture_body(page)
43
- yaml = page['jb_picture']
44
- return unless yaml
45
- if yaml.is_a?(Array)
46
- "<figure class='jb_picture'><a \
47
- href='#{CGI.escapeElement(yaml['href'])}'>\
48
- <img alt='#{CGI.escapeElement(yaml['alt'])}' \
49
- src='#{CGI.escapeElement(yaml['src'])}'/></a></figure>"
50
- else
51
- "<figure class='jb_picture'><img \
52
- alt='front picture' src='#{CGI.escapeElement(yaml)}'/></figure>"
53
- end
54
- end
55
- end
56
-
57
- # Jekyll block
58
- class JbPictureBlock < Liquid::Tag
59
- def render(context)
60
- Jekyll::JbFilters.jb_picture_body(context.registers[:page])
61
- end
62
- end
63
- end
64
-
65
- Liquid::Template.register_filter(Jekyll::JbFilters)
66
- Liquid::Template.register_tag('jb_picture_body', Jekyll::JbPictureBlock)
25
+ require 'jekyll-bits/picture'
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+ #
3
+ # (The MIT License)
4
+ #
5
+ # Copyright (c) 2016 Yegor Bugayenko
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the 'Software'), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+
25
+ require 'test/unit'
26
+ require_relative '../lib/jekyll-bits/picture'
27
+
28
+ # Picture test.
29
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
30
+ # Copyright:: Copyright (c) 2016 Yegor Bugayenko
31
+ # License:: MIT
32
+ module Jekyll
33
+ class TestPicture < Test::Unit::TestCase
34
+ def test_generates_html_simple_head
35
+ html = JbBox.new.jb_picture_head('jb_picture' => '/img.png')
36
+ assert_match(/meta/, html)
37
+ assert_match(/img\.png/, html)
38
+ end
39
+
40
+ def test_generates_html_complex_head
41
+ html = JbBox.new.jb_picture_head(
42
+ 'jb_picture' => {
43
+ 'src' => '/img2.png'
44
+ }
45
+ )
46
+ assert_match(/meta/, html)
47
+ assert_match(/img2\.png/, html)
48
+ end
49
+
50
+ def test_generates_html_simple_body
51
+ html = JbBox.new.jb_picture_body('jb_picture' => '/img1.png')
52
+ assert_match(/img/, html)
53
+ assert_match(/figure/, html)
54
+ end
55
+
56
+ def test_generates_html_complex_body
57
+ html = JbBox.new.jb_picture_body(
58
+ 'jb_picture' => {
59
+ 'src' => '/img1.png',
60
+ 'href' => 'http://www.yegor256.com',
61
+ 'caption' => 'it is <simple>',
62
+ 'alt' => "nothing 'to' say",
63
+ 'width' => 500
64
+ }
65
+ )
66
+ assert_match(/figcaption/, html)
67
+ assert_match(/figure/, html)
68
+ assert_match(/<figcaption>it is &lt;simple&gt;/, html)
69
+ assert_match(/alt='nothing &#39;to&#39; say'/, html)
70
+ assert_match(/width='500'/, html)
71
+ end
72
+ end
73
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-bits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: '0.5'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-24 00:00:00.000000000 Z
11
+ date: 2016-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.7.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: minitest
56
+ name: test-unit
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 5.4.0
61
+ version: 3.0.8
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 5.4.0
68
+ version: 3.0.8
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -140,6 +140,8 @@ files:
140
140
  - Rakefile
141
141
  - jekyll-bits.gemspec
142
142
  - lib/jekyll-bits.rb
143
+ - lib/jekyll-bits/picture.rb
144
+ - test/test_picture.rb
143
145
  homepage: http://github.com/yegor256/jekyll-bits
144
146
  licenses:
145
147
  - MIT
@@ -165,4 +167,5 @@ rubygems_version: 2.4.5.1
165
167
  signing_key:
166
168
  specification_version: 2
167
169
  summary: Jekyll Bits
168
- test_files: []
170
+ test_files:
171
+ - test/test_picture.rb