Sha256: daaeddcc14d279e0eede155cef50d3217fc2a87eebe927a780efd33cf58a8508

Contents?: true

Size: 1.11 KB

Versions: 5

Compression:

Stored size: 1.11 KB

Contents

require 'erb'
require 'fileutils'

class XlsxWriter
  class Xml
    class << self
      def auto
        descendants.reject do |klass|
          klass.const_defined?(:AUTO) and klass.const_get(:AUTO) == false
        end
      end
    end
    
    attr_reader :document

    def initialize(document)
      @mutex = Mutex.new
      @document = document
    end

    def generate
      path
      true
    end

    def generated?
      @generated == true
    end
    
    def path
      @path || @mutex.synchronize do
        @path ||= begin
          memo = ::File.join document.staging_dir, relative_path
          ::FileUtils.mkdir_p ::File.dirname(memo)
          ::File.open(memo, 'wb') do |f|
            f.write render
          end
          converted = ::UnixUtils.unix2dos memo
          ::FileUtils.mv converted, memo
          @generated = true
          memo
        end
      end
    end
        
    def template_path
      ::File.expand_path "../xml/#{self.class.name.demodulize.underscore}.erb", __FILE__
    end
    
    def render
      ::ERB.new(::File.read(template_path), nil, '<>').result(binding)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
xlsx_writer-0.4.4 lib/xlsx_writer/xml.rb
xlsx_writer-0.4.3 lib/xlsx_writer/xml.rb
xlsx_writer-0.4.2 lib/xlsx_writer/xml.rb
xlsx_writer-0.4.1 lib/xlsx_writer/xml.rb
xlsx_writer-0.4.0 lib/xlsx_writer/xml.rb