module Nanoc::Helpers::Breadcrumbs::Int

@api private

Constants

DEFAULT_TIEBREAKER
ERROR_TIEBREAKER

Public Class Methods

find_one(items, pat, tiebreaker) click to toggle source
# File lib/nanoc/helpers/breadcrumbs.rb, line 59
def self.find_one(items, pat, tiebreaker)
  res = items.find_all(pat)
  case res.size
  when 0
    nil
  when 1
    res.first
  else
    if tiebreaker.arity == 1
      tiebreaker.call(res)
    else
      tiebreaker.call(res, pat)
    end
  end
end
patterns_for_prefix(prefix) click to toggle source

e.g. patterns_for_prefix(‘/foo/1.0’)

> [‘/foo/1.0.*’, ‘/foo/1.*’]

# File lib/nanoc/helpers/breadcrumbs.rb, line 49
def self.patterns_for_prefix(prefix)
  prefixes =
    unfold(prefix) do |old_prefix|
      new_prefix = Nanoc::Core::Identifier.new(old_prefix).without_ext
      new_prefix == old_prefix ? nil : new_prefix
    end

  prefixes.map { |pr| pr + '.*' }
end
unfold(obj, &) { |obj| ... } click to toggle source

e.g. unfold(10.class, &:superclass)

> [Integer, Numeric, Object, BasicObject]

# File lib/nanoc/helpers/breadcrumbs.rb, line 36
def self.unfold(obj, &)
  acc = [obj]

  res = yield(obj)
  if res
    acc + unfold(res, &)
  else
    acc
  end
end