#!/usr/bin/env ruby
require 'escape_utils'

start_at_level = 2

headers = Hash.new(0)

anchor = lambda { |title|
  href = title.downcase
  href.gsub!(/[^\w\- ]/, '') # remove punctuation
  href.gsub!(' ', '-') # replace spaces with dash
  href = EscapeUtils.escape_uri(href) # escape extended UTF-8 chars

  uniq = (headers[href] > 0) ? "-#{headers[href]}" : ''
  headers[href] += 1

  href + uniq
}

ARGF.each_line do |line|
  if line =~ /^(#+) (.+?)#*$/
    level = $1.size
    next if level < start_at_level
    title = $2.strip
    href  = anchor.call title

    puts "%s* [%s](#%s)" % [
      '  ' * (level - start_at_level),
      title,
      href
    ]
  end
end
