X-Git-Url: http://git.draconx.ca/gitweb/homepage.git/blobdiff_plain/4f4b3ddd920c95d380a2f25dabd4b68457bb1564..79dfd09162d1c4e201eccec188057c0e9ded2260:/lib/helpers.rb diff --git a/lib/helpers.rb b/lib/helpers.rb index 7425075..c9a1cc3 100644 --- a/lib/helpers.rb +++ b/lib/helpers.rb @@ -1,6 +1,6 @@ # Nick's web site: Ruby helpers for processing # -# Copyright © 2018-2019 Nick Bowler +# Copyright © 2018-2021 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 @@ -18,10 +18,12 @@ require 'nokogiri' use_helper Nanoc::Helpers::Breadcrumbs +use_helper Nanoc::Helpers::Blogging Xmlns = { 'xhtml' => 'http://www.w3.org/1999/xhtml' }.freeze +$counters = {} def to_xhtml(subpath = "", item = @item) if item.identifier =~ '/index.*' @@ -35,16 +37,18 @@ end def item_source(item = @item) filename = "content" + item.identifier + filebase = filename.chomp(File.extname(filename)) - if File.file? filename then - return filename - end - - return nil + [ if item.binary? then filebase + ".yaml" end, + filename].compact.find { |f| File.file? f } end def item_uri(item = @item, rep: :default) - return item.path(rep: rep).gsub(/\/index.[^.]*$/, "/") + return item.path(rep: rep).sub(%r{/index[.][^.]*$}, "/") +end + +def rep_uri(rep = @rep) + return rep.path.sub(%r{/index[.][^.]*$}, "/") end def find_license(license) @@ -64,8 +68,16 @@ def item_longdesc(item) if p.empty? then nil else p[0].xpath('string(.)') end end +def counter(name = :default, item = @item) + $counters[item] ||= {} + $counters[item][name] ||= 0 + + name.to_s.capitalize + " " + ($counters[item][name] += 1).to_s +end + def human_filesize(size) units = ["B", "KiB", "MiB", "GiB"] + prec = 0 for unit in units if (size < 1024) @@ -73,7 +85,8 @@ def human_filesize(size) end size /= 1024.0 + prec = 1 end - sprintf("%.1f %s", size + 0.05, unit) + sprintf("%.*f %s", prec, size + 0.05, unit) end