Commit eafeabc4 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Add --no-warnings config option.

Turns off warnings, of which there are currenly a lot.

Created Logger class for managing the warnings centrally.
parent 2e1ea47e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -76,6 +76,10 @@ opts = OptionParser.new do | opts |
    app.link_tpl = tpl
  end

  opts.on('--no-warnings', "Turns off warnings.", " ") do
    app.warnings = false
  end

  opts.on('-o', '--output=PATH', "Directory to output all this amazing documentation.", " ") do |path|
    app.output_dir = path
  end
+12 −5
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ require 'jsduck/page'
require 'jsduck/exporter'
require 'jsduck/timer'
require 'jsduck/parallel_wrap'
require 'jsduck/logger'
require 'json'
require 'fileutils'

@@ -39,6 +40,7 @@ module JsDuck
      @template_links = false
      @input_files = []
      @verbose = false
      @warnings = true
      @export = nil
      @link_tpl = nil
      @img_tpl = nil
@@ -54,6 +56,11 @@ module JsDuck
      @parallel = ParallelWrap.new(:in_processes => count)
    end

    # Sets warnings on or off
    def warnings=(enabled)
      Logger.instance.warnings = enabled
    end

    # Call this after input parameters set
    def run
      parsed_files = @timer.time(:parsing) { parallel_parse(@input_files) }
@@ -119,7 +126,7 @@ module JsDuck
          name = d[:name]
          file = d[:filename]
          line = d[:linenr]
          puts "Warning: Ignoring #{type}: #{name} in #{file} line #{line}"
          Logger.instance.warn("Ignoring #{type}: #{name} in #{file} line #{line}")
        end
      end
      Relations.new(classes, @external_classes)
@@ -134,7 +141,7 @@ module JsDuck
          name = member[:name]
          file = member[:filename]
          line = member[:linenr]
          puts "Warning: Global #{type}: #{name} in #{file} line #{line}"
          Logger.instance.warn("Global #{type}: #{name} in #{file} line #{line}")
        end
      end
    end
@@ -147,7 +154,7 @@ module JsDuck
            if !member[:name] || member[:name] == ""
              file = member[:filename]
              line = member[:linenr]
              puts "Warning: Unnamed #{type} in #{file} line #{line}"
              Logger.instance.warn("Unnamed #{type} in #{file} line #{line}")
            end
          end
        end
@@ -164,7 +171,7 @@ module JsDuck
      overview["categories"].each_pair do |cat_name, cat|
        cat["classes"].each do |cls_name|
          unless relations[cls_name]
            puts "Warning: Class '#{cls_name}' in category '#{cat_name}' not found"
            Logger.instance.warn("Class '#{cls_name}' in category '#{cat_name}' not found")
          end
          overview_classes[cls_name] = true
        end
@@ -173,7 +180,7 @@ module JsDuck
      # Check that each existing non-private class is listed in overview file
      relations.each do |cls|
        unless overview_classes[cls[:name]] || cls[:private]
          puts "Warning: Class '#{cls[:name]}' not found in overview file"
          Logger.instance.warn("Class '#{cls[:name]}' not found in overview file")
        end
      end

+3 −1
Original line number Diff line number Diff line
require 'jsduck/logger'

module JsDuck

  # Encapsulates class documentation and provides some commonly needed
@@ -47,7 +49,7 @@ module JsDuck
      if @relations[classname]
        @relations[classname]
      elsif !@relations.ignore?(classname)
        puts "Warning: Class #{classname} not found in #{@doc[:filename]} line #{@doc[:linenr]}"
        Logger.instance.warn("Class #{classname} not found in #{@doc[:filename]} line #{@doc[:linenr]}")
      end
    end

+3 −2
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ require 'rubygems'
require 'rdiscount'
require 'strscan'
require 'cgi'
require 'jsduck/logger'

module JsDuck

@@ -110,10 +111,10 @@ module JsDuck
        file = @doc_context[:filename]
        line = @doc_context[:linenr]
        if !@relations[cls]
          puts "Warning: #{file} line #{line} #{input} links to non-existing class."
          Logger.instance.warn("#{file} line #{line} #{input} links to non-existing class.")
          text
        elsif member && !get_member_type(cls, member)
          puts "Warning: #{file} line #{line} #{input} links to non-existing member."
          Logger.instance.warn("#{file} line #{line} #{input} links to non-existing member.")
          text
        else
          link(cls, member, text)

lib/jsduck/logger.rb

0 → 100644
+20 −0
Original line number Diff line number Diff line
require 'singleton'

module JsDuck

  class Logger
    include Singleton

    attr_accessor :warnings

    def initialize
      @warnings = true
    end

    # Prints warning message
    def warn(msg)
      puts "Warning: " + msg if @warnings
    end
  end

end