integtest/spec/helper/book.rb (48 lines of code) (raw):

# frozen_string_literal: true require_relative 'book_conf' class Book include BookConf attr_reader :title, :prefix ## # Set the index file for the book. If this isn't called the default # is `index.asciidoc`. attr_writer :index ## # The list of branches to build attr_accessor :branches ## # The branch that is marked "current" attr_accessor :current_branch ## # Should this book allow overriding :edit_url:? Defaults to false. attr_accessor :respect_edit_url_overrides ## # The language of the book. Defaults to `en`. attr_accessor :lang ## # Should this book suppress all migration warnings, even in the newest # version? Defaults to false. attr_accessor :suppress_migration_warnings ## # Should the book declare itself noindex? Defaults to false. attr_accessor :noindex ## # List of branches that are considered "live" for a book. Branches that are # not live will be marked as `noindex`. Defaults to nil, meaning don't emit # the list of live branches. In that case the docs build will default to # *all* branches being live. attr_accessor :live_branches ## # Is the book a single page book? attr_accessor :single ## # Path to extra html to write into the book's table of contents. attr_accessor :toc_extra def initialize(title, prefix) @title = title @prefix = prefix init_defaults end def init_defaults @index = 'index.asciidoc' @sources = [] @branches = ['master'] @current_branch = 'master' @lang = 'en' @respect_edit_url_overrides = @suppress_migration_warnings = false @noindex = @single = false @live_branches = @toc_extra = nil end ## # Define a source repository for the book. Calling this again with the same # repo will redefine the source for that repo. # repo - the repository containing the source files # path - path within the repository to checkout to build the book # map_branches - optional hash that overrides which branch is used for this # repo when the book is building a particular branch # is_private - Configure the source to be private so it doesn't get edit # urls. Defaults to false. # alternatives - Marks this source as a source of alternative examples. Must # be a hash containing :source_lang and :alternative_lang. def source(repo, path, map_branches: nil, is_private: false, alternatives: nil) @sources.push( repo: repo.name, path: path, map_branches: map_branches, is_private: is_private, alternatives: alternatives ) end ## # The html for a link to a particular branch of this book. def link_to(branch) url = "#{@prefix}/#{branch}/index.html" decoration = '' if branch == 'current' && @branches.length != 1 decoration = " [#{@current_branch}]" end %(<a href="#{url}" class="ulink" target="_top">#{@title}#{decoration}</a>) end end