Sha256: a5cf2911d755e4dde6ae4b673d76470c848c505b7f222c8f2fa492be98aba1ed

Contents?: true

Size: 1.68 KB

Versions: 15

Compression:

Stored size: 1.68 KB

Contents

module Jazzy
  # Collect + report metadata about a processed module
  class Stats
    include Config::Mixin

    attr_reader :documented, :acl_skipped
    attr_reader :undocumented_decls

    def add_documented
      @documented += 1
    end

    def add_acl_skipped
      @acl_skipped += 1
    end

    def add_undocumented(decl)
      @undocumented_decls << decl
    end

    def acl_included
      documented + undocumented
    end

    def undocumented
      undocumented_decls.count
    end

    def initialize
      @documented = @acl_skipped = 0
      @undocumented_decls = []
    end

    def report
      puts "#{doc_coverage}\% documentation coverage " \
        "with #{undocumented} undocumented " \
        "#{symbol_or_symbols(undocumented)}"

      if acl_included > 0
        swift_acls = comma_list(config.min_acl.included_levels)
        puts "included #{acl_included} " +
             (config.objc_mode ? '' : "#{swift_acls} ") +
             symbol_or_symbols(acl_included)
      end

      if !config.objc_mode && acl_skipped > 0
        puts "skipped #{acl_skipped} " \
          "#{comma_list(config.min_acl.excluded_levels)} " \
          "#{symbol_or_symbols(acl_skipped)} " \
          '(use `--min-acl` to specify a different minimum ACL)'
      end
    end

    def doc_coverage
      return 0 if acl_included == 0
      (100 * documented) / acl_included
    end

    private

    def comma_list(items)
      case items.count
      when 0 then ''
      when 1 then items[0]
      when 2 then "#{items[0]} or #{items[1]}"
      else "#{items[0..-2].join(', ')}, or #{items[-1]}"
      end
    end

    def symbol_or_symbols(count)
      count == 1 ? 'symbol' : 'symbols'
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
jazzy-0.12.0 lib/jazzy/stats.rb
jazzy-0.11.2 lib/jazzy/stats.rb
jazzy-0.11.1 lib/jazzy/stats.rb
jazzy-0.11.0 lib/jazzy/stats.rb
jazzy-0.10.0 lib/jazzy/stats.rb
jazzy-0.9.6 lib/jazzy/stats.rb
jazzy-0.9.5 lib/jazzy/stats.rb
jazzy-0.9.4 lib/jazzy/stats.rb
jazzy-0.9.3 lib/jazzy/stats.rb
jazzy-0.9.2 lib/jazzy/stats.rb
jazzy-0.9.1 lib/jazzy/stats.rb
jazzy-0.9.0 lib/jazzy/stats.rb
jazzy-0.8.4 lib/jazzy/stats.rb
jazzy-0.8.3 lib/jazzy/stats.rb
jazzy-0.8.2 lib/jazzy/stats.rb