18
19
url_regexp = %r<(((http[s]{0,1}|ftp)://[\(\)%#!/0-9a-zA-Z_$@.&+-,'"*=;?:~-]+)|([0-9a-zA-Z_.-]+@[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+\.[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+))>
19
20
@diaries[date.strftime('%Y%m%d')].to_src.
20
21
gsub(url_regexp, '').
21
scan(/(?:[��-��]{2,}|[��-����]{2,}|[0-9A-Za-z]{2,})/).sort.uniq.reject {|i| m.include?(i)}
22
scan(/(?:[亜-瑤]{2,}|[ァ-ヶー]{2,}|[0-9A-Za-z]{2,})/).sort.uniq.reject {|i| m.include?(i)}
24
25
inn, out, err = Open3.popen3("#{analyzer} | sort | uniq")
28
29
r = out.read.map do |l|
30
if /\s(̾��|̤�θ�)/.match(l) and
31
!/(\W|\d)/.match(word) and # ����Ȥ��������פ�ʤ�
32
!/\A[��-��]{1,2}\z/.match(word) and # 2ʸ���ʲ��ΤҤ餬�ʤ��פ��Ǥ���
33
!m.include?(word) # Plugin�Υ�åɤϽ�������������������
31
if /\s(名詞|未知語)/.match(l) and
32
!/(\W|\d)/.match(word) and # 記号とか数字は要らない
33
!/\A[あ-ん]{1,2}\z/.match(word) and # 2文字以下のひらがなも要らんでしょ
34
!m.include?(word) # Pluginのメソッドは除外した方がいいかも
72
73
append = @conf['random_google.append'].split
73
74
rr = (r.compact + append).map {|i| u(i)}.join('+') # URL-escaped
74
rrr = r.compact.map.join(' ')
75
rrr = r.compact.map.to_a.join(' ')
75
76
caption = @conf['random_google.caption'].gsub(/\$1/, h(rrr)) # only the words picked up are escaped
76
77
popup = h(@conf['random_google.popup'].gsub(/\$1/, rrr)) # escaped
78
79
<div class="body-enter">
79
[<a href="http://www.google.com/search?lr=lang_ja&ie=euc-jp&q=#{rr}" title="#{popup}">
80
[<a href="http://www.google.com/search?lr=lang_ja&ie=utf-8&q=#{rr}" title="#{popup}">
120
<h3 class="subtitle">ɽ����Ϣ</h3>
121
#{"<p>google�ؤΥ��ʸ����ȥ�ξ�˥ޥ����ݥ����֤������˥ݥåץ��åפ���ʸ�������ꤷ�ޤ���ʸ������� $1 ����Ф��줿������ɤ��ִ�����ޤ���</p>" unless @conf.mobile_agent?}
122
<p>���<input name="random_google_caption" size="70" value="#{h @conf['random_google.caption']}"></p>
123
<p>�ݥåץ��åס�<input name="random_google_popup" size="70" value="#{h @conf['random_google.popup']}"></p>
121
<h3 class="subtitle">表示関連</h3>
122
#{"<p>googleへのリンクを示す文字列とリンクの上にマウスポインタを置いた時にポップアップする文字列を指定します.文字列中の $1 は抽出されたキーワードで置換されます.</p>" unless @conf.mobile_agent?}
123
<p>リンク:<input name="random_google_caption" size="70" value="#{h @conf['random_google.caption']}"></p>
124
<p>ポップアップ:<input name="random_google_popup" size="70" value="#{h @conf['random_google.popup']}"></p>
125
<h3 class="subtitle">�ɲä��륭�����</h3>
126
#{"<p>�ɲä�����������ɤ���ꤷ�ޤ���ʣ�����ꤹ����ϥ�����ɤڡ����Ƕ��ڤäƻ��ꤷ�Ƥ���������</p>" unless @conf.mobile_agent?}
127
#{"<p>��)</p><pre>-site:example.com</pre>" unless @conf.mobile_agent?}
126
<h3 class="subtitle">追加するキーワード</h3>
127
#{"<p>追加したいキーワードを指定します.複数指定する場合はキーワードをスペースで区切って指定してください.</p>" unless @conf.mobile_agent?}
128
#{"<p>例)</p><pre>-site:example.com</pre>" unless @conf.mobile_agent?}
128
129
<p><input name="random_google_append" size="70" value="#{h @conf['random_google.append']}"></p>
130
<h3 class="subtitle">�������륭�����</h3>
131
#{"<p>����������������ɤ���ꤷ�ޤ���ʣ�����ꤹ����ϥ�����ɤڡ����Ƕ��ڤäƻ��ꤷ�Ƥ���������</p>" unless @conf.mobile_agent?}
132
#{"<p>��)</p><pre>a the</pre>" unless @conf.mobile_agent?}
131
<h3 class="subtitle">除外するキーワード</h3>
132
#{"<p>除外したいキーワードを指定します.複数指定する場合はキーワードをスペースで区切って指定してください.</p>" unless @conf.mobile_agent?}
133
#{"<p>例)</p><pre>a the</pre>" unless @conf.mobile_agent?}
133
134
<p><input name="random_google_exception" size="70" value="#{h @conf['random_google.exception']}"></p>
136
137
unless @conf.secure
138
<h3 class="subtitle">�����Dz��ϴ������</h3>
139
#{"<p>������ɤ���Ф˷����Dz��ϴ�����Ѥ��뤫�ɤ�������ꤷ�ޤ��������Dz��ϴ����Ѥ��ʤ�����/([��-��]{2,}|[��-����]{2,}|[0-9A-Za-z]{2,})/�Ȥ�������ɽ���ǥ�����ɤ���Ф��ޤ��������ޤ����٤Ϥ褯����ޤ���</p>" unless @conf.mobile_agent?}
140
#{"<p>Chasen��MeCab��ɸ��ѥ��˥��ȡ��뤵��Ƥ��ʤ����ϡ־�����ꤹ��פ��������Ρַ����Dz��ϴ�Υѥ��פǷ����Dz��ϴ�����Хѥ��ǻ��ꤷ�Ʋ�������</p>" unless @conf.mobile_agent?}
141
#{"<p>Chasen��MeCab�ʳ��η����Dz��ϴ�����Ѥ���������Ʊ�ͤˡ־�����ꤹ��פ��������Ρַ����Dz��ϴ�Υѥ��פǷ����Dz��ϴ�����Хѥ��ǻ��ꤷ�Ʋ��������ǽ�Υ����˷����Ǥ����Ϥ��졤����Ʊ���Ԥˤ��η����Ǥ��ʻ�(��̾�����)�����Ϥ����褦�ʷ����Dz��ϴ�Ǥ�������Ѳ�ǽ�Ǥ���</p>" unless @conf.mobile_agent?}
139
<h3 class="subtitle">形態素解析器の利用</h3>
140
#{"<p>キーワードの抽出に形態素解析器を利用するかどうかを指定します.形態素解析器を使用しない場合は/([亜-瑤]{2,}|[ァ-ヶー]{2,}|[0-9A-Za-z]{2,})/という正規表現でキーワードを抽出しますが,あまり精度はよくありません.</p>" unless @conf.mobile_agent?}
141
#{"<p>ChasenやMeCabが標準パスにインストールされていない場合は「場所を指定する」を選択し,下の「形態素解析器のパス」で形態素解析器を絶対パスで指定して下さい.</p>" unless @conf.mobile_agent?}
142
#{"<p>ChasenやMeCab以外の形態素解析器を利用したい場合も同様に「場所を指定する」を選択し,下の「形態素解析器のパス」で形態素解析器を絶対パスで指定して下さい.最初のカラムに形態素が出力され,かつ同じ行にその形態素の品詞(「名詞」等)が出力されるような形態素解析器であれば利用可能です.</p>" unless @conf.mobile_agent?}
142
143
<p><select name="random_google_analyzer">
143
<option value="chasen"#{@conf['random_google.analyzer'] == "chasen" ? " selected" : ""}>ChaSen�����Ѥ���</option>
144
<option value="mecab"#{@conf['random_google.analyzer'] == "mecab" ? " selected" : ""}>MeCab�����Ѥ���</option>
145
<option value="user_defined"#{@conf['random_google.analyzer'] == "user_defined" ? " selected" : ""}>������ꤹ��</option>
146
<option value="internal"#{@conf['random_google.analyzer'] == "internal" ? " selected" : ""}>���Ѥ��ʤ�</option>
144
<option value="chasen"#{@conf['random_google.analyzer'] == "chasen" ? " selected" : ""}>ChaSenを利用する</option>
145
<option value="mecab"#{@conf['random_google.analyzer'] == "mecab" ? " selected" : ""}>MeCabを利用する</option>
146
<option value="user_defined"#{@conf['random_google.analyzer'] == "user_defined" ? " selected" : ""}>場所を指定する</option>
147
<option value="internal"#{@conf['random_google.analyzer'] == "internal" ? " selected" : ""}>利用しない</option>
149
<h3 class="subtitle">�����Dz��ϴ�Υѥ�</h3>
150
#{"<p>���Ѥ�������Dz��ϴ�����Хѥ��ǻ��ꤷ�ޤ���</p>" unless @conf.mobile_agent?}
151
#{"<p>��)</p><pre>/usr/local/bin/chasen</pre>" unless @conf.mobile_agent?}
150
<h3 class="subtitle">形態素解析器のパス</h3>
151
#{"<p>利用する形態素解析器を絶対パスで指定します.</p>" unless @conf.mobile_agent?}
152
#{"<p>例)</p><pre>/usr/local/bin/chasen</pre>" unless @conf.mobile_agent?}
152
153
<p><input name="random_google_analyzer_path" size="70" value="#{h @conf['random_google.analyzer_path']}"></p>
161
# indent-tabs-mode: t
163
# ruby-indent-level: 3