rubbr 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +5 -0
 - data/Manifest.txt +26 -0
 - data/README.txt +70 -0
 - data/Rakefile +18 -0
 - data/bin/rubbr +4 -0
 - data/lib/rubbr.rb +80 -0
 - data/lib/rubbr/builder.rb +68 -0
 - data/lib/rubbr/builder/dvi.rb +18 -0
 - data/lib/rubbr/builder/ps.rb +18 -0
 - data/lib/rubbr/builder/tex.rb +71 -0
 - data/lib/rubbr/cli.rb +38 -0
 - data/lib/rubbr/options.rb +76 -0
 - data/lib/rubbr/runner.rb +67 -0
 - data/lib/rubbr/runner/bibtex.rb +15 -0
 - data/lib/rubbr/runner/dvips.rb +16 -0
 - data/lib/rubbr/runner/latex.rb +24 -0
 - data/lib/rubbr/runner/pdflatex.rb +24 -0
 - data/lib/rubbr/runner/ps2pdf.rb +15 -0
 - data/lib/rubbr/scm.rb +38 -0
 - data/lib/rubbr/scm/mercurial.rb +35 -0
 - data/lib/rubbr/scm/subversion.rb +35 -0
 - data/lib/rubbr/spell.rb +15 -0
 - data/lib/rubbr/viewer.rb +56 -0
 - data/lib/rubbr/viewer/dvi.rb +11 -0
 - data/lib/rubbr/viewer/pdf.rb +11 -0
 - data/lib/rubbr/viewer/ps.rb +11 -0
 - metadata +89 -0
 
    
        data/History.txt
    ADDED
    
    
    
        data/Manifest.txt
    ADDED
    
    | 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            History.txt
         
     | 
| 
      
 2 
     | 
    
         
            +
            Manifest.txt
         
     | 
| 
      
 3 
     | 
    
         
            +
            README.txt
         
     | 
| 
      
 4 
     | 
    
         
            +
            Rakefile
         
     | 
| 
      
 5 
     | 
    
         
            +
            bin/rubbr
         
     | 
| 
      
 6 
     | 
    
         
            +
            lib/rubbr.rb
         
     | 
| 
      
 7 
     | 
    
         
            +
            lib/rubbr/builder.rb
         
     | 
| 
      
 8 
     | 
    
         
            +
            lib/rubbr/cli.rb
         
     | 
| 
      
 9 
     | 
    
         
            +
            lib/rubbr/options.rb
         
     | 
| 
      
 10 
     | 
    
         
            +
            lib/rubbr/runner.rb
         
     | 
| 
      
 11 
     | 
    
         
            +
            lib/rubbr/scm.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
            lib/rubbr/spell.rb
         
     | 
| 
      
 13 
     | 
    
         
            +
            lib/rubbr/viewer.rb
         
     | 
| 
      
 14 
     | 
    
         
            +
            lib/rubbr/builder/tex.rb
         
     | 
| 
      
 15 
     | 
    
         
            +
            lib/rubbr/builder/ps.rb
         
     | 
| 
      
 16 
     | 
    
         
            +
            lib/rubbr/builder/dvi.rb
         
     | 
| 
      
 17 
     | 
    
         
            +
            lib/rubbr/runner/ps2pdf.rb
         
     | 
| 
      
 18 
     | 
    
         
            +
            lib/rubbr/runner/pdflatex.rb
         
     | 
| 
      
 19 
     | 
    
         
            +
            lib/rubbr/runner/latex.rb
         
     | 
| 
      
 20 
     | 
    
         
            +
            lib/rubbr/runner/dvips.rb
         
     | 
| 
      
 21 
     | 
    
         
            +
            lib/rubbr/runner/bibtex.rb
         
     | 
| 
      
 22 
     | 
    
         
            +
            lib/rubbr/scm/subversion.rb
         
     | 
| 
      
 23 
     | 
    
         
            +
            lib/rubbr/scm/mercurial.rb
         
     | 
| 
      
 24 
     | 
    
         
            +
            lib/rubbr/viewer/ps.rb
         
     | 
| 
      
 25 
     | 
    
         
            +
            lib/rubbr/viewer/pdf.rb
         
     | 
| 
      
 26 
     | 
    
         
            +
            lib/rubbr/viewer/dvi.rb
         
     | 
    
        data/README.txt
    ADDED
    
    | 
         @@ -0,0 +1,70 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
                by Eivind Uggedal
         
     | 
| 
      
 3 
     | 
    
         
            +
                http://rubbr.rubyforge.org
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            == DESCRIPTION:
         
     | 
| 
      
 6 
     | 
    
         
            +
              
         
     | 
| 
      
 7 
     | 
    
         
            +
            Build LaTeX documents.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            == SYNOPSIS:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              Usage: rubbr [options]
         
     | 
| 
      
 12 
     | 
    
         
            +
                  -f, --format [FORMAT]            Select output format (dvi, ps, pdf)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  -v, --view                       View the document
         
     | 
| 
      
 14 
     | 
    
         
            +
                  -s, --spell                      Spell check source files
         
     | 
| 
      
 15 
     | 
    
         
            +
                  -h, --help                       Show this help message
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            Standard project layout:
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              root_dir         = Dir.pwd
         
     | 
| 
      
 20 
     | 
    
         
            +
              source_dir       = 'src'
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
              @defaults ||= {
         
     | 
| 
      
 23 
     | 
    
         
            +
                :root_dir          => File.pwd,
         
     | 
| 
      
 24 
     | 
    
         
            +
                :source_dir        => source_dir,
         
     | 
| 
      
 25 
     | 
    
         
            +
                :build_dir         => 'tmp',
         
     | 
| 
      
 26 
     | 
    
         
            +
                :distribution_dir  => 'dist',
         
     | 
| 
      
 27 
     | 
    
         
            +
                :template_file     => 'template.erb',
         
     | 
| 
      
 28 
     | 
    
         
            +
                :base_file         => 'base',
         
     | 
| 
      
 29 
     | 
    
         
            +
                :vendor_dir        => source_dir + '/vendor',
         
     | 
| 
      
 30 
     | 
    
         
            +
                :graphics_dir      => source_dir + '/graphics',
         
     | 
| 
      
 31 
     | 
    
         
            +
                :spell_dir         => source_dir,
         
     | 
| 
      
 32 
     | 
    
         
            +
                :spell_file        => 'dictionary.ispell',
         
     | 
| 
      
 33 
     | 
    
         
            +
                :distribution_name => distribution_name(root_dir)
         
     | 
| 
      
 34 
     | 
    
         
            +
              }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            All these can be changed with a config.yml in the root_dir:
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              ---
         
     | 
