[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:02159] 形式エラーのチェックについて質問



野口です。

C-c . e 等でヘッダに直接スケジュールを記述する際、X-SC-Day: フィールドでは

  X-SC-Day: 2005930

と不正な形式で記述してしまった場合(本来は 20050930 するつもりだった)でも、
C-cC-c の所で
---
Parse Error!!
---
と警告してくれるのですが、X-SC-Time: フィールドでは

  X-SC-Time: 1000-12:00

のような不正形式(":"の入力忘れ)としてしまった場合でも、警告せずにその
まま登録してしまうようです。

mhc-header.el には
----------------------------------------------------------
19 (defconst mhc-header-table
20   '(("x-sc-day"         "X-SC-Day:"             mhc-parse/day)
:
25     ("x-sc-time"        "X-SC-Time:"            mhc-parse/time)
----------------------------------------------------------

とありますので、X-SC-Time: に対しても形式チェックをする意図はあると理
解しているのですが、これはバグでしょうか?


また、"Parse ERROR" の場合、「どのフィールドでのことなのか」も指摘して
くれた方が分りやすいようにおもいましたので、添付のような修正をしてみま
した。

以上、ご検討いただければ幸いです。
-- 
NOGUCHI Yusuke <nogunogu@xxxxxxxxxxxxxxxxx>
*** mhc-logic.el.0	Fri May  7 01:35:12 2004
--- mhc-logic.el	Fri Sep 30 13:39:09 2005
***************
*** 197,203 ****
  	(goto-char (match-end 0)))
      (while (not (eobp))
        (or (mhc-logic/looking-at mhc-logic/not-regexp mhc-logic/day-regexp)
! 	  (error "Parse ERROR !!!"))
        (setq d (mhc-date-new (string-to-number (match-string 2))
  			    (string-to-number (match-string 3))
  			    (string-to-number (match-string 4)))
--- 197,203 ----
  	(goto-char (match-end 0)))
      (while (not (eobp))
        (or (mhc-logic/looking-at mhc-logic/not-regexp mhc-logic/day-regexp)
! 	  (error "Parse ERROR !!! (at X-SC-Day:)"))
        (setq d (mhc-date-new (string-to-number (match-string 2))
  			    (string-to-number (match-string 3))
  			    (string-to-number (match-string 4)))
***************
*** 226,232 ****
  			       (string-to-number (match-string 1)))
  		 (mhc-logic/day logicinfo)))
  	  (goto-char (match-end 0)))
!       (error "Parse ERROR !!!"))))
  
  
  (defun mhc-logic-parse-cond (logicinfo)
--- 226,232 ----
  			       (string-to-number (match-string 1)))
  		 (mhc-logic/day logicinfo)))
  	  (goto-char (match-end 0)))
!       (error "Parse ERROR !!!(at X-SC-Date:)"))))
  
  
  (defun mhc-logic-parse-cond (logicinfo)
***************
*** 262,268 ****
  				      mhc-logic/month-alist)))
  		    month)))
         (t ;; 解釈できない要素の場合
! 	(error "Parse ERROR !!!")))
        (goto-char (match-end 0)))
      (mapcar (lambda (s)
  	      (set s (if (symbol-value s)
--- 262,268 ----
  				      mhc-logic/month-alist)))
  		    month)))
         (t ;; 解釈できない要素の場合
! 	(error "Parse ERROR !!!(at X-SC-Cond:)")))
        (goto-char (match-end 0)))
      (mapcar (lambda (s)
  	      (set s (if (symbol-value s)
***************
*** 307,313 ****
  					(string-to-number (match-string 2))
  					(string-to-number (match-string 3)))))
  		   (t ; それ以外の場合
! 		    (error "Parse ERROR !!!")))
  		  sexp))
        (goto-char (match-end 0)))
      (if sexp
--- 307,313 ----
  					(string-to-number (match-string 2))
  					(string-to-number (match-string 3)))))
  		   (t ; それ以外の場合
! 		    (error "Parse ERROR !!!(at X-SC-Duration:)")))
  		  sexp))
        (goto-char (match-end 0)))
      (if sexp
***************
*** 326,332 ****
  	(goto-char (match-end 0)))
      (if (eobp)
  	(mhc-logic/set-todo logicinfo (string-to-number content))
!       (error "Parse ERROR !!!"))))
  
  
  (defun mhc-logic-compile-file (record)
--- 326,332 ----
  	(goto-char (match-end 0)))
      (if (eobp)
  	(mhc-logic/set-todo logicinfo (string-to-number content))
!       (error "Parse ERROR !!!(at X-SC-Todo:)"))))
  
  
  (defun mhc-logic-compile-file (record)
*** mhc-parse.el.0	Fri May  7 01:35:12 2004
--- mhc-parse.el	Fri Sep 30 13:37:06 2005
***************
*** 63,69 ****
  				   (if (eq (length content) 0)
  				       nil
  				     (string-to-number content)))
!       (error "Parse ERROR !!!")))
    schedule)
  
  (defun mhc-parse/subject (record schedule)
--- 63,69 ----
  				   (if (eq (length content) 0)
  				       nil
  				     (string-to-number content)))
!       (error "Parse ERROR !!!(at X-SC-Priority:)")))
    schedule)
  
  (defun mhc-parse/subject (record schedule)