Sha256: 5d2cf3364dfd4ab09c4a06022c2ecca3dbd21b579f9d34594e6600828d77b163

Contents?: true

Size: 973 Bytes

Versions: 23

Compression:

Stored size: 973 Bytes

Contents

module ReVIEW
  class HTMLToc
    def initialize(basedir)
      @tochtmltxt = 'toc-html.txt'
      @basedir = basedir
    end

    def add_item(level, filename, title, args)
      args_str = encode_args(args)
      line = [level, filename, title, args_str].join("\t")
      File.open(tocfilename, 'a') { |f| f.write "#{line}\n" }
    end

    def each_item
      File.open(tocfilename) do |f|
        f.each_line do |line|
          level, file, title, args_str = line.chomp.split("\t")
          args = decode_args(args_str)
          yield level, file, title, args
        end
      end
    end

    def tocfilename
      File.join(@basedir, @tochtmltxt)
    end

    def decode_args(args_str)
      args = {}
      args_str.split(/,\s*/).each do |pair|
        key, val = pair.split('=')
        args[key.to_sym] = val
      end
      args
    end

    def encode_args(args)
      args.delete_if { |_k, v| v.nil? }.map { |k, v| "#{k}=#{v}" }.join(',')
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
review-5.8.0 lib/review/htmltoc.rb
review-5.7.0 lib/review/htmltoc.rb
review-5.6.0 lib/review/htmltoc.rb
review-5.5.0 lib/review/htmltoc.rb
review-5.4.0 lib/review/htmltoc.rb
review-5.3.0 lib/review/htmltoc.rb
review-5.2.0 lib/review/htmltoc.rb
review-5.1.1 lib/review/htmltoc.rb
review-5.1.0 lib/review/htmltoc.rb
review-5.0.0 lib/review/htmltoc.rb
review-4.2.0 lib/review/htmltoc.rb
review-4.1.0 lib/review/htmltoc.rb
review-4.0.0 lib/review/htmltoc.rb
review-3.2.0 lib/review/htmltoc.rb
review-3.1.0 lib/review/htmltoc.rb
review-3.0.0 lib/review/htmltoc.rb
review-3.0.0.rc1 lib/review/htmltoc.rb
review-3.0.0.preview4 lib/review/htmltoc.rb
review-3.0.0.preview3 lib/review/htmltoc.rb
review-3.0.0.preview2 lib/review/htmltoc.rb