;; -*- mode: lisp -*-
;; 2009-02-24 (Tue): for Linux
;; 2009-02-25 (Wed): Converted for Leopard
;; 2009-03-04 (Wed): streamlined arange-abbrev

(lookup-use-package "ndeb+/Users/fukuda/Dicts/OALD_7" "oald7-pkg")
;(lookup-use-package "ndeb+/Users/fukuda/Dicts/ldoce4" "oald7-pkg")
(defun oald7-arrange-examples (entry)
;;   (while (re-search-forward "\\(》[ ]?\n\\)" nil t)
;;       (replace-match "》 " t t nil 1))
;;  (goto-line 1)
  (while (re-search-forward "《\\([^》]+\\)》" nil t)
    (let ((start (match-beginning 1))
	  (end (match-end 1)))
      (goto-char end)
      (add-text-properties start end '(face italic))
      (delete-region end (match-end 0))
      (delete-region (match-beginning 0) start))))

(defun oald7-arrange-numbers (entry)
  (while (re-search-forward "♂\\([^♀]+\\)♀" nil t)
    (replace-match "\\1 ")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
      (goto-char end)
      (add-text-properties start end '(face bold)))))

(defun oald7-arrange-numbers-2 (entry)
  (while (re-search-forward "♂\\([^♀]+\\)♀" nil t)
;;    (replace-match "\\1 ")
    (let ((start (match-beginning 1))
	  (end (match-end 1)))
      (goto-char end)
      (add-text-properties start end '(face bold))
      (delete-region end (match-end 0))
      (delete-region (match-beginning 0) start))))

(defun oald7-arrange-abbrev (entry)
  (while (re-search-forward "\n[ \t]+↑ \\([^↓ ]+\\) ↓" nil t)
    (replace-match "[\\1]")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
;;      (goto-char end)
      (add-text-properties start end '(face small-capital))
      (goto-char start)
      (insert-string "  ")  
      ))
  (goto-line 1)
  (while (re-search-forward "\n[ \t]+\\(---[^ ]+ \\)" nil t)
    (replace-match " \\1")
      )
  (goto-line 1)
  (while (re-search-forward "\\(→[ 　]\\)" nil t)
    (replace-match "⇒ ")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
;;      (goto-char end)
      (add-text-properties start end '(face bold))
      )))

(defun oald7-arrange-headwords (entry)
  (while (re-search-forward "♯\\([^♭]+\\)♭" nil t)
    (replace-match "\\1")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
;;      (goto-char end)
      (add-text-properties start end '(face font-lock-headwords-face))
;;      (goto-char start)
;;      (insert-string "  ")  
      )))


(defun oald7-arrange-remove-abbrev (entry)
  (while (re-search-forward "\\(; NAmE[ \t]+\\)[/;]" nil t)
      (replace-match "" t t nil 1))
  (goto-line 1)	     
  (while (re-search-forward "\\(; NAmE[ \t]+\\)[^ ]" nil t)
      (replace-match "; NAmE " t t nil 1)))

(defun oald7-arrange-remove-spaces (entry)
  (while (re-search-forward "/\\( [ ]+\\)" nil t)
      (replace-match "" t t nil 1))
  (goto-line 1)	     
  (while (re-search-forward "\\( / \\)" nil t)
      (replace-match "/" t t nil 1))
  (goto-line 1)
  (while (re-search-forward "\\( ◆ \\)" nil t)
      (replace-match "/" t t nil 1))
  (goto-line 1)
  (while (re-search-forward "[ \t]?\\([:;]\\)[ \t\n]+" nil t)
    (replace-match "\\1 "))
  (goto-line 1)	     
;;   (while (re-search-forward "\\(\n[\n]+\\)" nil t)
;;     (replace-match "\n"))
  )

(defun oald7-arrange-panels (entry)
  (while (re-search-forward "【[^】]+】" nil t)
      (replace-match "[HELP] ")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
      (add-text-properties start end '(face small-capital))))
  (goto-line 1)	     
  (while (re-search-forward "〔[^〕]+〕" nil t)
      (replace-match "[ETYMOL]  ")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
      (add-text-properties start end '(face small-capital))))
  (goto-line 1)	     
  (while (re-search-forward "「[^」]+」" nil t)
      (replace-match "[IDM] ")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
      (add-text-properties start end '(face small-capital))))
  (goto-line 1)	     
  (while (re-search-forward "『[^』]+』" nil t)
      (replace-match "\n[PHR V] ")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
      (add-text-properties start end '(face small-capital)))))

(defun oald7-arrange-panels-2 (entry)
  (while (re-search-forward "[【〔「『][▼]?[ ]?\\([^】』」〕】]+\\)[】』」〕】]" nil t)
;;  (while (re-search-forward "【[▼]?[ ]?\\([^】]+\\)】" nil t)
      (replace-match "(\\1) ")
    (let ((start (match-beginning 0))
	  (end (match-end 0)))
      (add-text-properties start end '(face small-capital)))))



(lookup-set-dictionary-option "ndeb+/Users/fukuda/Dicts/OALD_7:oald7" ':arranges
     '(ndeb-arrange-bmp
       ndeb-arrange-jpeg
       ndeb-arrange-wave
       ndeb-arrange-indent
       ndeb-arrange-scripts
       ndeb-arrange-ignore
       ndeb-arrange-no-newline
       ndeb-arrange-prev-next
       lookup-arrange-references
       lookup-arrange-gaijis
       lookup-arrange-squeezed-references
       lookup-arrange-default-headings
       oald7-arrange-examples
       oald7-arrange-numbers ;;
       oald7-arrange-abbrev
;;       oald7-arrange-name ;;
       oald7-arrange-remove-abbrev ;;
       oald7-arrange-remove-spaces ;;
       oald7-arrange-headwords ;;
       oald7-arrange-panels-2 ;;
       ndeb-arrange-fill-lines
       ndeb-arrange-snd-autoplay))
