# Nick's web site: Ruby helpers for processing
#
-# Copyright © 2018-2021 Nick Bowler
+# Copyright © 2018-2022 Nick Bowler
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
name.to_s.capitalize + " " + ($counters[item][name] += 1).to_s
end
-def img_rep_fallback(item, rep)
- return rep unless item.reps[rep].raw_path.nil?
- return :large
+# Return a hash containing :src, :width and :height based on an image item rep.
+def img_rep_attrs(item, rep)
+ rep = :large if item.reps[rep].raw_path.nil?
+ attrs = {}
+
+ attrs[:src] ||= item_uri(item, rep: rep)
+ attrs[:width], attrs[:height] = FastImage.size(item.reps[rep].raw_path)
+
+ return attrs
end
-def gallery_img(item, rep: :large, alt: nil, caption: nil)
+def embed_img(item, rep: :large, caption: nil, block_attrs: {}, img_attrs: {})
return "[image not found]" unless item
- alt ||= item[:title]
- caption ||= alt
+ img_attrs[:alt] ||= item[:title]
+ caption ||= img_attrs[:alt]
caption = caption.strip
caption.gsub!(/\s+/, " ")
- rep = img_rep_fallback(item, rep)
- attrs = { :src => item_uri(item, rep: rep), :alt => item[:title] }
- attrs[:width], attrs[:height] = FastImage.size(item.reps[rep].raw_path)
+ img_attrs = img_rep_attrs(item, rep).merge(img_attrs)
+ block_attrs[:href] = item_uri(item, rep: :info)
b = Nokogiri::XML::Builder.new do |xml|
- xml.a(:href => item_uri(item, rep: :info)) {
- xml.img(attrs, "generate-gallery" => "generate-gallery")
+ xml.a(block_attrs) {
+ xml.img(img_attrs)
unless caption.empty?
xml << " ⁠"
xml.small { xml << caption }
b.to_xml(:save_with => Nokogiri::XML::Node::SaveOptions::NO_DECLARATION)
end
+def gallery_img(item, rep: :medium, caption: nil, alt: nil)
+ attrs = { alt: alt, "generate-gallery" => "generate-gallery" }
+ embed_img(item, rep: rep, caption: caption, img_attrs: attrs)
+end
+
+def floating_img(item, rep: :medium, caption: nil, alt: nil, left: nil)
+ battrs = { class: if left then "left" else "right" end }
+ attrs = { alt: alt }
+
+ embed_img(item, rep: rep, caption: caption,
+ block_attrs: battrs, img_attrs: attrs)
+end
+
def expand_copyright(copyright)
result = { :years => {} }