class Grouik::Process

Intended to wrap “Grouik::Loader“

Easify reusability through “Grouik::Cli“ or as standalone (for example in a Rake task)

Sample of use:

“` task 'src/ceres.rb' do

require 'grouik'

Grouik.process do |process|
  process.verbose  = false
  process.paths    = ['lib']
  process.basedir  = 'src'
  process.output   = 'src/ceres.rb'
  process.template = 'src/ceres.tpl'
end.on_failure { exit Errno::ECANCELED::Errno }

end “`

Attributes

bootstrap[RW]
output[R]
template[RW]
verbose[RW]

Public Class Methods

new() { |self| ... } click to toggle source
# File src/lib/grouik/process.rb, line 41
def initialize
  @output    = nil
  @template  = nil
  @bootstrap = nil
  @verbose   = false

  @loader = Grouik::Loader.new
  yield self if block_given?
  @loader.register
end

Public Instance Methods

display_errors() click to toggle source

Display encountered errors

@return [self]

# File src/lib/grouik/process.rb, line 104
def display_errors
  helpers.get(:process).display_errors(self)

  self
end
display_status() click to toggle source

Display status

@return [self]

# File src/lib/grouik/process.rb, line 113
def display_status
  helpers.get(:process).display_status(self)

  self
end
errors() click to toggle source

Errors encountered during process

@return [Hash]

# File src/lib/grouik/process.rb, line 90
def errors
  loader.errors
end
errors?() click to toggle source

Denote errors encountered

@return [Boolean]

# File src/lib/grouik/process.rb, line 97
def errors?
  errors.empty? ? false : true
end
failure?() click to toggle source

Denote process is a failure

@return [Boolean]

# File src/lib/grouik/process.rb, line 129
def failure?
  !success?
end
format(options = {}) click to toggle source

@param [Hash] options

# File src/lib/grouik/process.rb, line 83
def format(options = {})
  @loader.format(options)
end
loader() click to toggle source

Get loader

@return [Grouik::Loader]

# File src/lib/grouik/process.rb, line 174
def loader
  @loader.clone.freeze
end
method_missing(method, *args, &block) click to toggle source

Provides access to public accessors

Calls superclass method
# File src/lib/grouik/process.rb, line 154
def method_missing(method, *args, &block)
  if respond_to_missing?(method)
    @loader.public_send(method, *args, &block)
  else
    super
  end
end
on_failure() { |self| ... } click to toggle source

Block executed on failure

@yield [self] Block executed when errors have been encountered @return [self]

# File src/lib/grouik/process.rb, line 137
def on_failure
  yield(self) if failure?

  self
end
on_success() { |self| ... } click to toggle source

Block executed on success

@yield [self] Block executed when process is a success @return [self]

# File src/lib/grouik/process.rb, line 147
def on_success
  yield(self) if success?

  self
end
output=(output) click to toggle source

@param [Pathname|String] output @return [Object]

# File src/lib/grouik/process.rb, line 58
def output=(output)
  @output = output.is_a?(String) ? Pathname.new(output) : output
end
process() click to toggle source

@return [self] @todo Do not suppress exceptions

# File src/lib/grouik/process.rb, line 64
def process
  @output.write('') if @output.respond_to?(:file?) and !@output.exist?
  if bootstrap
    begin
      require bootstrap if bootstrap
    rescue NameError
    rescue LoadError
    end
  end

  output = @loader.format(template: @template)
  display_errors
  # avoid to break previouly written file in case of failure
  @output.write(output) if success?

  self
end
respond_to_missing?(method, include_private = false) click to toggle source
Calls superclass method
# File src/lib/grouik/process.rb, line 162
def respond_to_missing?(method, include_private = false)
  result = loader_accessors.include?(method.to_sym)
  unless result
    return super if include_private
  end

  result
end
success?() click to toggle source

Denote process is a success

@return [Boolean]

# File src/lib/grouik/process.rb, line 122
def success?
  loader.loaded? and !errors?
end
verbose?() click to toggle source
# File src/lib/grouik/process.rb, line 52
def verbose?
  !!@verbose
end

Protected Instance Methods

loader_accessors() click to toggle source

Get loader public accessors

@return [Array]

# File src/lib/grouik/process.rb, line 192
def loader_accessors
  loader_attributes + loader_attributes.map { |m| ('%s=' % m).to_sym }
end
loader_attributes() click to toggle source

Get loader public attributes

@return [Array]

# File src/lib/grouik/process.rb, line 183
def loader_attributes
  loader.public_methods
        .grep(/^\w+=$/)
        .map { |m| m.to_s.gsub(/=$/, '').to_sym }
end