Sha256: a7da36b42fc6bb3c722a914634bb582af9bb30d84c9495e95643a25093a8f9e7

Contents?: true

Size: 1.74 KB

Versions: 11

Compression:

Stored size: 1.74 KB

Contents

# encoding: utf-8

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

module Nanoc::CLI::Commands

  class ShowRules < ::Nanoc::CLI::CommandRunner

    def run
      self.require_site

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

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

      self.site.items.each   { |i| self.explain_item(i)   }
      self.site.layouts.each { |l| self.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 '    %s %s' % [
              @c.c(format('%-10s', mem[0].to_s), :blue),
              mem[1..-1].map { |m| m.inspect }.join(', ')
            ]
          end
          if rep.raw_path
            puts '    %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 "  %s %s" % [
        @c.c(format('%-10s', 'filter'), :blue),
        @calc[layout].map { |m| m.inspect }.join(', ')
      ]
      puts
    end

  end

end

runner Nanoc::CLI::Commands::ShowRules

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
nanoc-3.6.7 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.6.6 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.6.5 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.6.4 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.6.3 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.6.2 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.6.1 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.6.0 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.5.0 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.5.0b2 lib/nanoc/cli/commands/show-rules.rb
nanoc-3.5.0b1 lib/nanoc/cli/commands/show-rules.rb