class FileGenTask

Define a generator object that creates a file from a template and a YML data file.

Public Class Methods

new(verbose=false) click to toggle source

Constructor

verbose

verbose output flag. Default = false

# File lib/rakeutils/filegentask.rb, line 59
def initialize(verbose=false)
  @src = ""
  @dest = ""
  @data_file = ""
  @start_delim = "@"
  @stop_delim = "@"
  @verbose = verbose
end

Public Instance Methods

generate(src, dest, data) click to toggle source

Generate files.

src

source template file

dest

name of file to output.

data

string or hash. if a string, it will be treated as a YML filename.

# File lib/rakeutils/filegentask.rb, line 81
def generate(src, dest, data)
  puts "FileGenTask: Generating file [ #{dest} ] from [ #{src} ]" if @verbose
  if(data.class == String)
    load_data(data)
  else
    if( data.class != Hash )
      puts "* ERROR: FileGenTask::generate - data must be string (YML filename) or hash *"
      return unless (data.class == Hash)
    end
    @data = data
  end

  parse_src_to( src, dest )
end
load_data(data_file) click to toggle source

Load data from YAML based data file.

data_file

name/path of YAML based data file

# File lib/rakeutils/filegentask.rb, line 98
def load_data(data_file)
  puts "FileGenTask: Loading data from YML file [ #{data_file} ]" if @verbose
  df = DataFile.new
  @data = df.read( data_file )
end
parse_src_to(src, dest) click to toggle source

Parse the source file and create the destination file.

src

source template file

dest

Destination filename and path

# File lib/rakeutils/filegentask.rb, line 107
def parse_src_to(src, dest)
  pt = Ktutils::ParseTemplate.new(@start_delim, @stop_delim)

  @data.each do |t, v|
    pt.add_token( t, v )
  end
  pt.parse( src, dest )
end
set_delimiters(start, stop) click to toggle source

Set token delimiters

start

start delimiter char

stop

stop delimiter char

# File lib/rakeutils/filegentask.rb, line 71
def set_delimiters(start, stop)
  @start_delim = start
  @stop_delim = stop
  puts "FileGenTask: Setting token delimeters to #{@start_delim}, #{@stop_delim}" if @verbose
end