Class: FileGenTask

Inherits:
Object
  • Object
show all
Defined in:
lib/rakeutils/filegentask.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(verbose = false) ⇒ FileGenTask

Constructor

verbose

verbose output flag. Default = false



59
60
61
62
63
64
65
66
# File 'lib/rakeutils/filegentask.rb', line 59

def initialize(verbose=false)
  @src = ""
  @dest = ""
  @data_file = ""
  @start_delim = "@"
  @stop_delim = "@"
  @verbose = verbose
end

Instance Method Details

#generate(src, dest, data) ⇒ Object

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.



81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 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) ⇒ Object

Load data from YAML based data file.

data_file

name/path of YAML based data file



98
99
100
101
102
# 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) ⇒ Object

Parse the source file and create the destination file.

src

source template file

dest

Destination filename and path



107
108
109
110
111
112
113
114
# 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) ⇒ Object

Set token delimiters

start

start delimiter char

stop

stop delimiter char



71
72
73
74
75
# 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