Hatena::Groupkakisute

g5nの書き殴り

2007-12-04

detect-heading-gap.rb - ヘディングレベルのギャップを探す

21:51 |  detect-heading-gap.rb - ヘディングレベルのギャップを探す - g5nの書き殴り を含むブックマーク はてなブックマーク -  detect-heading-gap.rb - ヘディングレベルのギャップを探す - g5nの書き殴り

NGと判定される条件

  • h1 から始まらない
  • ヘディングレベルが直前より2以上大きいことがある
#! ruby -Ks
require "rubygems"
require "hpricot"
ng = []
ARGV.each{|f|
  heading = Hpricot(File.read(f)).search("h1,h2,h3,h4,h5,h6")
  result = "."
  prev = nil

  trace = []
  heading.each_with_index{|i,k|

    lv = i.name[/\d/].to_i
    case k
    when 0
      if lv != 1
        result = "X"
        trace << "x"
      end
    else
      if prev - lv > 1
        result = "X"
        trace << "x"
      end
    end
    trace << lv
    prev = lv
  }
  v = [result, f, trace.join(" ")].join(" ")
  puts v
  if result != "."
    ng << v
  end
}
if !ng.empty?
  puts "--"
  puts "NG: #{ng.size} files NG of #{ARGV.size}"
  put ng
else
  puts "--"
  puts "OK: All #{ARGV.size} files good"
end