|
81 | 81 | {% continue %} |
82 | 82 | {% endunless %} |
83 | 83 |
|
84 | | - {% assign _left = _left | remove: ' /' | replace: ' w=', ' width=' | replace: ' h=', ' height=' %} |
85 | | - {% assign _attrs = _left | split: ' ' %} |
| 84 | + {% assign _left = _left | remove: ' /' | replace: ' w=', ' width=' | replace: ' h=', ' height=' %} |
| 85 | + {% assign _attrs = _left | split: '" ' %} |
86 | 86 |
|
87 | 87 | {% assign _width = nil %} |
88 | 88 | {% assign _height = nil %} |
89 | 89 | {% assign _lqip = nil %} |
| 90 | + {% assign _class = nil %} |
90 | 91 |
|
91 | 92 | {% for _attr in _attrs %} |
92 | | - {% assign _pair = _attr | split: '="' %} |
93 | | - {% if _pair.size < 2 %} |
| 93 | + {% unless _attr contains '=' %} |
94 | 94 | {% continue %} |
95 | | - {% endif %} |
| 95 | + {% endunless %} |
96 | 96 |
|
| 97 | + {% assign _pair = _attr | remove: '"' | split: '=' %} |
97 | 98 | {% capture _key %}{{ _pair | first }}{% endcapture %} |
98 | | - {% capture _value %}{{ _pair | last | remove: '"' }}{% endcapture %} |
| 99 | + {% capture _value %}{{ _pair | last }}{% endcapture %} |
99 | 100 |
|
100 | 101 | {% case _key %} |
101 | 102 | {% when 'width' %} |
|
106 | 107 | {% assign _src = _value %} |
107 | 108 | {% when 'lqip' %} |
108 | 109 | {% assign _lqip = _value %} |
| 110 | + {% when 'class' %} |
| 111 | + {% assign _class = _value %} |
109 | 112 | {% endcase %} |
110 | 113 |
|
111 | 114 | {% endfor %} |
112 | 115 |
|
| 116 | + <!-- take out classes --> |
| 117 | + {% if _class %} |
| 118 | + {% capture _old_class %}class="{{ _class }}"{% endcapture %} |
| 119 | + {% assign _left = _left | remove: _old_class %} |
| 120 | + {% endif %} |
| 121 | + |
| 122 | + {% assign _final_src = nil %} |
| 123 | + |
113 | 124 | {% unless _src contains '//' %} |
114 | 125 | {% assign _final_src = _path_prefix | append: _src %} |
115 | 126 | {% capture _src_from %}"{{ _src }}"{% endcapture %} |
|
127 | 138 | {% endif %} |
128 | 139 |
|
129 | 140 | <!-- lazy-load images <https://github.com/aFarkas/lazysizes#readme> --> |
| 141 | + {% assign _left = _left | replace: 'src=', 'data-src=' %} |
130 | 142 | {% if _left contains 'class=' %} |
131 | | - {% assign _left = _left | replace: 'class="', 'class="lazyload ' %} |
| 143 | + {% assign _left = _left | replace: 'class="', 'class="lazyload '%} |
132 | 144 | {% else %} |
133 | | - {% assign _left = _left | replace: 'src=', 'class="lazyload" src=' %} |
| 145 | + {% assign _left = _left | append: ' class="lazyload"' %} |
134 | 146 | {% endif %} |
135 | 147 |
|
136 | | - {% assign _left = _left | replace: 'src=', 'data-src=' %} |
137 | | -
|
138 | | - <!-- add placeholder --> |
| 148 | + <!-- add image placeholder --> |
139 | 149 | {% if _lqip %} |
140 | 150 | {% assign _left = _left | replace: ' lqip=', ' data-lqip="true" src=' %} |
141 | 151 | {% else %} |
142 | 152 | {% if _width and _height %} |
143 | | - <!-- Add SVG placehoder to prevent layout reflow --> |
| 153 | + <!-- add SVG placehoder --> |
144 | 154 | {%- capture _svg -%} |
145 | 155 | src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 {{ _width }} {{ _height }}'%3E%3C/svg%3E" |
146 | 156 | {%- endcapture -%} |
147 | 157 | {% assign _left = _svg | append: ' ' | append: _left %} |
| 158 | + {% assign _class = _class | append: ' shimmer' %} |
148 | 159 | {% endif %} |
149 | 160 | {% endif %} |
150 | 161 |
|
151 | 162 | <!-- Bypass the HTML-proofer test --> |
152 | 163 | {% assign _left = _left | append: ' data-proofer-ignore' %} |
153 | 164 |
|
154 | | - <!-- Combine --> |
| 165 | + <!-- make sure the `<img>` is wrapped by `<a>` --> |
| 166 | + {% assign _parent = _right | slice: 1, 4 %} |
| 167 | + |
| 168 | + {% if _parent == '</a>' %} |
| 169 | + <!-- add class to exist <a> tag --> |
| 170 | + {% assign _size = _img_content | size | minus: 1 %} |
| 171 | + {% capture _class %} |
| 172 | + class="img-link{% unless _lqip %} shimmer{% endunless %}" |
| 173 | + {% endcapture %} |
| 174 | + {% assign _img_content = _img_content | slice: 0, _size | append: _class | append: '>' %} |
| 175 | + |
| 176 | + {% else %} |
| 177 | + <!-- create the image wrapper --> |
| 178 | + {%- capture _wrapper_start -%} |
| 179 | + <a href="{{ _final_src | default: _src }}" class="popup img-link {{ _class }}"> |
| 180 | + {%- endcapture -%} |
| 181 | + {% assign _img_content = _img_content | append: _wrapper_start %} |
| 182 | + {% assign _right = _right | prepend: '></a' %} |
| 183 | + {% endif %} |
| 184 | + |
| 185 | + <!-- combine --> |
155 | 186 | {% assign _img_content = _img_content | append: IMG_TAG | append: _left | append: _right %} |
156 | 187 |
|
157 | 188 | {% endfor %} |
|
0 commit comments