module AsciiPress

Constants

DEFAULT_SLUG_RULES
VERSION

Public Class Methods

logger() click to toggle source

A default STDOUT logger

# File lib/ascii_press.rb, line 18
def self.logger
  @logger || Logger.new(STDOUT)
end
logger=(new_logger) click to toggle source

For setting the default logger

# File lib/ascii_press.rb, line 13
def self.logger=(new_logger)
  @logger = new_logger
end
slug_valid?(slug, rules = DEFAULT_SLUG_RULES) click to toggle source
# File lib/ascii_press.rb, line 257
def self.slug_valid?(slug, rules = DEFAULT_SLUG_RULES)
  slug && rules.values.all? {|rule| rule.call(slug) }
end
verify_adoc_slugs!(adoc_paths, rules = DEFAULT_SLUG_RULES) click to toggle source
# File lib/ascii_press.rb, line 269
def self.verify_adoc_slugs!(adoc_paths, rules = DEFAULT_SLUG_RULES)
  data = adoc_paths.map do |path|
    doc = Asciidoctor.load(File.read(path))

    slug = doc.attributes['slug']
    if !slug_valid?(slug, rules)
      violations = violated_slug_rules(slug, rules)
      [path, slug, violations]
    end
  end.compact

  if data.size > 0
    require 'colorize'
    data.each do |path, slug, violations|
      puts 'WARNING!!'.red
      puts "The document #{path.light_blue} has the slug #{slug.inspect.light_blue} which in invalid because:"
      violations.each do |violation|
        puts "  - #{violation.yellow}"
      end
    end
    raise 'Invalid slugs.  Cannot continue'
  end
end
violated_slug_rules(slug, rules = DEFAULT_SLUG_RULES) click to toggle source
# File lib/ascii_press.rb, line 261
def self.violated_slug_rules(slug, rules = DEFAULT_SLUG_RULES)
  return ['No slug'] if slug.nil?

  rules.reject do |desc, rule|
    rule.call(slug)
  end.map(&:first)
end