Sha256: 080187740828583d71caaba55c44f4cd6bc604154e6ad34b3db580f842eb6e8a

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

module Booky::Textile
  class Source
    include Booky::Textile::Precompiler
    
    # Does the current line need to be precompiled?
    def matches line
      return false unless line.match /^source/
      line.gsub("source", "").strip
    end
    
    # Replace the path with the contents of the file
    def compile_to options
      begin
        options = parse(options)
        @output = "bc{name: #{options[:name]};}.. "
        @output += File.open("#{File.dirname(Booky.source)}/#{options[:file]}", 'rb') { |f| f.read }
        @output += "\n\np. \n"
        @output
      rescue
        raise Booky::LoadError.new "#{File.dirname(Booky.source)}/#{options[:name]}"
      end
    end
    
    # Parses the options for a name and the file
    def parse options
      if name_match = options.match(/{(.*?)}/)
        options = options.gsub(name_match[0], "")
        name = name_match[1]
      end
      
      file = options[1..-1].strip
      name = File.basename("#{File.dirname(Booky.source)}/#{file}") unless name
      
      { :name => name, :file => file }
    end
    
  end  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
booky-0.0.4 lib/booky/textile/source.rb