~ubuntu-branches/ubuntu/wily/tdiary/wily

« back to all changes in this revision

Viewing changes to misc/plugin/random_google.rb

  • Committer: Bazaar Package Importer
  • Author(s): Daigo Moriwaki
  • Date: 2011-04-11 21:53:16 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20110411215316-ih4gt4q8p29d2wf8
Tags: 3.0.1-1
* New upstream release (Closes: #542801, #594947)
* debian/control:
 - Bumped up Standards-Version to 3.9.1.
 - Updated version dependency.
* debian/tdiary-setup.rb: Followed the upstream changes, incorporating js and
  index.fcgi

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# random_google.rb $Revision: 1.7 $
2
 
#
3
 
# random_google: ����������������Ф���ñ���google�Ǹ��������󥯤���������
4
 
#
5
 
# �Ȥ���:
6
 
#   tDiary1.5.5�ʹߤ�Ƴ�����줿conf_proc���б����Ƥ���Τǡ�tDiary��������̤���ɤ�����
 
1
# -*- coding: utf-8 -*-
 
2
# random_google.rb
 
3
#
 
4
# random_google: 日記からランダムに抽出した単語をgoogleで検索するリンクを生成する
 
5
#
 
6
# 使い方:
 
7
#   tDiary1.5.5以降で導入されたconf_procに対応しているので,tDiaryの設定画面からどうぞ.
7
8
#
8
9
# Copyright (c) 2003 Junichiro KITA <kita@kitaj.no-ip.com>
9
10
# Distributed under the GPL
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)}
22
23
        else
23
24
                require 'open3'
24
25
                inn, out, err = Open3.popen3("#{analyzer} | sort | uniq")
27
28
                m = self.methods
28
29
                r = out.read.map do |l|
29
30
                        word = l.split[0]
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のメソッドは除外した方がいいかも
34
35
                                word
35
36
                        else
36
37
                                nil
44
45
 
45
46
def random_google_init
46
47
        @conf['random_google.n'] ||= 2
47
 
        @conf['random_google.caption'] ||= '�⤷���������Ϣ���뤫�⤷��ʤ��ڡ���'
48
 
        @conf['random_google.popup'] ||= '�����Τ���: $1'
 
48
        @conf['random_google.caption'] ||= 'もしかしたら関連するかもしれないページ'
 
49
        @conf['random_google.popup'] ||= '本日のお題: $1'
49
50
        @conf['random_google.append'] ||= ''
50
51
        @conf['random_google.exception'] ||= ''
51
52
        if @conf.secure
71
72
                        end
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
77
78
                        <<-HTML
78
79
                        <div class="body-enter">
79
 
                        [<a href="http://www.google.com/search?lr=lang_ja&amp;ie=euc-jp&amp;q=#{rr}" title="#{popup}">
 
80
                        [<a href="http://www.google.com/search?lr=lang_ja&amp;ie=utf-8&amp;q=#{rr}" title="#{popup}">
80
81
                        #{caption}
81
82
                        </a>]
82
83
                        </div>
101
102
        end
102
103
end
103
104
 
104
 
add_conf_proc('RandomGoogle', '��Ϣ���뤫�⤷��ʤ��ڡ�������') do
 
105
add_conf_proc('RandomGoogle', '関連するかもしれないページ検索') do
105
106
        saveconf_random_google
106
107
        random_google_init
107
108
 
108
109
        r = <<-HTML
109
 
        <h3 class="subtitle">������ɤο�</h3>
110
 
        #{"<p>������ʸ������Ф��륭����ɤο�</p>" unless @conf.mobile_agent?}
 
110
        <h3 class="subtitle">キーワードの数</h3>
 
111
        #{"<p>日記本文から抽出するキーワードの数</p>" unless @conf.mobile_agent?}
111
112
        <p><select name="random_google_n">
112
113
        HTML
113
114
 
117
118
        r << <<-HTML
118
119
        </select></p>
119
120
 
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>
124
125
 
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>
129
130
 
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>
134
135
        HTML
135
136
 
136
137
        unless @conf.secure
137
138
                r << <<-HTML
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>
147
148
        </select></p>
148
149
 
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>
153
154
        HTML
154
155
        end
155
156
        r
156
157
end
157
158
 
 
159
# Local Variables:
 
160
# mode: ruby
 
161
# indent-tabs-mode: t
 
162
# tab-width: 3
 
163
# ruby-indent-level: 3
 
164
# End:
158
165
# vim: ts=3