class EnergyPlus::ResultsLog

Public Class Methods

new(path) click to toggle source
# File lib/energyplus/ResultsLog.rb, line 25
def initialize(path)
  @path = Pathname.new(path)
  @entries = []
  @initialized = false
  @valid = false
end

Public Instance Methods

entries() click to toggle source
# File lib/energyplus/ResultsLog.rb, line 50
def entries
  init if not @initialized
  return @entries
end
find_entries(*search_terms) click to toggle source
# File lib/energyplus/ResultsLog.rb, line 32
def find_entries(*search_terms)
  init if not @initialized
  entries = @entries.select do |entry|
    found = true
    search_terms.each do |search_term|
      if not entry[:description] =~ Regexp.new(search_term)
        found = false
      end
    end
    found
  end
  return entries
end
find_entry(*search_terms) click to toggle source
# File lib/energyplus/ResultsLog.rb, line 46
def find_entry(*search_terms)
  return find_entries(*search_terms).first
end
valid?() click to toggle source
# File lib/energyplus/ResultsLog.rb, line 55
def valid?
  init if not @initialized
  return @valid
end

Private Instance Methods

init() click to toggle source
# File lib/energyplus/ResultsLog.rb, line 62
def init
  @initialized = true

  if @path.exist?
    File.open(@path) do |f|
      text = f.read
      @entries = parse_entries(text)
    end
  end

  total_site_energy = find_entry('Total Energy','Total Site Energy')
  if not total_site_energy.nil?
    if total_site_energy[:value].to_f > 0
      @valid = true
    end
  end
end
parse_entries(text) click to toggle source
# File lib/energyplus/ResultsLog.rb, line 80
def parse_entries(text)
  entries = []
  lines = text.split("\n")
  lines.each do |line|
    entry = Hash.new
    begin
      entry[:units] = line.match(/\[(.*?)\]/)[1]
    rescue
      entry[:units] = ''
    end
    entry[:description] = line.match(/(.*?),/)[1].sub(/\[.*?\]/,'').strip
    entry[:value] = line.match(/,(.*)/)[1]
    entries << entry
  end
  return entries
end