Sha256: 76d2b78edf4c6756666807c7a599ff3b3cf46f4ecaeec5bd9eebba9a00750782

Contents?: true

Size: 1022 Bytes

Versions: 12

Compression:

Stored size: 1022 Bytes

Contents

require "roman-numerals"

module IsoDoc::Function
  module XrefGen
    class Counter
      def initialize
        @num = 0
        @letter = ""
        @subseq = ""
      end

      def increment(node)
        return self if node["unnumbered"]
        if node["subsequence"] != @subseq
          @subseq = node["subsequence"]
          @num += 1
          @letter = node["subsequence"] ? "a" : ""
        else
          if @letter.empty?
            @num += 1
          else
            @letter = (@letter.ord + 1).chr.to_s
          end
        end
        self
      end

      def print
        "#{@num}#{@letter}"
      end

      def listlabel(depth)
      return @num.to_s if [2, 7].include? depth
      return (96 + @num).chr.to_s if [1, 6].include? depth
      return (64 + @num).chr.to_s if [4, 9].include? depth
      return RomanNumerals.to_roman(@num).downcase if [3, 8].include? depth
      return RomanNumerals.to_roman(@num).upcase if [5, 10].include? depth
      return @num.to_s
    end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
isodoc-1.0.14 lib/isodoc/function/xref_counter.rb
isodoc-1.0.13 lib/isodoc/function/xref_counter.rb
isodoc-1.0.12 lib/isodoc/function/xref_counter.rb
isodoc-1.0.11 lib/isodoc/function/xref_counter.rb
isodoc-1.0.10 lib/isodoc/function/xref_counter.rb
isodoc-1.0.9 lib/isodoc/function/xref_counter.rb
isodoc-1.0.8 lib/isodoc/function/xref_counter.rb
isodoc-1.0.7 lib/isodoc/function/xref_counter.rb
isodoc-1.0.6 lib/isodoc/function/xref_counter.rb
isodoc-1.0.5 lib/isodoc/function/xref_counter.rb
isodoc-1.0.4 lib/isodoc/function/xref_counter.rb
isodoc-1.0.3 lib/isodoc/function/xref_counter.rb