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

Re: automatically filling out WordPress comment fields



青田です。

;; 日本語だけでごめんなさい

Katsumi Yamaoka <yamaoka@xxxxxxx> writes:

>>>>>> In [emacs-w3m : No.10676] jidanni@xxxxxxxxxxx wrote:
>
> j> The question is how can I automatically fill in the first three fields
> j> with my personal details, which never change?
>
>> On http://lorelle.wordpress.com/2007/10/31/blog-struggles-when-are-too-many-comments-too-many-comments/#comment
>> I tried
>
> [...]
>
>> Anyway, there are slight variations in the form, e.g.,
>> http://ma.tt/2009/01/venture-destruction/#comment
>> therefore I will also need to erase any text found first too.
>
> I'm not sure it is the right approach but how about this plan?
>
> Japanese:
> フォームに記入する名前やメールアドレスなどを毎回記入するのは面倒
> なので、自動化してしまおうというアイデアです。上記のやり方は変じゃ
> ないでしょうか?

ぼくも欲しかった機能の一つです :)

基本的に山岡さんの実装に賛成です。 ただ、以下のようにして柔軟にしておくの
はどうでしょうか? 特に url での切り分けは "id" なんかのよくあるフォーム名
で便利になると思います。

("name" . "value") -> "name" のフォームに "value" を書きこむ

((:name "name-reg"
  :url  "url-reg"
  :value "val-reg") . "value")
-> (値が指定されていれば) "url-reg" にマッチする url の "name-reg" にマッ
    チする、デフォルトが "val-reg" にマッチするフォームに "value" を書き
    こむ。

((lambda (url name value)...) . "value")
-> lambda が non-nil を返すフォームに "value" を書きこむ。

(lambda (url name value)...)
-> lambda が non-nil を返した時にそれをフォームに書きこむ。

-----8<-----(cut)-----8<-----
Index: w3m-form.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m-form.el,v
retrieving revision 1.177
diff -u -r1.177 w3m-form.el
--- w3m-form.el	30 Dec 2008 05:00:15 -0000	1.177
+++ w3m-form.el	6 Feb 2009 00:04:03 -0000
@@ -702,8 +702,33 @@
 			       no_effect       ; map
 			       name value)
 	  (incf id)
-	  (when value
-	    (setq value (w3m-decode-entities-string value)))
+	  (setq value 
+		(catch 'loop
+		  (dolist (x w3m-form-values)
+		    (cond
+		     ((and (stringp (car x))
+			   (string= (car x) name))
+		      (throw 'loop (cdr x)))
+		     ((listp (car x))
+		      (let* ((plist (car x))
+			     (name-reg  (plist-get plist :name))
+			     (url-reg   (plist-get plist :url))
+			     (value-reg (plist-get plist :value)))
+			(when (and (or (null name-reg)
+				       (string-match name-reg name))
+				   (or (null url-reg)
+				       (string-match url-reg w3m-current-url))
+				   (or (null value-reg)
+				       (string-match value-reg value)))
+			  (throw 'loop (cdr x)))))
+		     ((functionp (car x))
+		      (when (funcall (car x) w3m-current-url name value)
+			(throw 'loop (cdr x))))
+		     ((functionp x)
+		      (let ((item (funcall x w3m-current-url name value)))
+			(when item
+			  (throw 'loop item))))))
+		  (throw 'loop (w3m-decode-entities-string value))))
 	  (save-excursion
 	    (search-forward "</input_alt>")
 	    (setq end (match-beginning 0)))
-----8<-----(cut)-----8<-----