root/lang/perl/plagger/lib/Plagger/Plugin/Filter/JugemEmoji.pm

Revision 561, 9.8 kB (checked in by mayuki, 11 months ago)

lang/perl/plagger/lib/Plagger/Plugin/Filter/JugemEmoji.pm: POD書いたやつで上書きし忘れ。

Line 
1# $Id: JugemEmoji.pm 120 2007-10-19 15:45:31Z mayuki $
2package Plagger::Plugin::Filter::JugemEmoji;
3use utf8;
4use strict;
5use base qw( Plagger::Plugin );
6
7sub init {
8    my $self = shift;
9    $self->SUPER::init(@_);
10}
11
12sub register {
13    my($self, $context) = @_;
14
15    $context->register_hook(
16        $self,
17        'update.entry.fixup' => \&filter
18    );
19}
20
21sub filter {
22    my($self, $context, $args) = @_;
23
24    my $e = $args->{entry};
25
26    return unless $e->permalink =~ m#^https?://[^.]+\.jugem\.(cc|jp)/#;
27    $e->body($self->replace($e->body, $&));
28}
29
30my %EMOJI_SET = (
31  '嬉しい' => 'a01',
32  '楽しい' => 'a02',
33  '悲しい' => 'a03',
34  '怒り' => 'a04',
35  'びっくり' => 'a05',
36  'ショック' => 'a06',
37  'ときめき' => 'a07',
38  '冷や汗' => 'a08',
39  'しょんぼり' => 'a09',
40  '男' => 'a10',
41  '女' => 'a11',
42  '拍手' => 'a12',
43  'グッド' => 'a13',
44  'バッド' => 'a14',
45  '聞き耳を立てる' => 'a15',
46  '見る' => 'a16',
47  '抱擁' => 'a17',
48  'おてんき' => 'weather_01',
49  'くもり' => 'weather_02',
50  'あめ' => 'weather_03',
51  'ゆき' => 'weather_04',
52  '濃霧' => 'j_001',
53  '小雨' => 'j_002',
54  '晴れ' => 'b01',
55  '曇り' => 'b02',
56  '雨' => 'b03',
57  '雪' => 'b04',
58  '雷' => 'b05',
59  '強風' => 'b06',
60  '霧' => 'b07',
61  '月' => 'b08',
62  '電車' => 'c01',
63  '飛行機' => 'c02',
64  '車' => 'c03',
65  '自転車' => 'c04',
66  '船' => 'c05',
67  'バス' => 'c06',
68  '学校' => 'd01',
69  '家' => 'd02',
70  'ビル' => 'd03',
71  '病院' => 'd04',
72  '犬' => 'e01',
73  '猫' => 'e02',
74  '鳥' => 'e03',
75  '魚' => 'e04',
76  '馬' => 'e05',
77  '豚' => 'e06',
78  'かたつむり' => 'j_135',
79  'ペンギン' => 'pengin',
80  '赤ちゃん' => 'e07',
81  '子供' => 'e08',
82  'おばけ' => 'e09',
83  '映画' => 'f01',
84  '食事' => 'f02',
85  '美容室' => 'f03',
86  '読書' => 'f04',
87  '温泉' => 'f05',
88  'カラオケ' => 'f06',
89  'サッカー' => 'g01',
90  'サーフィン' => 'g02',
91  'スキー' => 'g03',
92  'ジョギング' => 'g04',
93  '水泳' => 'g05',
94  'テニス' => 'g06',
95  'ゴルフ' => 'g07',
96  '野球' => 'g08',
97  '携帯' => 'h01',
98  'ビール' => 'h02',
99  '熱燗' => 'h03',
100  'ホットコーヒー' => 'h04',
101  'ソフトクリーム' => 'h05',
102  'ラーメン' => 'h06',
103  'おでん' => 'h07',
104  'パン' => 'h08',
105  'ハンバーガー' => 'h09',
106  '靴' => 'h10',
107  'ペン' => 'h11',
108  'メール' => 'h12',
109  'PC' => 'h13',
110  'テレビ' => 'h14',
111  '花' => 'h15',
112  '植物' => 'h16',
113  'お金' => 'h17',
114  '財布' => 'j_104',
115  '工具' => 'h18',
116  'カチンコ' => 'j_096',
117  'ふくろ' => 'j_097',
118  'いす' => 'j_099',
119  'Tシャツ' => 'j_103',
120  'ジーンズ' => 'j_106',
121  'スノボ' => 'j_107',
122  'チャペル' => 'j_108',
123  'ドア' => 'j_109',
124  'レンチ' => 'j_110',
125  '鉛筆2' => 'j_111',
126  'ハサミ' => 'j_030',
127  '指輪' => 'j_113',
128  'リボン' => 'j_041',
129  '足' => 'j_046',
130  '眼鏡' => 'j_047',
131  '砂時計' => 'j_114',
132  '腕時計' => 'j_116',
133  '王冠' => 'h19',
134  '王冠2' => 'j_112',
135  'おにぎり' => 'h20',
136  '時計' => 'h21',
137  'ケーキ' => 'h22',
138  'プレゼント' => 'h23',
139  'ゲーム' => 'h24',
140  'CD' => 'h25',
141  'カメラ' => 'h26',
142  '銃' => 'h27',
143  '桜' => 'h28',
144  '!' => 'i01',
145  '?' => 'i02',
146  '!?' => 'i03',
147  'ムード' => 'j_088',
148  '!!' => 'j_091',
149  'るんるん' => 'j_081',
150  'かわいい' => 'j_082',
151  'キスマーク' => 'j_083',
152  '口紅' => 'j_105',
153  'ぴかぴか' => 'j_084',
154  'ラブ' => 'i04',
155  '失恋' => 'i05',
156  '揺れるハート' => 'j_078',
157  'ハート大小' => 'j_079',
158  'マル秘' => 'i07',
159  '祝' => 'i08',
160  'zzz' => 'i09',
161  '眠たい' => 'j_090',
162  '怒りマーク' => 'i10',
163  'むかっ' => 'j_085',
164  'パンチ' => 'j_086',
165  '爆弾' => 'j_087',
166  '汗' => 'i11',
167  'どんっ' => 'j_092',
168  'あせあせ' => 'j_093',
169  'ギザギザ' => 'j_094',
170  'くるりん' => 'j_095',
171  'スペード' => 'i12',
172  'クローバー' => 'i13',
173  'ハート' => 'i14',
174  'ダイヤ' => 'i15',
175  'ハートのエース' => 'card_01',
176  'ダイヤのエース' => 'card_02',
177  'スペードのエース' => 'card_03',
178  'クローバーのエース' => 'card_04',
179  'ノーノー' => 'face_01',
180  'ニコニコ' => 'face_02',
181  'たらーっ' => 'face_03',
182  'モゴモゴ' => 'face_04',
183  'ぶー' => 'face_05',
184  'てれちゃう' => 'face_06',
185  'ラブラブ' => 'face_07',
186  'ポロリ' => 'face_08',
187  'モグモグ' => 'face_09',
188  'イヒヒ' => 'face_10',
189  'ラッキー' => 'face_11',
190  'ふぅ〜ん' => 'face_12',
191  'ムニョムニョ' => 'face_13',
192  'ポッ' => 'face_14',
193  'わーい' => 'wai',
194  'ちっ' => 'chi',
195  'がく〜' => 'gaku',
196  'ひやひや' => 'hiyaase',
197  'あっかんべー' => 'akkanbe',
198  'ウィンク' => 'wink',
199  '猫2' => 'neco',
200  '泣き顔' => 'nakigao',
201  '唖然' => 'skull_01',
202  '撃沈' => 'skull_02',
203  '困惑' => 'skull_03',
204  '人影' => 'j_098',
205  'YES!' => 'comme_yes',
206  'NO!' => 'comme_no',
207  'ワッ!' => 'comme_h',
208  'おや?' => 'comme_q',
209  'ロリポップ!' => 'comme_loli',
210  'NEW!' => 'new',
211  'TEL' => 'tel',
212  'FAX' => 'fax',
213  'URL' => 'url',
214  'MAIL' => 'mail_03',
215  'グー' => 'hand_01',
216  'パー' => 'hand_02',
217  'チョキ' => 'hand_03',
218  'イケテル' => 'hand_04',
219  'きのこオレンジ' => 'kinoko_01',
220  'きのこレッド' => 'kinoko_02',
221  'きのこグリーン' => 'kinoko_03',
222  'きのこブルー' => 'kinoko_04',
223  'チューリップ' => 'j_132',
224  'もみじ' => 'j_134',
225  'パソコン' => 'pc',
226  'ケータイ' => 'mobile',
227  'ポケットベル' => 'j_016',
228  '電話' => 'j_042',
229  'fax to' => 'j_055',
230  'mac' => 'mac',
231  'win' => 'win',
232  'テレビジョン' => 'tv',
233  'カレンダー' => 'calendar',
234  'メモ' => 'j_043',
235  '壁掛時計' => 'time',
236  '本' => 'book',
237  'メールピンク' => 'mail_01',
238  'メールブルー' => 'mail_02',
239  '便箋' => 'memo',
240  '鉛筆' => 'pencil',
241  'おはな' => 'flower',
242  'よつばのクローバー' => 'clover',
243  '赤い旗' => 'flag_01',
244  '青い旗' => 'flag_02',
245  'GO!' => 'go',
246  'STOP!' => 'stop',
247  'フガー' => 'smoke_01',
248  'プシュー' => 'smoke_02',
249  'セブン' => 'cv_01',
250  'ホットステーション' => 'cv_02',
251  'ファミマ' => 'cv_03',
252  '郵便局' => 'postman',
253  '赤りんご' => 'apple_01',
254  '青りんご' => 'apple_02',
255  'さくらんぼ' => 'cherry',
256  'バナナ' => 'j_133',
257  'ラテ' => 'cafe',
258  'ひらめき' => 'light',
259  'ベースボール' => 'ball_01',
260  'サッカーボール' => 'ball_02',
261  'バスケットボール' => 'ball_03',
262  '地球' => 'earth',
263  'パクッ' => 'chara_01',
264  'ニョロ' => 'chara_02',
265  'ピピピ' => 'chara_03',
266  'トイレ' => 'j_027',
267  'ディナー' => 'dinner',
268  'バー' => 'j_028',
269  'ワイングラス' => 'j_136',
270  '湯のみ' => 'j_115',
271  'ハイヒール' => 'j_029',
272  'カバン' => 'j_040',
273  '遊園地' => 'j_032',
274  '音楽' => 'j_033',
275  'アート' => 'j_034',
276  '演劇' => 'j_035',
277  'イベント' => 'j_036',
278  'チケット' => 'j_037',
279  'スポーツ' => 'j_015',
280  'モータースポーツ' => 'm_sports',
281  '波' => 'j_130',
282  '富士山' => 'j_131',
283  'ツリー' => 'tree',
284  'リース' => 'wreathe',
285  'ブーツ' => 'boots',
286  '星' => 'star',
287  'ケーキ2' => 'cake',
288  '結晶' => 'yuki',
289  '日の出' => 'hinode',
290  '鏡もち' => 'mochi',
291  'かどまつ' => 'kadomatsu',
292  'お年玉' => 'otoshidama',
293  '凧' => 'taco',
294  '牡羊座' => 'j_003',
295  '牡牛座' => 'j_004',
296  '双子座' => 'j_005',
297  '蟹座' => 'j_006',
298  '獅子座' => 'j_007',
299  '乙女座' => 'j_008',
300  '天秤座' => 'j_009',
301  '蠍座' => 'j_010',
302  '射手座' => 'j_011',
303  '山羊座' => 'j_012',
304  '水瓶座' => 'j_013',
305  '魚座' => 'j_014',
306  '自動車' => 'car',
307  '路線バス' => 'bus',
308  '信号' => 'j_026',
309  'でんしゃ' => 'train',
310  'おうち' => 'home',
311  '地下鉄' => 'j_017',
312  '新幹線' => 'j_018',
313  '車(RV)' => 'j_019',
314  '銀行' => 'j_020',
315  'ATM' => 'j_021',
316  'ホテル' => 'j_022',
317  'コンビニ' => 'j_023',
318  'ガソリンスタンド' => 'j_024',
319  '駐車場' => 'j_025',
320  'soon' => 'j_100',
321  'on' => 'j_101',
322  'end' => 'j_102',
323  'next' => 'arrow_r',
324  'back' => 'arrow_l',
325  'up' => 'arrow_u',
326  'down' => 'arrow_d',
327  '右斜め下' => 'j_044',
328  '左斜め上' => 'j_045',
329  '左斜め下' => 'j_054',
330  '右斜め上' => 'j_031',
331  '矢印左右' => 'j_128',
332  '矢印上下' => 'j_129',
333  '上向き' => 'j_080',
334  '下向き' => 'j_089',
335  '新月' => 'j_049',
336  'やや欠け月' => 'j_050',
337  '半月' => 'j_051',
338  '三日月' => 'j_052',
339  '満月' => 'j_053',
340  '有料' => 'j_056',
341  '無料' => 'j_057',
342  'OK' => 'i06',
343  'OK' => 'j_077',
344  'NG' => 'j_117',
345  'ID' => 'j_058',
346  '次項有' => 'j_060',
347  'クリア' => 'j_061',
348  'NEW' => 'j_063',
349  '旗' => 'j_064',
350  'フリーダイヤル' => 'j_065',
351  'シャープダイヤル' => 'j_066',
352  '1' => 'j_067',
353  '2' => 'j_068',
354  '3' => 'j_069',
355  '4' => 'j_070',
356  '5' => 'j_071',
357  '6' => 'j_072',
358  '7' => 'j_073',
359  '8' => 'j_074',
360  '9' => 'j_075',
361  'ゼロ' => 'j_076',
362  '禁止' => 'j_124',
363  '空室' => 'j_125',
364  '合格' => 'j_126',
365  '満室' => 'j_127',
366  '危険' => 'j_123',
367  '車椅子' => 'j_048',
368  '喫煙' => 'j_038',
369  '禁煙' => 'j_039',
370  '虫眼鏡' => 'j_062',
371  'パスワード' => 'j_059',
372  'クリップ' => 'j_118',
373  'コピーライト' => 'j_119',
374  'トレードマーク' => 'j_120',
375  'リサイクル' => 'j_121',
376  'レジスタードトレードマーク' => 'j_122',
377);
378
379sub replace {
380    my ($self, $text, $base) = @_;
381
382    $text =~ s#\[:(.*?):\]#"<img src=\"$base/emoji/$EMOJI_SET{$1}.gif\" alt=\"$1\" />" || $1#eg;
383
384    $text;
385}
386
3871;
388__END__
389
390=head1 NAME
391
392Plagger::Plugin::Filter::JugemEmoji - Expand Jugem emoji notations to HTML img elements
393
394=head1 SYNOPSIS
395
396- module: Filter::JugemEmoji
397
398=head1 DESCRIPTION
399
400Expand Jugem emoji notations to HTML img elements.
401
402=head1 AUTHOR
403
404Mayuki Sawatari
405
406=head1 SEE ALSO
407
408L<Plagger>
409
410=cut
Note: See TracBrowser for help on using the browser.