Class: Ktutils::ParseTemplate

Inherits:
Object
  • Object
show all
Defined in:
lib/ktutils/parse_template.rb

Instance Method Summary collapse

Constructor Details

#initialize(start_delim = '@', stop_delim = '@') ⇒ ParseTemplate

start_delim

Char(s) used to indicate start of replacement token. (default: @)

stop_delim

Char(s) used to indicate end of replacement token. (default: @)



21
22
23
24
25
# File 'lib/ktutils/parse_template.rb', line 21

def initialize(start_delim='@', stop_delim='@')
  @start_delim = start_delim
  @stop_delim  = stop_delim
  @tokens     = {}
end

Instance Method Details

#add_token(key, val) ⇒ Object

Add a token that will be replaced. The key must be surrounded with ‘@’ (or the specified delimiters) in the template document

key

token to be replaced.

val

value to replace token with.



31
32
33
# File 'lib/ktutils/parse_template.rb', line 31

def add_token(key, val)
  @tokens[key] = val
end

#parse(src, dest) ⇒ Object

Parse the src document and place the result at dest.

src

source document (template) to parse.

dest

destination path to resulting document.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/ktutils/parse_template.rb', line 38

def parse(src, dest)
  return unless @tokens.size > 0

  File.open( src, "r" ) do |sf|
    File.open( dest, "w" ) do |df|
      sf.each do |sline|
        @tokens.each do |token, val|
          val = val.to_s unless (val.class == String)
          rtok = "#{@start_delim}#{token}#{@stop_delim}"
          sline.gsub!(rtok, val)
        end # each token

        df.write( sline )
      end # each src line
    end # Dest file open
  end # Src file open
end