fork download
  1. #lang racket
  2.  
  3. (require 2htdp/batch-io)
  4.  
  5. ;; < と I の間に任意のスペースが入る場合も考慮して、
  6. ;; IMGタグ(大文字または小文字のIMG)を探す
  7. (define *img* "< *[Ii][Mm][Gg]")
  8. ;; >に到達するまでに現れるALT属性を探す
  9. (define *alt* (string-append *img* "[^>]*[Aa][Ll][Tt].*>"))
  10. ;; ファイルを開いてリストに読み込む
  11. (define *filename* (begin (display "チェックするHTMLファイルの名前:")
  12. (newline)
  13. (format "~a" (read))))
  14. (define *lines* (read-lines *filename*))
  15.  
  16. ;; IMGタグがあって、タグ内にALTの見つからない行が見つかったら
  17. ;; コメントに入れた警告メッセージを追加する
  18. (let loop ((lines *lines*) (acc '()))
  19. (if (null? lines)
  20. (write-file *filename* (apply string-append (reverse acc)))
  21. (loop (cdr lines)
  22. (let ((line (string-append (car lines) "\n")))
  23. (if (and (regexp-match (regexp *img*) line)
  24. (not (regexp-match (regexp *alt*) line)))
  25. (cons (string-append "<!-- 画像にはALT属性を付けること! -->\n" line) acc)
  26. (cons line acc))))))
  27.  
Success #stdin #stdout 0.72s 122416KB
stdin
Standard input is empty
stdout
Standard output is empty