Sha256: 56cffa3c255deebc45ccd0310de1ecbbca777c3c4b2c9483c40704ba5bee8030

Contents?: true

Size: 1.66 KB

Versions: 5

Compression:

Stored size: 1.66 KB

Contents

# encoding: utf-8

usage 'show-rules [thing]'
aliases :explain
summary 'describe the rules for each item'
description "
Prints the rules used for all items and layouts in the current site.
"

module Nanoc::CLI::Commands
  class ShowRules < ::Nanoc::CLI::CommandRunner
    def run
      require_site

      @c    = Nanoc::CLI::ANSIStringColorizer
      @calc = site.compiler.rule_memory_calculator

      # TODO: explain /foo/
      # TODO: explain content/foo.html
      # TODO: explain output/foo/index.html

      site.items.each   { |i| explain_item(i)   }
      site.layouts.each { |l| explain_layout(l) }
    end

    protected

    def explain_item(item)
      puts "#{@c.c('Item ' + item.identifier, :bold, :yellow)}:"
      puts "  (from #{item[:filename]})" if item[:filename]
      item.reps.each do |rep|
        puts "  Rep #{rep.name}:"
        if @calc[rep].empty? && rep.raw_path.nil?
          puts '    (nothing)'
        else
          @calc[rep].each do |mem|
            puts format('    %s %s',
              @c.c(format('%-10s', mem[0].to_s), :blue),
              mem[1..-1].map(&:inspect).join(', '))
          end
          if rep.raw_path
            puts format('    %s %s',
              @c.c(format('%-10s', 'write to'), :blue),
              rep.raw_path)
          end
        end
      end
      puts
    end

    def explain_layout(layout)
      puts "#{@c.c('Layout ' + layout.identifier, :bold, :yellow)}:"
      puts "  (from #{layout[:filename]})" if layout[:filename]
      puts format('  %s %s',
        @c.c(format('%-10s', 'filter'), :blue),
        @calc[layout].map(&:inspect).join(', '))
      puts
    end
  end
end

runner Nanoc::CLI::Commands::ShowRules

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
nanoc-4.0.0b2 lib/nanoc/cli/commands/show-rules.rb
nanoc-4.0.0b1 lib/nanoc/cli/commands/show-rules.rb
nanoc-4.0.0a2 lib/nanoc/cli/commands/show-rules.rb
nanoc-4.0.0a1 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.8.0 lib/nanoc/cli/commands/show-rules.rb