| 
      
 39 
     | 
    
         
            +
              build_dir: build
         
     | 
| 
      
 40 
     | 
    
         
            +
              graphics_dir: src/figures
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            == INSTALL:
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            gem install rubbr
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            == LICENSE:
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            (The MIT License)
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            Copyright (c) 2008 Eivind Uggedal
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 54 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 55 
     | 
    
         
            +
            'Software'), to deal in the Software without restriction, including
         
     | 
| 
      
 56 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 57 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 58 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 59 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 62 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 65 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 66 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
         
     | 
| 
      
 67 
     | 
    
         
            +
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
         
     | 
| 
      
 68 
     | 
    
         
            +
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
         
     | 
| 
      
 69 
     | 
    
         
            +
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
         
     | 
| 
      
 70 
     | 
    
         
            +
            SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- ruby -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'hoe'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require './lib/rubbr.rb'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            Hoe.new('rubbr', Rubbr::VERSION) do |p|
         
     | 
| 
      
 8 
     | 
    
         
            +
              p.rubyforge_name = 'rubbr'
         
     | 
| 
      
 9 
     | 
    
         
            +
              p.author = 'Eivind Uggedal'
         
     | 
| 
      
 10 
     | 
    
         
            +
              p.email = 'eu@redflavor.com'
         
     | 
| 
      
 11 
     | 
    
         
            +
              p.summary = 'LaTeX builder'
         
     | 
| 
      
 12 
     | 
    
         
            +
              # p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
         
     | 
| 
      
 13 
     | 
    
         
            +
              # p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
         
     | 
| 
      
 14 
     | 
    
         
            +
              p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
         
     | 
