distorted-jekyll 0.5.6 → 0.5.7
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 +4 -4
- data/LICENSE +661 -0
- data/README.md +6 -10
- data/lib/distorted-jekyll.rb +79 -0
- data/lib/distorted-jekyll/13th-style.rb +58 -0
- data/lib/distorted-jekyll/_config_default.yml +79 -0
- data/lib/distorted-jekyll/blocks.rb +16 -0
- data/lib/distorted-jekyll/error_code.rb +24 -0
- data/lib/distorted-jekyll/floor.rb +148 -0
- data/lib/distorted-jekyll/injection_of_love.rb +305 -0
- data/lib/distorted-jekyll/invoker.rb +400 -0
- data/lib/distorted-jekyll/molecule/abstract.rb +238 -0
- data/lib/distorted-jekyll/molecule/font.rb +29 -0
- data/lib/distorted-jekyll/molecule/image.rb +105 -0
- data/lib/distorted-jekyll/molecule/last-resort.rb +54 -0
- data/lib/distorted-jekyll/molecule/pdf.rb +88 -0
- data/lib/distorted-jekyll/molecule/svg.rb +59 -0
- data/lib/distorted-jekyll/molecule/text.rb +74 -0
- data/lib/distorted-jekyll/molecule/video.rb +43 -0
- data/lib/distorted-jekyll/monkey_business/jekyll/cleaner.rb +54 -0
- data/lib/distorted-jekyll/static/font.rb +42 -0
- data/lib/distorted-jekyll/static/image.rb +55 -0
- data/lib/distorted-jekyll/static/lastresort.rb +28 -0
- data/lib/distorted-jekyll/static/pdf.rb +53 -0
- data/lib/distorted-jekyll/static/state.rb +141 -0
- data/lib/distorted-jekyll/static/svg.rb +52 -0
- data/lib/distorted-jekyll/static/text.rb +57 -0
- data/lib/distorted-jekyll/static/video.rb +90 -0
- data/lib/distorted-jekyll/template/13th-style.css +78 -0
- data/lib/distorted-jekyll/template/error_code.liquid +3 -0
- data/lib/distorted-jekyll/template/font.liquid +32 -0
- data/lib/distorted-jekyll/template/image.liquid +32 -0
- data/lib/distorted-jekyll/template/lastresort.liquid +20 -0
- data/lib/distorted-jekyll/template/pdf.liquid +14 -0
- data/lib/distorted-jekyll/template/svg.liquid +32 -0
- data/lib/distorted-jekyll/template/text.liquid +32 -0
- data/lib/distorted-jekyll/template/video.liquid +11 -0
- metadata +41 -6
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'set'
|
3
|
+
|
4
|
+
|
5
|
+
require 'distorted-jekyll/static/image'
|
6
|
+
|
7
|
+
module Jekyll
|
8
|
+
module DistorteD
|
9
|
+
module Static
|
10
|
+
class SVG < Jekyll::DistorteD::Static::Image
|
11
|
+
|
12
|
+
DRIVER = Cooltrainer::DistorteD::SVG
|
13
|
+
|
14
|
+
MEDIA_TYPE = DRIVER::MEDIA_TYPE
|
15
|
+
SUB_TYPE = DRIVER::SUB_TYPE
|
16
|
+
MIME_TYPES = DRIVER::MIME_TYPES
|
17
|
+
|
18
|
+
ATTRS = DRIVER::ATTRS
|
19
|
+
ATTRS_DEFAULT = DRIVER::ATTRS_DEFAULT
|
20
|
+
ATTRS_VALUES = DRIVER::ATTRS_VALUES
|
21
|
+
|
22
|
+
|
23
|
+
# dest: string realpath to `_site_` directory
|
24
|
+
def write(dest)
|
25
|
+
return false if File.exist?(path) && !modified?
|
26
|
+
self.class.mtimes[path] = mtime
|
27
|
+
|
28
|
+
# Create any directories to the depth of the intended destination.
|
29
|
+
FileUtils.mkdir_p(dd_dest(dest))
|
30
|
+
|
31
|
+
for variation in files
|
32
|
+
if DRIVER::MIME_TYPES.include?(variation[:type])
|
33
|
+
svg_dest_path = File.join(dd_dest(dest), variation[:name])
|
34
|
+
|
35
|
+
if true # TODO: Make this configurable
|
36
|
+
Jekyll.logger.debug(@tag_name, "Optimizing #{@name} and copying to #{dd_dest(dest)}")
|
37
|
+
DRIVER::optimize(path, svg_dest_path)
|
38
|
+
else
|
39
|
+
Jekyll.logger.debug(@tag_name, "Copying #{@name} to #{dd_dest(dest)}")
|
40
|
+
FileUtils.cp(path, svg_dest_path)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
super # Generate raster Image variations
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'set'
|
3
|
+
|
4
|
+
require 'distorted/text'
|
5
|
+
require 'distorted-jekyll/static/image'
|
6
|
+
|
7
|
+
module Jekyll
|
8
|
+
module DistorteD
|
9
|
+
module Static
|
10
|
+
class Text < Image
|
11
|
+
|
12
|
+
DRIVER = Cooltrainer::DistorteD::Text
|
13
|
+
|
14
|
+
MEDIA_TYPE = DRIVER::MEDIA_TYPE
|
15
|
+
MIME_TYPES = DRIVER::MIME_TYPES
|
16
|
+
|
17
|
+
ATTRS = DRIVER::ATTRS
|
18
|
+
ATTRS_DEFAULT = DRIVER::ATTRS_DEFAULT
|
19
|
+
ATTRS_VALUES = DRIVER::ATTRS_VALUES
|
20
|
+
|
21
|
+
|
22
|
+
# dest: String realpath to `_site` directory
|
23
|
+
def write(dest)
|
24
|
+
orig_dest = destination(dest)
|
25
|
+
|
26
|
+
return false if !modified?
|
27
|
+
self.class.mtimes[path] = mtime
|
28
|
+
|
29
|
+
unless defined? @distorted
|
30
|
+
@distorted = DRIVER.new(
|
31
|
+
path,
|
32
|
+
encoding: attr_value(:encoding),
|
33
|
+
font: attr_value(:font),
|
34
|
+
spacing: attr_value(:spacing),
|
35
|
+
dpi: attr_value(:dpi),
|
36
|
+
)
|
37
|
+
end
|
38
|
+
# Write any actual-text output variations.
|
39
|
+
# Images will be written by `super`.
|
40
|
+
for variation in files
|
41
|
+
if DRIVER::MIME_TYPES.include?(variation&.dig(:type))
|
42
|
+
filename = File.join(dd_dest(dest), variation&.dig(:name) || @name)
|
43
|
+
Jekyll.logger.debug('DistorteD Writing:', filename)
|
44
|
+
# TODO: For now this is just copying the file, but we should
|
45
|
+
# probably support some sort of UTF conversion or something here.
|
46
|
+
FileUtils.cp(path, filename)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
super
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end # Text
|
55
|
+
end # Static
|
56
|
+
end # DistorteD
|
57
|
+
end # Jekyll
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
3
|
+
require 'distorted/video'
|
4
|
+
require 'distorted-jekyll/static/state'
|
5
|
+
|
6
|
+
module Jekyll
|
7
|
+
module DistorteD
|
8
|
+
module Static
|
9
|
+
class Video < Jekyll::DistorteD::Static::State
|
10
|
+
|
11
|
+
DRIVER = Cooltrainer::DistorteD::Video
|
12
|
+
|
13
|
+
MEDIA_TYPE = DRIVER::MEDIA_TYPE
|
14
|
+
MIME_TYPES = DRIVER::MIME_TYPES
|
15
|
+
|
16
|
+
ATTRS = DRIVER::ATTRS
|
17
|
+
ATTRS_DEFAULT = DRIVER::ATTRS_DEFAULT
|
18
|
+
ATTRS_VALUES = DRIVER::ATTRS_VALUES
|
19
|
+
|
20
|
+
|
21
|
+
# dest: string realpath to `_site_` directory
|
22
|
+
def write(dest)
|
23
|
+
orig_dest = destination(dest)
|
24
|
+
|
25
|
+
# TODO: Make this smarter. Need to see if there's an easy way to
|
26
|
+
# get a list of would-be-generated filenames from GStreamer.
|
27
|
+
return false if File.exist?(path) && !modified?
|
28
|
+
self.class.mtimes[path] = mtime
|
29
|
+
|
30
|
+
distorted = DRIVER.new(path, orig_dest, basename)
|
31
|
+
|
32
|
+
distorted.generate
|
33
|
+
end
|
34
|
+
|
35
|
+
# Return a Set of extant video variations due to inability/unwillingness
|
36
|
+
# to exactly predict GStreamer's HLS/DASH segment output naming
|
37
|
+
# even if we are controlling all variables like segment length etc.
|
38
|
+
# This implementation may give stale segments but will at least speed
|
39
|
+
# up site generation by not having to regenerate the video every time.
|
40
|
+
def destinations(dest)
|
41
|
+
wanted = Set[]
|
42
|
+
if Dir.exist?(dd_dest(dest))
|
43
|
+
hls_dir = File.join(dd_dest(dest), "#{basename}.hls")
|
44
|
+
if Dir.exist?(hls_dir)
|
45
|
+
wanted.merge(Dir.entries(hls_dir).to_set.map{|f| File.join(hls_dir, f)})
|
46
|
+
end
|
47
|
+
end
|
48
|
+
wanted
|
49
|
+
end
|
50
|
+
|
51
|
+
def modified?
|
52
|
+
# We can't use the standard Static::State#modified? here until
|
53
|
+
# I figure out how to cleanly get a duplicate of what would be
|
54
|
+
# the generated filenames from GStreamer's sink.
|
55
|
+
#
|
56
|
+
# For now for the sake of speeding up my site generation
|
57
|
+
# I'll assume not-modified that if the output variant (e.g. DASH/HLS)
|
58
|
+
# container dir exists and contains at least two files:
|
59
|
+
# the playlist and at least one segment.
|
60
|
+
#
|
61
|
+
# Hacky HLS-only right now until dashsink2 lands in upstream Gst.
|
62
|
+
#
|
63
|
+
# Assume modified for the sake of freshness :)
|
64
|
+
modified = true
|
65
|
+
|
66
|
+
site_dest = Jekyll::DistorteD::Floor::config(:destination).to_s
|
67
|
+
if Dir.exist?(site_dest)
|
68
|
+
|
69
|
+
dd_dest = dd_dest(site_dest)
|
70
|
+
if Dir.exist?(dd_dest)
|
71
|
+
|
72
|
+
hls_dir = File.join(dd_dest, "#{basename}.hls")
|
73
|
+
if Dir.exist?(hls_dir)
|
74
|
+
need_filez = Set["#{basename}.m3u8"]
|
75
|
+
var_filez = Dir.entries(hls_dir).to_set
|
76
|
+
if need_filez.subset?(var_filez) and var_filez.count > 2
|
77
|
+
modified = false
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
83
|
+
Jekyll.logger.debug("#{@name} modified?", modified)
|
84
|
+
modified
|
85
|
+
end
|
86
|
+
|
87
|
+
end # Video
|
88
|
+
end # Static
|
89
|
+
end # DistorteD
|
90
|
+
end # Jekyll
|
@@ -0,0 +1,78 @@
|
|
1
|
+
div.distorted {text-align: center;}
|
2
|
+
div.distorted::after {
|
3
|
+
content: '';
|
4
|
+
display: block;
|
5
|
+
clear: left;
|
6
|
+
}
|
7
|
+
div.distorted.svg {background-color: #fbfbf8;}
|
8
|
+
div.distorted.pdf > object {min-height: 76vh;}
|
9
|
+
div.distorted-caption {
|
10
|
+
color: #8888888;
|
11
|
+
margin-top: 0.5em;
|
12
|
+
}
|
13
|
+
div.distorted-block {
|
14
|
+
width: 100%;
|
15
|
+
clear: both;
|
16
|
+
}
|
17
|
+
div.distorted-block > div.distorted {
|
18
|
+
display: block;
|
19
|
+
box-sizing: border-box;
|
20
|
+
float: left;
|
21
|
+
border: 4px solid transparent;
|
22
|
+
margin: 0px;
|
23
|
+
text-align: center;
|
24
|
+
width: 100%;
|
25
|
+
}
|
26
|
+
@media screen and (min-width: 40em) {
|
27
|
+
div.distorted-block > div.distorted {
|
28
|
+
width: 50%;
|
29
|
+
}
|
30
|
+
div.distorted-block > div.distorted:only-child {
|
31
|
+
width: 100%;
|
32
|
+
}
|
33
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(3),
|
34
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(3) ~ div.distorted,
|
35
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(6),
|
36
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(6) ~ div.distorted,
|
37
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(9),
|
38
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(9) ~ div.distorted {
|
39
|
+
width: 33.3333%;
|
40
|
+
}
|
41
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(5),
|
42
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(5) ~ div.distorted:nth-child(2) {
|
43
|
+
width: 50%;
|
44
|
+
}
|
45
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(5) ~ div.distorted {
|
46
|
+
width: 33.3333%;
|
47
|
+
}
|
48
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted:nth-child(3),
|
49
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted:nth-child(4),
|
50
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted:nth-child(5) {
|
51
|
+
width: 33.3333%;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
@media screen and (min-width: 76em) {
|
55
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(4),
|
56
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(4) ~ div.distorted,
|
57
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(8),
|
58
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(8) ~ div.distorted {
|
59
|
+
width: 25%;
|
60
|
+
}
|
61
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(5),
|
62
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(5) ~ div.distorted:nth-child(2),
|
63
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(5) ~ div.distorted,
|
64
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(10),
|
65
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(10) ~ div.distorted {
|
66
|
+
width: 20%;
|
67
|
+
}
|
68
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7),
|
69
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted:nth-child(2),
|
70
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted:nth-child(3) {
|
71
|
+
width: 33.3333%;
|
72
|
+
}
|
73
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted,
|
74
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted:nth-child(4),
|
75
|
+
div.distorted-block > div.distorted:first-child:nth-last-child(7) ~ div.distorted:nth-child(5) {
|
76
|
+
width: 25%;
|
77
|
+
}
|
78
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="distorted font">
|
2
|
+
{%- if href != true %}
|
3
|
+
{%- capture href %}{{ path }}{{ name }}{%- endcapture -%}
|
4
|
+
{%- endif %}
|
5
|
+
{%- if alt != nil and alt != "" %}
|
6
|
+
{%- capture attr_alt %} alt="{{ alt }}"{%- endcapture -%}
|
7
|
+
{%- endif %}
|
8
|
+
{%- if title != nil and title != "" %}
|
9
|
+
{%- capture attr_title %} title="{{ title }}"{%- endcapture -%}
|
10
|
+
{%- endif %}
|
11
|
+
{%- if loading != nil and loading != "" %}
|
12
|
+
{%- capture attr_loading %} loading="{{ loading }}"{%- endcapture -%}
|
13
|
+
{%- endif %}
|
14
|
+
<a href="{{ href }}"{{ attr_title }} target="_blank">
|
15
|
+
<picture>
|
16
|
+
{%- if sources %}
|
17
|
+
{%- for source in sources %}
|
18
|
+
{%- if source.media != nil and source.media != "" %}
|
19
|
+
{%- capture attr_media %} media="{{ source.media }}"{%- endcapture -%}
|
20
|
+
{%- else %}
|
21
|
+
{%- capture attr_media %}{%- endcapture -%}
|
22
|
+
{%- endif %}
|
23
|
+
<source srcset="{{ path }}{{ source.name }}" type="{{ source.type }}"{{ attr_media }}/>
|
24
|
+
{%- endfor %}
|
25
|
+
{%- endif %}
|
26
|
+
<img src="{{ path }}{{ fallback_img }}"{{ attr_alt }}{{ attr_title }}{{ attr_loading }}/>
|
27
|
+
</picture>
|
28
|
+
</a>
|
29
|
+
{%- if caption != nil and caption != "" %}
|
30
|
+
<p class="distorted-caption">{{ caption }}</p>
|
31
|
+
{%- endif %}
|
32
|
+
</div>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="distorted image">
|
2
|
+
{%- if href != true %}
|
3
|
+
{%- capture href %}{{ path }}{{ name }}{%- endcapture -%}
|
4
|
+
{%- endif %}
|
5
|
+
{%- if alt != nil and alt != "" %}
|
6
|
+
{%- capture attr_alt %} alt="{{ alt }}"{%- endcapture -%}
|
7
|
+
{%- endif %}
|
8
|
+
{%- if title != nil and title != "" %}
|
9
|
+
{%- capture attr_title %} title="{{ title }}"{%- endcapture -%}
|
10
|
+
{%- endif %}
|
11
|
+
{%- if loading != nil and loading != "" %}
|
12
|
+
{%- capture attr_loading %} loading="{{ loading }}"{%- endcapture -%}
|
13
|
+
{%- endif %}
|
14
|
+
<a href="{{ href }}"{{ attr_title }} target="_blank">
|
15
|
+
<picture>
|
16
|
+
{%- if sources %}
|
17
|
+
{%- for source in sources %}
|
18
|
+
{%- if source.media != nil and source.media != "" %}
|
19
|
+
{%- capture attr_media %} media="{{ source.media }}"{%- endcapture -%}
|
20
|
+
{%- else %}
|
21
|
+
{%- capture attr_media %}{%- endcapture -%}
|
22
|
+
{%- endif %}
|
23
|
+
<source srcset="{{ path }}{{ source.name }}" type="{{ source.type }}"{{ attr_media }}/>
|
24
|
+
{%- endfor %}
|
25
|
+
{%- endif %}
|
26
|
+
<img src="{{ path }}{{ fallback_img }}"{{ attr_alt }}{{ attr_title }}{{ attr_loading }}/>
|
27
|
+
</picture>
|
28
|
+
</a>
|
29
|
+
{%- if caption != nil and caption != "" %}
|
30
|
+
<p class="distorted-caption">{{ caption }}</p>
|
31
|
+
{%- endif %}
|
32
|
+
</div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div class="distorted lastresort">
|
2
|
+
{%- if href != true %}
|
3
|
+
{%- capture href %}{{ path }}{{ name }}{%- endcapture -%}
|
4
|
+
{%- endif %}
|
5
|
+
{%- if alt != nil and alt != "" %}
|
6
|
+
{%- capture attr_alt %} alt="{{ alt }}"{%- endcapture -%}
|
7
|
+
{%- endif %}
|
8
|
+
{%- if title != nil and title != "" %}
|
9
|
+
{%- capture attr_title %} title="{{ title }}"{%- endcapture -%}
|
10
|
+
{%- endif %}
|
11
|
+
{%- if loading != nil and loading != "" %}
|
12
|
+
{%- capture attr_loading %} loading="{{ loading }}"{%- endcapture -%}
|
13
|
+
{%- endif %}
|
14
|
+
<a href="{{ href }}"{{ attr_title }} target="_blank">
|
15
|
+
<img src="{{ path }}{{ name }}"{{ attr_alt }}{{ attr_title }}{{ attr_loading }}/>
|
16
|
+
</a>
|
17
|
+
{%- if caption != nil and caption != "" %}
|
18
|
+
<p class="distorted-caption">{{ caption }}</p>
|
19
|
+
{%- endif %}
|
20
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div class="distorted pdf">
|
2
|
+
{%- if title != nil and title != "" %}
|
3
|
+
{%- capture pdf_link %}{{ title }}{%- endcapture -%}
|
4
|
+
{%- elsif alt != nil and alt != "" %}
|
5
|
+
{%- capture pdf_link %}{{ alt }}{%- endcapture -%}
|
6
|
+
{%- endif %}
|
7
|
+
<object data="{{ path }}{{ name }}#{{ pdf_open_params }}" type="application/pdf" width="{{ width }}" height="{{ height }}">
|
8
|
+
<embed src="{{ path }}{{ name }}#{{ pdf_open_params }}" type="application/pdf" width="{{ width }}" height="{{ height }}"/>
|
9
|
+
<a href="{{ path }}{{ name }}#{{ pdf_open_params }}">{{ pdf_link }} [PDF]</a>
|
10
|
+
</object>
|
11
|
+
{%- if caption != nil and caption != "" %}
|
12
|
+
<p class="distorted-caption">{{ caption }}</p>
|
13
|
+
{%- endif %}
|
14
|
+
</div>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="distorted svg">
|
2
|
+
{%- if href != true %}
|
3
|
+
{%- capture href %}{{ path }}{{ name }}{%- endcapture -%}
|
4
|
+
{%- endif %}
|
5
|
+
{%- if alt != nil and alt != "" %}
|
6
|
+
{%- capture attr_alt %} alt="{{ alt }}"{%- endcapture -%}
|
7
|
+
{%- endif %}
|
8
|
+
{%- if title != nil and title != "" %}
|
9
|
+
{%- capture attr_title %} title="{{ title }}"{%- endcapture -%}
|
10
|
+
{%- endif %}
|
11
|
+
{%- if loading != nil and loading != "" %}
|
12
|
+
{%- capture attr_loading %} loading="{{ loading }}"{%- endcapture -%}
|
13
|
+
{%- endif %}
|
14
|
+
<a href="{{ href }}"{{ attr_title }} target="_blank">
|
15
|
+
<picture>
|
16
|
+
{%- if sources %}
|
17
|
+
{%- for source in sources %}
|
18
|
+
{%- if source.media != nil and source.media != "" %}
|
19
|
+
{%- capture attr_media %} media="{{ source.media }}"{%- endcapture -%}
|
20
|
+
{%- else %}
|
21
|
+
{%- capture attr_media %}{%- endcapture -%}
|
22
|
+
{%- endif %}
|
23
|
+
<source srcset="{{ path }}{{ source.name }}" type="{{ source.type }}"{{ attr_media }}/>
|
24
|
+
{%- endfor %}
|
25
|
+
{%- endif %}
|
26
|
+
<img src="{{ path }}{{ fallback_img }}"{{ attr_alt }}{{ attr_title }}{{ attr_loading }}/>
|
27
|
+
</picture>
|
28
|
+
</a>
|
29
|
+
{%- if caption != nil and caption != "" %}
|
30
|
+
<p class="distorted-caption">{{ caption }}</p>
|
31
|
+
{%- endif %}
|
32
|
+
</div>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="distorted text">
|
2
|
+
{%- if href != true %}
|
3
|
+
{%- capture href %}{{ path }}{{ name }}{%- endcapture -%}
|
4
|
+
{%- endif %}
|
5
|
+
{%- if alt != nil and alt != "" %}
|
6
|
+
{%- capture attr_alt %} alt="{{ alt }}"{%- endcapture -%}
|
7
|
+
{%- endif %}
|
8
|
+
{%- if title != nil and title != "" %}
|
9
|
+
{%- capture attr_title %} title="{{ title }}"{%- endcapture -%}
|
10
|
+
{%- endif %}
|
11
|
+
{%- if loading != nil and loading != "" %}
|
12
|
+
{%- capture attr_loading %} loading="{{ loading }}"{%- endcapture -%}
|
13
|
+
{%- endif %}
|
14
|
+
<a href="{{ href }}"{{ attr_title }} target="_blank">
|
15
|
+
<picture>
|
16
|
+
{%- if sources %}
|
17
|
+
{%- for source in sources %}
|
18
|
+
{%- if source.media != nil and source.media != "" %}
|
19
|
+
{%- capture attr_media %} media="{{ source.media }}"{%- endcapture -%}
|
20
|
+
{%- else %}
|
21
|
+
{%- capture attr_media %}{%- endcapture -%}
|
22
|
+
{%- endif %}
|
23
|
+
<source srcset="{{ path }}{{ source.name }}" type="{{ source.type }}"{{ attr_media }}/>
|
24
|
+
{%- endfor %}
|
25
|
+
{%- endif %}
|
26
|
+
<img src="{{ path }}{{ fallback_img }}"{{ attr_alt }}{{ attr_title }}{{ attr_loading }}/>
|
27
|
+
</picture>
|
28
|
+
</a>
|
29
|
+
{%- if caption != nil and caption != "" %}
|
30
|
+
<p class="distorted-caption">{{ caption }}</p>
|
31
|
+
{%- endif %}
|
32
|
+
</div>
|