Parent

Files

Guard::DslDescriber

The DslDescriber evaluates the Guardfile and creates an internal structure of it that is used in some inspection utility methods like the CLI commands `show` and `list`.

@see Guard::Dsl @see Guard::CLI

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source

Initializes a new DslDescriber object.

@option options [String] guardfile the path to a valid Guardfile @option options [String] guardfile_contents a string representing the content of a valid Guardfile

@see Guard::Guardfile::Evaluator#initialize

# File lib/guard/dsl_describer.rb, line 26
def initialize(options = {})
  @options = options
  ::Guard.reset_groups
  ::Guard.reset_plugins
end

Public Instance Methods

list() click to toggle source

List the Guard plugins that are available for use in your system and marks those that are currently used in your `Guardfile`.

@see CLI#list

# File lib/guard/dsl_describer.rb, line 37
def list
  _evaluate_guardfile

  rows = ::Guard::PluginUtil.plugin_names.sort.uniq.inject([]) do |rows, name|
    rows << { Plugin: name.capitalize, Guardfile: ::Guard.plugins(name) ? '✔' : '✘' }
  end

  Formatador.display_compact_table(rows, [:Plugin, :Guardfile])
end
notifiers() click to toggle source

Shows all notifiers and their options that are defined in the `Guardfile`.

@see CLI#show

# File lib/guard/dsl_describer.rb, line 85
def notifiers
  _evaluate_guardfile

  rows = ::Guard::Notifier::NOTIFIERS.inject(:merge).inject([]) do |rows, definition|
    name      = definition[0]
    clazz     = definition[1]
    available = clazz.available?(silent: true) ? '✔' : '✘'
    notifier  = ::Guard::Notifier.notifiers.find{ |n| n[:name] == name }
    used      = notifier ? '✔' : '✘'
    options   = notifier ? notifier[:options] : {}
    defaults  = clazz.const_defined?(:DEFAULTS) ? clazz.const_get(:DEFAULTS) : {}
    options   = defaults.merge(options)
    options.delete(:silent)

    if options.empty?
      rows << :split
      rows << { Name: name, Available: available, Used: used, Option: '', Value: '' }
    else
      options.each_with_index do |(option, value), index|
        if index == 0
          rows << :split
          rows << { Name: name, Available: available, Used: used, Option: option.to_s, Value: value.inspect }
        else
          rows << { Name: '', Available: '', Used: '', Option: option.to_s, Value: value.inspect }
        end
      end
    end

    rows
  end

  Formatador.display_compact_table(rows.drop(1), [:Name, :Available, :Used, :Option, :Value])
end
show() click to toggle source

Shows all Guard plugins and their options that are defined in the `Guardfile`.

@see CLI#show

# File lib/guard/dsl_describer.rb, line 52
def show
  _evaluate_guardfile

  rows = ::Guard.groups.inject([]) do |rows, group|
    Array(::Guard.plugins(group: group.name)).each do |plugin|
      options = plugin.options.inject({}) { |o, (k, v)| o[k.to_s] = v; o }.sort

      if options.empty?
        rows << :split
        rows << { Group: group.title, Plugin: plugin.title, Option: '', Value: '' }
      else
        options.each_with_index do |(option, value), index|
          if index == 0
            rows << :split
            rows << { Group: group.title, Plugin: plugin.title, Option: option.to_s, Value: value.inspect }
          else
            rows << { Group: '', Plugin: '', Option: option.to_s, Value: value.inspect }
          end
        end
      end
    end

    rows
  end

  Formatador.display_compact_table(rows.drop(1), [:Group, :Plugin, :Option, :Value])
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.