Sha256: 97a89ac52aa9ee02f989b124e2ab8b7d64564bac25bbb53d5acab9118ac76192

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

##
# helpers for info fields in documents
#
module InfoHelpers
    def text_for(**options)
        options.keys.map do |key|
            content_for key do
                options[key].to_s
            end
        end
    end

    def page_info(**options)
        content_for :page_infos do
            options.keys.map do |name|
                partial("layouts/info", locals: { name: name, value: options[name] })
            end.join
        end
    end

    def relative_link(stringifyable, current_path=current_page.path)
        relative = String.new
        dots = current_path.split(/[\/\\]/).size - 1
        dots.times{ relative += "../" }
        # This has been some nasty part to debug...
        # keep these comments for debugging session yet to come
        # puts "##################################"
        # puts "current_page.path: #{current_page.path}"
        # puts "stringifyable: #{stringifyable.to_s}"
        # puts "dots: #{dots}"
        # puts "relative link: #{relative + stringifyable.to_s}"
        # puts "##################################"
        relative + stringifyable.to_s
    end

    def site?
        data.respond_to?(:site)
    end

    def navbar?
        site? && data.site.respond_to?(:navbar)
    end

    def navbar_links
        nav = data.site.navbar.links if navbar?
        nav ||= {}
        mapped = {}
        nav.each do |name, link|
            mapped[name] = relative_link(link)
        end
        mapped
    end

    def navbar_brand
        data.site.navbar.brand if navbar?
    end

    def footer_text
        data.site.footer if site?
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
paperwork-0.2.5 lib/paperwork/tasks/middleman_template/lib/info_helpers.rb