Sha256: 3e7813585bb51e7157ee2d1d114d10a22a12b88d928995f013e57444a22db441

Contents?: true

Size: 1.88 KB

Versions: 4

Compression:

Stored size: 1.88 KB

Contents

#!/usr/bin/env ruby
# Copyright (c) 2010-2019 Kenshi Muto
#
# 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".
#

# simple validator for Re:VIEW

$LOAD_PATH.unshift(File.realpath('../lib', __dir__))

require 'review/logger'

block = nil
maxcolcount = 0
colcount = 0
ln = 0

@logger = ReVIEW.logger

ARGF.each do |line|
  ln += 1
  if line =~ %r{\A//([a-z]+)\{\s*\Z} || line =~ %r{\A//([a-z]+)\[.+?\{\s*\Z}
    # block
    new_block = $1
    if block
      @logger.warn "#{ln}: block #{new_block} started, but previous block #{block} didn't close yet."
    end
    block = new_block
  elsif line.start_with?('//}')
    if block.nil?
      @logger.warn "#{ln}: block ended, but not opened."
    end
    block = nil
    maxcolcount = 0
    colcount = 0
  elsif line =~ /\A(\d+\.)\s+/
    # number
    unless %w[list emlist listnum emlistnum cmd image table].include?(block)
      @logger.warn "#{ln}: found '#{$1}' without the head space. Is it correct?"
    end
  elsif line =~ /\A\*\s+/
    # itemize
    unless %w[list emlist listnum emlistnum cmd image table].include?(block)
      @logger.warn "#{ln}: found '*' without the head space. Is it correct?"
    end
  elsif line =~ /\A\s+(\d+\.)\s+/ && line =~ /\A\s+\*\s+/
    unless %w[list emlist listnum emlistnum cmd image table].include?(block)
      @logger.warn "#{ln}: found itemized list or numbered list in #{block}. Is it correct?"
    end
  elsif block == 'table'
    next if line.start_with?('#@')

    if line !~ /\A-----/
      # table
      colcount = line.split("\t").size
      if maxcolcount == 0
        maxcolcount = colcount
      end
      if colcount != maxcolcount
        @logger.warn "#{ln}: the number of table columns seems mismatch. (#{maxcolcount} != #{colcount})"
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
review-5.3.0 bin/review-validate
review-5.2.0 bin/review-validate
review-5.1.1 bin/review-validate
review-5.1.0 bin/review-validate