Sha256: 7863be7c7cae48ffb11b202ff6c49e5de7bd9a803bd9317bdead71b8b67fc619

Contents?: true

Size: 1.39 KB

Versions: 9

Compression:

Stored size: 1.39 KB

Contents

require 'erb'

module Bio

  class Template
    
    def initialize fn
      raise "Can not find template #{fn}!" if not File.exist?(fn)
      parse(File.read(fn))
    end

    def parse buf
      header = []
      body = []
      footer = []
      where = :header
      buf.split("\n").each do | line |
        case where
          when :header
            next if line =~ /=HEADER/
            if line =~ /=BODY/
              body = []
              where = :body
              next
            end
            header << line
          when :body
            if line =~ /=FOOTER/
              footer = []
              where = :footer
              next
            end
            body << line
          else
            footer << line
        end
      end
      if body == []
        body = header
        header = []
      end
      @erb_header = ERB.new(header.join("\n")) if header.size
      @erb_body   = ERB.new(body.join("\n")) if body.size
      @erb_footer = ERB.new(footer.join("\n")) if footer.size
    end
    
    def result env
      @erb.result(env)
    end

    def header env
      if @erb_header
        @erb_header.result(env)
      else
        ""
      end
    end

    def body env
      if @erb_body
        @erb_body.result(env)
      else
        ""
      end
    end

    def footer env
      if @erb_footer
        @erb_footer.result(env)
      else
        ""
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
bio-vcf-0.9.5 lib/bio-vcf/template.rb
bio-vcf-0.9.4 lib/bio-vcf/template.rb
bio-vcf-0.9.2 lib/bio-vcf/template.rb
bio-blastxmlparser-2.0.4 lib/bio/writers/template.rb
bio-vcf-0.9.0 lib/bio-vcf/template.rb
bio-blastxmlparser-2.0.3 lib/bio/writers/template.rb
bio-vcf-0.8.2 lib/bio-vcf/template.rb
bio-vcf-0.8.1 lib/bio-vcf/template.rb
bio-blastxmlparser-2.0.2 lib/bio/writers/template.rb