Sha256: 51c38222d61940d8bb84c16e410bfa42d380052fdc5ae44ea614bac63445d15c

Contents?: true

Size: 1.39 KB

Versions: 15

Compression:

Stored size: 1.39 KB

Contents

#
# $Id: volume.rb 3883 2008-02-10 11:48:23Z aamine $
#
# Copyright (c) 2002-2007 Minero Aoki
#
# This program is free software.
# You can distribute or modify this program under the terms of
# the GNU LGPL, Lesser General Public License version 2.1.
# For details of the GNU LGPL, see the file "COPYING".
#
module ReVIEW
  module Book
    class Volume

      def Volume.count_file(path)
        b = c = l = 0
        File.foreach(path) do |line|
          next if %r<\A\#@> =~ line
          text = line.gsub(/\s+/, '')
          b += text.bytesize
          c += text.charsize
          l += 1
        end
        new(b, c, l)
      end

      def Volume.sum(vols)
        vols.inject(new()) {|sum, i| sum + i }
      end

      def Volume.dummy
        new(-1, -1, -1)
      end

      def initialize(bytes = 0, chars = 0, lines = 0)
        @bytes = bytes
        @chars = chars
        @lines = lines
        @page_per_kbyte = nil
      end

      attr_reader :bytes
      attr_reader :chars
      attr_accessor :lines
      attr_accessor :page_per_kbyte

      def kbytes
        (@bytes.to_f / 1024).ceil
      end

      def page
        (kbytes.to_f/@page_per_kbyte).ceil
      end

      def to_s
        "#{kbytes()}KB #{@chars}C #{@lines}L #{page()}P"
      end

      def +(other)
        Volume.new(@bytes + other.bytes,
          @chars + other.chars,
          @lines + other.lines)
      end

    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
review-2.1.0 lib/review/book/volume.rb
review-2.0.0 lib/review/book/volume.rb
review-1.7.2 lib/review/book/volume.rb
review-1.7.1 lib/review/book/volume.rb
review-peg-0.2.2 lib/review/book/volume.rb
review-peg-0.2.1 lib/review/book/volume.rb
review-peg-0.2.0 lib/review/book/volume.rb
review-peg-0.1.3 lib/review/book/volume.rb
review-peg-0.1.2 lib/review/book/volume.rb
review-peg-0.1.1 lib/review/book/volume.rb
review-peg-0.1.0 lib/review/book/volume.rb
review-1.7.0 lib/review/book/volume.rb
review-1.6.0 lib/review/book/volume.rb
review-2.0.0.beta1 lib/review/book/volume.rb
review-1.5.0 lib/review/book/volume.rb