| 
      
 15 
     | 
    
         
            +
              p.remote_rdoc_dir = ''
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            # vim: syntax=Ruby
         
     | 
    
        data/bin/rubbr
    ADDED
    
    
    
        data/lib/rubbr.rb
    ADDED
    
    | 
         @@ -0,0 +1,80 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.unshift File.dirname(__FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 5 
     | 
    
         
            +
              VERSION = '1.0.0'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              autoload :Options,       'rubbr/options'
         
     | 
| 
      
 8 
     | 
    
         
            +
              autoload :Cli,           'rubbr/cli'
         
     | 
| 
      
 9 
     | 
    
         
            +
              autoload :Config,        'rubbr/config'
         
     | 
| 
      
 10 
     | 
    
         
            +
              autoload :Scm,           'rubbr/scm'
         
     | 
| 
      
 11 
     | 
    
         
            +
              autoload :Template,      'rubbr/template'
         
     | 
| 
      
 12 
     | 
    
         
            +
              autoload :Runner,        'rubbr/runner'
         
     | 
| 
      
 13 
     | 
    
         
            +
              autoload :Builder,       'rubbr/builder'
         
     | 
| 
      
 14 
     | 
    
         
            +
              autoload :Viewer,        'rubbr/viewer'
         
     | 
| 
      
 15 
     | 
    
         
            +
              autoload :Spell,         'rubbr/spell'
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 18 
     | 
    
         
            +
                # Setting up an options accessor.
         
     | 
| 
      
 19 
     | 
    
         
            +
                def options
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @@options ||= Rubbr::Options.setup
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def run(args = ARGV)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  options = {}
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  opts = OptionParser.new do |opts|
         
     | 
| 
      
 27 
     | 
    
         
            +
                    opts.version = Rubbr::VERSION
         
     | 
| 
      
 28 
     | 
    
         
            +
                    opts.banner = 'Usage: rubbr [options]'
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                    opts.on('-f', '--format [FORMAT]', [:dvi, :ps, :pdf],
         
     | 
| 
      
 31 
     | 
    
         
            +
                      'Select output format (dvi, ps, pdf)') do |format|
         
     | 
| 
      
 32 
     | 
    
         
            +
                      options[:format] = format
         
     | 
| 
      
 33 
     | 
    
         
            +
                    end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    opts.on('-v', '--view', 'View the document') do
         
     | 
| 
      
 36 
     | 
    
         
            +
                      options[:view] = true
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                    opts.on('-s', '--spell', 'Spell check source files') do
         
     | 
| 
      
 40 
     | 
    
         
            +
                      options[:spell] = true
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                    opts.on('-h', '--help', 'Show this help message') do
         
     | 
| 
      
 44 
     | 
    
         
            +
                      puts opts
         
     | 
| 
      
 45 
     | 
    
         
            +
                      exit 1
         
     | 
| 
      
 46 
     | 
    
         
            +
                    end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 50 
     | 
    
         
            +
                    opts.parse!(args)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  rescue OptionParser::ParseError
         
     | 
| 
      
 52 
     | 
    
         
            +
                    puts opts
         
     | 
| 
      
 53 
     | 
    
         
            +
                    exit 1
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  if options[:spell]
         
     | 
| 
      
 57 
     | 
    
         
            +
                    spell
         
     | 
| 
      
 58 
     | 
    
         
            +
                  elsif options[:view]
         
     | 
| 
      
 59 
     | 
    
         
            +
                    view(options[:format])
         
     | 
| 
      
 60 
     | 
    
         
            +
                  else
         
     | 
| 
      
 61 
     | 
    
         
            +
                    build(options[:format])
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                private
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                  def build(format)
         
     | 
| 
      
 68 
     | 
    
         
            +
                    Rubbr::Builder.build(format)
         
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  def view(format)
         
     | 
| 
      
 72 
     | 
    
         
            +
                    build(format)
         
     | 
| 
      
 73 
     | 
    
         
            +
                    Rubbr::Viewer.view(format)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                  def spell
         
     | 
| 
      
 77 
     | 
    
         
            +
                    Rubbr::Spell.check
         
     | 
| 
      
 78 
     | 
    
         
            +
                  end
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
      
 80 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,68 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              # Handles the business of building latex (and bibtex if needed) source
         
     | 
| 
      
 6 
     | 
    
         
            +
              # files into binary formats as dvi, ps, and pdf. The latex and bibtex
         
     | 
| 
      
 7 
     | 
    
         
            +
              # utilites need to be run a certain number of times so that things like
         
     | 
| 
      
 8 
     | 
    
         
            +
              # table of contents, references, citations, etc become proper. This module
         
     | 
| 
      
 9 
     | 
    
         
            +
              # tries to solve this issue by running the needed utilities only as many
         
     | 
| 
      
 10 
     | 
    
         
            +
              # times as needed.
         
     | 
| 
      
 11 
     | 
    
         
            +
              module Builder
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                # Build to the spesified format.
         
     | 
| 
      
 14 
     | 
    
         
            +
                def self.build(format)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  case format
         
     | 
| 
      
 16 
     | 
    
         
            +
                  when :dvi
         
     | 
| 
      
 17 
     | 
    
         
            +
                    Rubbr::Builder::Tex.build
         
     | 
| 
      
 18 
     | 
    
         
            +
                  when :ps
         
     | 
| 
      
 19 
     | 
    
         
            +
                    Rubbr::Builder::Tex.build
         
     | 
| 
      
 20 
     | 
    
         
            +
                    Rubbr::Builder::Dvi.build
         
     | 
| 
      
 21 
     | 
    
         
            +
                  else
         
     | 
| 
      
 22 
     | 
    
         
            +
                    Rubbr::Builder::Tex.build
         
     | 
| 
      
 23 
     | 
    
         
            +
                    Rubbr::Builder::Dvi.build
         
     | 
| 
      
 24 
     | 
    
         
            +
                    Rubbr::Builder::Ps.build
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 29 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 30 
     | 
    
         
            +
                    include Rubbr::Cli
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    protected
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                      def build_dir
         
     | 
| 
      
 35 
     | 
    
         
            +
                        prepare_dir(Rubbr.options[:build_dir]) do
         
     | 
| 
      
 36 
     | 
    
         
            +
                          yield
         
     | 
| 
      
 37 
     | 
    
         
            +
                        end
         
     | 
| 
      
 38 
     | 
    
         
            +
                      end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                      def distribute_file(base_file)
         
     | 
| 
      
 41 
     | 
    
         
            +
                        prepare_dir(Rubbr.options[:distribution_dir]) do
         
     | 
| 
      
 42 
     | 
    
         
            +
                          FileUtils.cp(File.join(Rubbr.options[:build_dir],
         
     | 
| 
      
 43 
     | 
    
         
            +
                                       "#{base_file.gsub(/.\w+$/, '')}.#@output_format"),
         
     | 
| 
      
 44 
     | 
    
         
            +
                             File.join(Rubbr.options[:distribution_dir],
         
     | 
| 
      
 45 
     | 
    
         
            +
                                       Rubbr.options[:distribution_name] +
         
     | 
| 
      
 46 
     | 
    
         
            +
                                       ".#@output_format"))
         
     | 
| 
      
 47 
     | 
    
         
            +
                        end
         
     | 
| 
      
 48 
     | 
    
         
            +
                      end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                      def prepare_dir(dir)
         
     | 
| 
      
 51 
     | 
    
         
            +
                        if dir
         
     | 
| 
      
 52 
     | 
    
         
            +
                          FileUtils.mkdir_p dir unless File.exists? dir
         
     | 
| 
      
 53 
     | 
    
         
            +
                          FileUtils.cd dir do
         
     | 
| 
      
 54 
     | 
    
         
            +
                            yield
         
     | 
| 
      
 55 
     | 
    
         
            +
                          end
         
     | 
| 
      
 56 
     | 
    
         
            +
                        else
         
     | 
| 
      
 57 
     | 
    
         
            +
                          yield
         
     | 
| 
      
 58 
     | 
    
         
            +
                        end
         
     | 
| 
      
 59 
     | 
    
         
            +
                      end
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                %w(tex dvi ps).each do
         
     | 
| 
      
 64 
     | 
    
         
            +
                  |f| require File.dirname(__FILE__) + "/builder/#{f}"
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Builder
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Dvi < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def self.build
         
     | 
| 
      
 5 
     | 
    
         
            +
                    @output_format = 'ps'
         
     | 
| 
      
 6 
     | 
    
         
            +
                    base_dvi_file = Rubbr.options[:base_dvi_file]
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                    build_dir do
         
     | 
| 
      
 9 
     | 
    
         
            +
                      dvips = Rubbr::Runner::DviPs.new(base_dvi_file)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    distribute_file(base_dvi_file)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    notice "Build of #{@output_format} completed for: #{base_dvi_file} " +
         
     | 
| 
      
 14 
     | 
    
         
            +
                           "in #{Rubbr.options[:build_dir]}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Builder
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Ps < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def self.build
         
     | 
| 
      
 5 
     | 
    
         
            +
                    @output_format = 'pdf'
         
     | 
| 
      
 6 
     | 
    
         
            +
                    base_ps_file = Rubbr.options[:base_ps_file]
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                    build_dir do
         
     | 
| 
      
 9 
     | 
    
         
            +
                      dvips = Rubbr::Runner::Ps2Pdf.new(base_ps_file)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    distribute_file(base_ps_file)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    notice "Build of #{@output_format} completed for: #{base_ps_file} " +
         
     | 
| 
      
 14 
     | 
    
         
            +
                           "in #{Rubbr.options[:build_dir]}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,71 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Builder
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Tex < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
                    def build(output_format = 'dvi')
         
     | 
| 
      
 6 
     | 
    
         
            +
                      @output_format = output_format
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                      clean_build_dir
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                      base_latex_file = Rubbr.options[:base_latex_file]
         
     | 
| 
      
 11 
     | 
    
         
            +
                      base_bibtex_file = Rubbr.options[:base_bibtex_file]
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                      if output_format == 'pdf'
         
     | 
| 
      
 14 
     | 
    
         
            +
                        preprocessor = Rubbr::Runner::PdfLaTeX
         
     | 
| 
      
 15 
     | 
    
         
            +
                      else
         
     | 
| 
      
 16 
     | 
    
         
            +
                        preprocessor = Rubbr::Runner::LaTeX
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                      build_dir do
         
     | 
| 
      
 20 
     | 
    
         
            +
                        copy_source_files
         
     | 
| 
      
 21 
     | 
    
         
            +
                        copy_vendor_files
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                        latex = preprocessor.new(base_latex_file, true)
         
     | 
| 
      
 24 
     | 
    
         
            +
                        if base_bibtex_file && latex.warnings.join =~ /No file .+\.bbl/
         
     | 
| 
      
 25 
     | 
    
         
            +
                          bibtex = Rubbr::Runner::BibTeX.new(base_bibtex_file, true)
         
     | 
| 
      
 26 
     | 
    
         
            +
                        end
         
     | 
| 
      
 27 
     | 
    
         
            +
                        if latex.warnings.join =~ /No file .+\.(aux|toc)/
         
     | 
| 
      
 28 
     | 
    
         
            +
                          latex = preprocessor.new(base_latex_file, true)
         
     | 
| 
      
 29 
     | 
    
         
            +
                        end
         
     | 
| 
      
 30 
     | 
    
         
            +
                        if latex.warnings.join =~ /There were undefined citations/
         
     | 
| 
      
 31 
     | 
    
         
            +
                          latex = preprocessor.new(base_latex_file, true)
         
     | 
| 
      
 32 
     | 
    
         
            +
                        end
         
     | 
| 
      
 33 
     | 
    
         
            +
                        latex.silent = false
         
     | 
| 
      
 34 
     | 
    
         
            +
                        latex.feedback
         
     | 
| 
      
 35 
     | 
    
         
            +
                        if bibtex
         
     | 
| 
      
 36 
     | 
    
         
            +
                          bibtex.silent = false
         
     | 
| 
      
 37 
     | 
    
         
            +
                          bibtex.feedback
         
     | 
| 
      
 38 
     | 
    
         
            +
                        end
         
     | 
| 
      
 39 
     | 
    
         
            +
                      end
         
     | 
| 
      
 40 
     | 
    
         
            +
                      distribute_file(base_latex_file)
         
     | 
| 
      
 41 
     | 
    
         
            +
                      notice "Build of #@output_format completed for: #{base_latex_file} " +
         
     | 
| 
      
 42 
     | 
    
         
            +
                             "in #{Rubbr.options[:build_dir]}"
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                    private
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                      def clean_build_dir
         
     | 
| 
      
 48 
     | 
    
         
            +
                        if File.exists? Rubbr.options[:build_dir]
         
     | 
| 
      
 49 
     | 
    
         
            +
                          FileUtils.rm_r Rubbr.options[:build_dir]
         
     | 
| 
      
 50 
     | 
    
         
            +
                        end
         
     | 
| 
      
 51 
     | 
    
         
            +
                      end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                      def copy_source_files
         
     | 
| 
      
 54 
     | 
    
         
            +
                        copy_files(Rubbr.options[:source_dir], %w(tex bib cls))
         
     | 
| 
      
 55 
     | 
    
         
            +
                      end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                      def copy_vendor_files
         
     | 
| 
      
 58 
     | 
    
         
            +
                        copy_files(Rubbr.options[:vendor_dir], %w(sty clo cls cfg))
         
     | 
| 
      
 59 
     | 
    
         
            +
                      end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                      def copy_files(source_dir, file_extensions)
         
     | 
| 
      
 62 
     | 
    
         
            +
                        file_extensions.each do |file_extension|
         
     | 
| 
      
 63 
     | 
    
         
            +
                          Dir["#{source_dir}/*.#{file_extension}"].each do |file|
         
     | 
| 
      
 64 
     | 
    
         
            +
                            FileUtils.cp(file,  Rubbr.options[:build_dir])
         
     | 
| 
      
 65 
     | 
    
         
            +
                          end
         
     | 
| 
      
 66 
     | 
    
         
            +
                        end
         
     | 
| 
      
 67 
     | 
    
         
            +
                      end
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rubbr/cli.rb
    ADDED
    
    | 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              # Handles command line output and input.
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Cli
         
     | 
| 
      
 5 
     | 
    
         
            +
                def notice(message)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  puts message
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def warning(message)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  puts "  - #{message}"
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def error(message)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  puts "  * #{message}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def disable_stdout
         
     | 
| 
      
 18 
     | 
    
         
            +
                  old_stdout = STDOUT.dup
         
     | 
| 
      
 19 
     | 
    
         
            +
                  STDOUT.reopen('/dev/null')
         
     | 
| 
      
 20 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 21 
     | 
    
         
            +
                  STDOUT.reopen(old_stdout)
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def disable_stderr
         
     | 
| 
      
 25 
     | 
    
         
            +
                  old_stderr = STDERR.dup
         
     | 
| 
      
 26 
     | 
    
         
            +
                  STDERR.reopen('/dev/null')
         
     | 
| 
      
 27 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 28 
     | 
    
         
            +
                  STDERR.reopen(old_stderr)
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def disable_stdinn
         
     | 
| 
      
 32 
     | 
    
         
            +
                  old_stdinn = STDIN.dup
         
     | 
| 
      
 33 
     | 
    
         
            +
                  STDIN.reopen('/dev/null')
         
     | 
| 
      
 34 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 35 
     | 
    
         
            +
                  STDIN.reopen(old_stdinn)
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Options
         
     | 
| 
      
 3 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 4 
     | 
    
         
            +
                  include Rubbr::Cli
         
     | 
| 
      
 5 
     | 
    
         
            +
                  def defaults
         
     | 
| 
      
 6 
     | 
    
         
            +
                    root_dir         = Dir.pwd
         
     | 
| 
      
 7 
     | 
    
         
            +
                    source_dir       = 'src'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                    @defaults ||= {
         
     | 
| 
      
 10 
     | 
    
         
            +
                      :root_dir          => root_dir,
         
     | 
| 
      
 11 
     | 
    
         
            +
                      :source_dir        => source_dir,
         
     | 
| 
      
 12 
     | 
    
         
            +
                      :build_dir         => 'tmp',
         
     | 
| 
      
 13 
     | 
    
         
            +
                      :distribution_dir  => 'dist',
         
     | 
| 
      
 14 
     | 
    
         
            +
                      :template_file     => 'template.erb',
         
     | 
| 
      
 15 
     | 
    
         
            +
                      :base_file         => 'base',
         
     | 
| 
      
 16 
     | 
    
         
            +
                      :vendor_dir        => source_dir + '/vendor',
         
     | 
| 
      
 17 
     | 
    
         
            +
                      :graphics_dir      => source_dir + '/graphics',
         
     | 
| 
      
 18 
     | 
    
         
            +
                      :spell_dir         => source_dir,
         
     | 
| 
      
 19 
     | 
    
         
            +
                      :spell_file        => 'dictionary.ispell',
         
     | 
| 
      
 20 
     | 
    
         
            +
                      :distribution_name => distribution_name(root_dir)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    }
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  # Fetching options from a config file if present and merges it
         
     | 
| 
      
 25 
     | 
    
         
            +
                  # with the defaults.
         
     | 
| 
      
 26 
     | 
    
         
            +
                  def setup
         
     | 
| 
      
 27 
     | 
    
         
            +
                    preference_file = "#{defaults[:root_dir]}/config.yml"
         
     | 
| 
      
 28 
     | 
    
         
            +
                    preferences = {}
         
     | 
| 
      
 29 
     | 
    
         
            +
                    if File.exists? preference_file
         
     | 
| 
      
 30 
     | 
    
         
            +
                      require 'yaml'
         
     | 
| 
      
 31 
     | 
    
         
            +
                      File.open(preference_file) { |file| preferences = YAML.load(file) }
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                    base_file_variations(absolute_paths(defaults.merge(preferences)))
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  private
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                    def distribution_name(root)
         
     | 
| 
      
 39 
     | 
    
         
            +
                      name = File.basename(root)
         
     | 
| 
      
 40 
     | 
    
         
            +
                      name << ".#{user_name}"
         
     | 
| 
      
 41 
     | 
    
         
            +
                      if stats = Rubbr::Scm.stats(root)
         
     | 
| 
      
 42 
     | 
    
         
            +
                        name << ".r#{stats[:revision].gsub(':', '_')}"
         
     | 
| 
      
 43 
     | 
    
         
            +
                      end
         
     | 
| 
      
 44 
     | 
    
         
            +
                      name
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                    def user_name
         
     | 
| 
      
 48 
     | 
    
         
            +
                      `whoami`.strip
         
     | 
| 
      
 49 
     | 
    
         
            +
                    end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                    def absolute_paths(options)
         
     | 
| 
      
 52 
     | 
    
         
            +
                      relatives = %w(source_dir
         
     | 
| 
      
 53 
     | 
    
         
            +
                                     build_dir
         
     | 
| 
      
 54 
     | 
    
         
            +
                                     distribution_dir
         
     | 
| 
      
 55 
     | 
    
         
            +
                                     template_file
         
     | 
| 
      
 56 
     | 
    
         
            +
                                     vendor_dir
         
     | 
| 
      
 57 
     | 
    
         
            +
                                     graphics_dir
         
     | 
| 
      
 58 
     | 
    
         
            +
                                     spell_dir)
         
     | 
| 
      
 59 
     | 
    
         
            +
                      relatives.each do |key|
         
     | 
| 
      
 60 
     | 
    
         
            +
                        options[key.to_sym] = File.join(options[:root_dir],
         
     | 
| 
      
 61 
     | 
    
         
            +
                                                        options[key.to_sym])
         
     | 
| 
      
 62 
     | 
    
         
            +
                      end
         
     | 
| 
      
 63 
     | 
    
         
            +
                      options
         
     | 
| 
      
 64 
     | 
    
         
            +
                    end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                    def base_file_variations(options)
         
     | 
| 
      
 67 
     | 
    
         
            +
                      options[:base_latex_file]  = options[:base_file] + '.tex'
         
     | 
| 
      
 68 
     | 
    
         
            +
                      options[:base_bibtex_file] = options[:base_file] + '.aux'
         
     | 
| 
      
 69 
     | 
    
         
            +
                      options[:base_dvi_file]    = options[:base_file] + '.dvi'
         
     | 
| 
      
 70 
     | 
    
         
            +
                      options[:base_ps_file]     = options[:base_file] + '.ps'
         
     | 
| 
      
 71 
     | 
    
         
            +
                      options[:base_pdf_file]    = options[:base_file] + '.pdf'
         
     | 
| 
      
 72 
     | 
    
         
            +
                      options
         
     | 
| 
      
 73 
     | 
    
         
            +
                    end
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rubbr/runner.rb
    ADDED
    
    | 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              # Takes care of running latex and related utilities. Gives helpful
         
     | 
| 
      
 4 
     | 
    
         
            +
              # information if input files are missing and also cleans up the output of
         
     | 
| 
      
 5 
     | 
    
         
            +
              # these utilities.
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Runner
         
     | 
| 
      
 7 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 8 
     | 
    
         
            +
                  include Rubbr::Cli
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  # The file to be run trough the latex process.
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attr_accessor :input_file
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  # If true no messages is sendt to standard out. Defaults to false.
         
     | 
| 
      
 14 
     | 
    
         
            +
                  attr_accessor :silent
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  # The executable to be run.
         
     | 
| 
      
 17 
     | 
    
         
            +
                  attr_accessor :executable
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  # Contains a list of possible warnings after a run.
         
     | 
| 
      
 20 
     | 
    
         
            +
                  attr_accessor :warnings
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  # Contains a list of possible errors after a run.
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attr_accessor :errors
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  def initialize(input_file, silent, executable)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @input_file = input_file
         
     | 
| 
      
 27 
     | 
    
         
            +
                    disable_stdout do
         
     | 
| 
      
 28 
     | 
    
         
            +
                      disable_stderr do
         
     | 
| 
      
 29 
     | 
    
         
            +
                        @executable = executable if system "which #{executable}"
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
                    @silent = silent
         
     | 
| 
      
 33 
     | 
    
         
            +
                    @errors = []
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    if File.exists? @input_file
         
     | 
| 
      
 36 
     | 
    
         
            +
                      run
         
     | 
| 
      
 37 
     | 
    
         
            +
                    else
         
     | 
| 
      
 38 
     | 
    
         
            +
                      error "Running of #@executable aborted. " +
         
     | 
| 
      
 39 
     | 
    
         
            +
                            "Input file: #@input_file not found"
         
     | 
| 
      
 40 
     | 
    
         
            +
                    end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  def run
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  def feedback
         
     | 
| 
      
 47 
     | 
    
         
            +
                    return if @silent
         
     | 
| 
      
 48 
     | 
    
         
            +
                    unless @warnings.empty?
         
     | 
| 
      
 49 
     | 
    
         
            +
                      notice "Warnings from #@executable:"
         
     | 
| 
      
 50 
     | 
    
         
            +
                      @warnings.each do |message|
         
     | 
| 
      
 51 
     | 
    
         
            +
                        warning message
         
     | 
| 
      
 52 
     | 
    
         
            +
                      end
         
     | 
| 
      
 53 
     | 
    
         
            +
                    end
         
     | 
| 
      
 54 
     | 
    
         
            +
                    unless @errors.empty?
         
     | 
| 
      
 55 
     | 
    
         
            +
                      notice "Errors from #@executable:"
         
     | 
| 
      
 56 
     | 
    
         
            +
                      @errors.each do |message|
         
     | 
| 
      
 57 
     | 
    
         
            +
                        error message
         
     | 
| 
      
 58 
     | 
    
         
            +
                      end
         
     | 
| 
      
 59 
     | 
    
         
            +
                    end
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                %w(latex bibtex dvips ps2pdf pdflatex).each do
         
     | 
| 
      
 64 
     | 
    
         
            +
                  |f| require File.dirname(__FILE__) + "/runner/#{f}"
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Runner
         
     | 
| 
      
 3 
     | 
    
         
            +
                class BibTeX < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def initialize(input_file, silent=false, executable='bibtex')
         
     | 
| 
      
 5 
     | 
    
         
            +
                    super
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def run
         
     | 
| 
      
 9 
     | 
    
         
            +
                    messages = /^I (found no|couldn't open)/
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @warnings = `#@executable #@input_file`.grep(messages)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    feedback
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Runner
         
     | 
| 
      
 3 
     | 
    
         
            +
                class DviPs < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def initialize(input_file, silent=false, executable='dvips')
         
     | 
| 
      
 5 
     | 
    
         
            +
                    super
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def run
         
     | 
| 
      
 9 
     | 
    
         
            +
                    disable_stderr do
         
     | 
| 
      
 10 
     | 
    
         
            +
                      @warnings = `#@executable -Ppdf #@input_file`.split("\n")
         
     | 
| 
      
 11 
     | 
    
         
            +
                    end
         
     | 
| 
      
 12 
     | 
    
         
            +
                    feedback
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Runner
         
     | 
| 
      
 3 
     | 
    
         
            +
                class LaTeX < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def initialize(input_file, silent=false, executable='latex')
         
     | 
| 
      
 5 
     | 
    
         
            +
                    super
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def run
         
     | 
| 
      
 9 
     | 
    
         
            +
                    disable_stdinn do
         
     | 
| 
      
 10 
     | 
    
         
            +
                      messages = /^(Overfull|Underfull|No file|Package \w+ Warning:)/
         
     | 
| 
      
 11 
     | 
    
         
            +
                      run = `#@executable #@input_file`
         
     | 
| 
      
 12 
     | 
    
         
            +
                      @warnings = run.grep(messages)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      lines = run.split("\n")
         
     | 
| 
      
 14 
     | 
    
         
            +
                      while lines.shift
         
     | 
| 
      
 15 
     | 
    
         
            +
                        if lines.first =~ /^!/
         
     | 
| 
      
 16 
     | 
    
         
            +
                          3.times { @errors << lines.shift }
         
     | 
| 
      
 17 
     | 
    
         
            +
                        end
         
     | 
| 
      
 18 
     | 
    
         
            +
                      end
         
     | 
| 
      
 19 
     | 
    
         
            +
                      feedback
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Runner
         
     | 
| 
      
 3 
     | 
    
         
            +
                class PdfLaTeX < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def initialize(input_file, silent=false, executable='pdflatex')
         
     | 
| 
      
 5 
     | 
    
         
            +
                    super
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def run
         
     | 
| 
      
 9 
     | 
    
         
            +
                    disable_stdinn do
         
     | 
| 
      
 10 
     | 
    
         
            +
                      messages = /^(Overfull|Underfull|No file|Package \w+ Warning:)/
         
     | 
| 
      
 11 
     | 
    
         
            +
                      run = `#@executable #@input_file`
         
     | 
| 
      
 12 
     | 
    
         
            +
                      @warnings = run.grep(messages)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      lines = run.split("\n")
         
     | 
| 
      
 14 
     | 
    
         
            +
                      while lines.shift
         
     | 
| 
      
 15 
     | 
    
         
            +
                        if lines.first =~ /^!/
         
     | 
| 
      
 16 
     | 
    
         
            +
                          3.times { @errors << lines.shift }
         
     | 
| 
      
 17 
     | 
    
         
            +
                        end
         
     | 
| 
      
 18 
     | 
    
         
            +
                      end
         
     | 
| 
      
 19 
     | 
    
         
            +
                      feedback
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rubbr/scm.rb
    ADDED
    
    | 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              # Extracts changeset stats from various SCM systems. This info can be
         
     | 
| 
      
 4 
     | 
    
         
            +
              # included in the title page of the latex document and is especially helpful
         
     | 
| 
      
 5 
     | 
    
         
            +
              # when working with draft versions.
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Scm
         
     | 
| 
      
 7 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 8 
     | 
    
         
            +
                  include Rubbr::Cli
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  # The name of the SCM system. 
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attr_accessor :name
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  # The Mercurial executable.
         
     | 
| 
      
 14 
     | 
    
         
            +
                  attr_accessor :executable
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  # The revision and date of the tip/head/latest changeset.
         
     | 
| 
      
 17 
     | 
    
         
            +
                  attr_accessor :revision, :date
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  def collect_scm_stats
         
     | 
| 
      
 20 
     | 
    
         
            +
                    { :name => @name,
         
     | 
| 
      
 21 
     | 
    
         
            +
                      :revision => @revision,
         
     | 
| 
      
 22 
     | 
    
         
            +
                      :date => @date }
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def self.stats(dir)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  if File.exists? File.join(dir, '.svn')
         
     | 
| 
      
 28 
     | 
    
         
            +
                    Rubbr::Scm::Subversion.new.collect_scm_stats
         
     | 
| 
      
 29 
     | 
    
         
            +
                  elsif File.exists? File.join(dir, '.hg')
         
     | 
| 
      
 30 
     | 
    
         
            +
                    Rubbr::Scm::Mercurial.new.collect_scm_stats
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                %w(mercurial subversion).each do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  |f| require File.dirname(__FILE__) + "/scm/#{f}"
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              # Extracts changeset stats from various SCM systems. This info can be
         
     | 
| 
      
 4 
     | 
    
         
            +
              # included in the title page of the latex document and is especially helpful
         
     | 
| 
      
 5 
     | 
    
         
            +
              # when working with draft versions.
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Scm
         
     | 
| 
      
 7 
     | 
    
         
            +
                class Mercurial < Base
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  def initialize
         
     | 
| 
      
 10 
     | 
    
         
            +
                    super
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    @name = 'Mercurial'
         
     | 
| 
      
 13 
     | 
    
         
            +
                    disable_stdout do
         
     | 
| 
      
 14 
     | 
    
         
            +
                      disable_stderr do
         
     | 
| 
      
 15 
     | 
    
         
            +
                        @executable = 'hg' if system 'which hg'
         
     | 
| 
      
 16 
     | 
    
         
            +
                      end
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    @revision, @date = parse_scm_stats
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    yield self if block_given?
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def parse_scm_stats
         
     | 
| 
      
 25 
     | 
    
         
            +
                    return [nil, nil] unless @executable
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                    raw_stats = `hg tip`
         
     | 
| 
      
 28 
     | 
    
         
            +
                    revision = raw_stats.scan(/^changeset: +(.+)/).first.first
         
     | 
| 
      
 29 
     | 
    
         
            +
                    date = raw_stats.scan(/^date: +(.+)/).first.first
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                    [revision, date]
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              # Extracts changeset stats from various SCM systems. This info can be
         
     | 
| 
      
 4 
     | 
    
         
            +
              # included in the title page of the latex document and is especially helpful
         
     | 
| 
      
 5 
     | 
    
         
            +
              # when working with draft versions.
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Scm
         
     | 
| 
      
 7 
     | 
    
         
            +
                class Subversion < Base
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  def initialize
         
     | 
| 
      
 10 
     | 
    
         
            +
                    super
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    @name = 'Subversion'
         
     | 
| 
      
 13 
     | 
    
         
            +
                    disable_stdout do
         
     | 
| 
      
 14 
     | 
    
         
            +
                      disable_stderr do
         
     | 
| 
      
 15 
     | 
    
         
            +
                        @executable = 'svn' if system 'which svn'
         
     | 
| 
      
 16 
     | 
    
         
            +
                      end
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    @revision, @date = parse_scm_stats
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    yield self if block_given?
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def parse_scm_stats
         
     | 
| 
      
 25 
     | 
    
         
            +
                    return [nil, nil] unless @executable
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                    raw_stats = `svn info`
         
     | 
| 
      
 28 
     | 
    
         
            +
                    revision = raw_stats.scan(/^Revision: (\d+)/).first.first
         
     | 
| 
      
 29 
     | 
    
         
            +
                    date = raw_stats.scan(/^Last Changed Date: (.+)/).first.first
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                    [revision, date]
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rubbr/spell.rb
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Spell
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.check
         
     | 
| 
      
 4 
     | 
    
         
            +
                  source_files = Dir["#{Rubbr.options[:source_dir]}/*.tex"]
         
     | 
| 
      
 5 
     | 
    
         
            +
                  source_files.delete(File.join(Rubbr.options[:source_dir],
         
     | 
| 
      
 6 
     | 
    
         
            +
                                                Rubbr.options[:base_latex_file]))
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  dictionary_path = File.join(Rubbr.options[:spell_dir],
         
     | 
| 
      
 9 
     | 
    
         
            +
                                              Rubbr.options[:spell_file])
         
     | 
| 
      
 10 
     | 
    
         
            +
                  source_files.each do |file|
         
     | 
| 
      
 11 
     | 
    
         
            +
                    system "ispell -t -x -p #{dictionary_path} #{file}"
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rubbr/viewer.rb
    ADDED
    
    | 
         @@ -0,0 +1,56 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rubbr
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Viewer
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                # View the spesified format.
         
     | 
| 
      
 5 
     | 
    
         
            +
                def self.view(format)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  case format
         
     | 
| 
      
 7 
     | 
    
         
            +
                  when :dvi
         
     | 
| 
      
 8 
     | 
    
         
            +
                    Rubbr::Viewer::Dvi.new.launch
         
     | 
| 
      
 9 
     | 
    
         
            +
                  when :ps
         
     | 
| 
      
 10 
     | 
    
         
            +
                    Rubbr::Viewer::Ps.new.launch
         
     | 
| 
      
 11 
     | 
    
         
            +
                  else
         
     | 
| 
      
 12 
     | 
    
         
            +
                    Rubbr::Viewer::Pdf.new.launch
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 17 
     | 
    
         
            +
                  include Rubbr::Cli
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  # The name prefix of the distribution file. 
         
     | 
| 
      
 20 
     | 
    
         
            +
                  attr_accessor :distribution_name
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  def distribution_file
         
     | 
| 
      
 23 
     | 
    
         
            +
                    File.join(Rubbr.options[:distribution_dir],
         
     | 
| 
      
 24 
     | 
    
         
            +
                              "#@distribution_name.#@view_name")
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  def initialize
         
     | 
| 
      
 28 
     | 
    
         
            +
                    @distribution_name = Rubbr.options[:distribution_name]
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                    @view_name = 'base'
         
     | 
| 
      
 31 
     | 
    
         
            +
                    @executables = []
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  def find_viewer
         
     | 
| 
      
 35 
     | 
    
         
            +
                    @executables.each do |executable|
         
     | 
| 
      
 36 
     | 
    
         
            +
                      disable_stdout do
         
     | 
| 
      
 37 
     | 
    
         
            +
                        disable_stderr do
         
     | 
| 
      
 38 
     | 
    
         
            +
                          return executable if system "which #{executable}"
         
     | 
| 
      
 39 
     | 
    
         
            +
                        end
         
     | 
| 
      
 40 
     | 
    
         
            +
                      end
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  def launch
         
     | 
| 
      
 45 
     | 
    
         
            +
                    return unless viewer = find_viewer
         
     | 
| 
      
 46 
     | 
    
         
            +
                    system "#{viewer} #{distribution_file}"
         
     | 
| 
      
 47 
     | 
    
         
            +
                    notice "Display of #@view_name completed for: #{@distribution_name}" +
         
     | 
| 
      
 48 
     | 
    
         
            +
                           ".#@view_name in #{Rubbr.options[:distribution_dir]}"
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                %w(dvi ps pdf).each do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  |f| require File.dirname(__FILE__) + "/viewer/#{f}"
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,89 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: rubbr
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Eivind Uggedal
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2008-02-04 00:00:00 +01:00
         
     | 
| 
      
 13 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: hoe
         
     | 
| 
      
 17 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 18 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 19 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: 1.5.0
         
     | 
| 
      
 23 
     | 
    
         
            +
                version: 
         
     | 
| 
      
 24 
     | 
    
         
            +
            description: Build LaTeX documents.
         
     | 
| 
      
 25 
     | 
    
         
            +
            email: eu@redflavor.com
         
     | 
| 
      
 26 
     | 
    
         
            +
            executables: 
         
     | 
| 
      
 27 
     | 
    
         
            +
            - rubbr
         
     | 
| 
      
 28 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 31 
     | 
    
         
            +
            - History.txt
         
     | 
| 
      
 32 
     | 
    
         
            +
            - Manifest.txt
         
     | 
| 
      
 33 
     | 
    
         
            +
            - README.txt
         
     | 
| 
      
 34 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 35 
     | 
    
         
            +
            - History.txt
         
     | 
| 
      
 36 
     | 
    
         
            +
            - Manifest.txt
         
     | 
| 
      
 37 
     | 
    
         
            +
            - README.txt
         
     | 
| 
      
 38 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 39 
     | 
    
         
            +
            - bin/rubbr
         
     | 
| 
      
 40 
     | 
    
         
            +
            - lib/rubbr.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            - lib/rubbr/builder.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            - lib/rubbr/cli.rb
         
     | 
| 
      
 43 
     | 
    
         
            +
            - lib/rubbr/options.rb
         
     | 
| 
      
 44 
     | 
    
         
            +
            - lib/rubbr/runner.rb
         
     | 
| 
      
 45 
     | 
    
         
            +
            - lib/rubbr/scm.rb
         
     | 
| 
      
 46 
     | 
    
         
            +
            - lib/rubbr/spell.rb
         
     | 
| 
      
 47 
     | 
    
         
            +
            - lib/rubbr/viewer.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            - lib/rubbr/builder/tex.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
            - lib/rubbr/builder/ps.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - lib/rubbr/builder/dvi.rb
         
     | 
| 
      
 51 
     | 
    
         
            +
            - lib/rubbr/runner/ps2pdf.rb
         
     | 
| 
      
 52 
     | 
    
         
            +
            - lib/rubbr/runner/pdflatex.rb
         
     | 
| 
      
 53 
     | 
    
         
            +
            - lib/rubbr/runner/latex.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - lib/rubbr/runner/dvips.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - lib/rubbr/runner/bibtex.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - lib/rubbr/scm/subversion.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - lib/rubbr/scm/mercurial.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib/rubbr/viewer/ps.rb
         
     | 
| 
      
 59 
     | 
    
         
            +
            - lib/rubbr/viewer/pdf.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib/rubbr/viewer/dvi.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 62 
     | 
    
         
            +
            homepage: Build LaTeX documents.
         
     | 
| 
      
 63 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 64 
     | 
    
         
            +
            rdoc_options: 
         
     | 
| 
      
 65 
     | 
    
         
            +
            - --main
         
     | 
| 
      
 66 
     | 
    
         
            +
            - README.txt
         
     | 
| 
      
 67 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 68 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 69 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 70 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 71 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 72 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 73 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 74 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 75 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 76 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 77 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 78 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 79 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 80 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 81 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
            rubyforge_project: rubbr
         
     | 
| 
      
 84 
     | 
    
         
            +
            rubygems_version: 1.0.1
         
     | 
| 
      
 85 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 86 
     | 
    
         
            +
            specification_version: 2
         
     | 
| 
      
 87 
     | 
    
         
            +
            summary: LaTeX builder
         
     | 
| 
      
 88 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     |