--- /dev/null
+use strict;
+use warnings;
+use Module::Build;
+use File::Spec;
+use File::Basename;
+use YAML qw/ Load /;
+
+my $class = Module::Build->subclass(
+ class => 'MTToiplanPluginDirectoryBuilder',
+ code => q{
+ # Don't make blib
+ # sub ACTION_code {};
+ # Don't make blib
+ sub ACTION_docs {};
+ # Don't make META.yml
+ sub ACTION_distmeta {
+ # no warning on ACTION_distdir
+ $_[0]->{metafile} = 'MANIFEST';
+ };
+ # Don't add MEATA.yml to MANIFEST
+ sub ACTION_manifest {
+ $_[0]->{metafile} = 'MANIFEST',
+ $_[0]->SUPER::ACTION_manifest(@_);
+ };
+ sub ACTION_test {
+ my $p = $_[0]->{properties};
+ unshift(
+ @INC,
+ File::Spec->catdir($p->{base_dir}, 'extlib'),
+ File::Spec->catdir($p->{base_dir}, '../../lib'),
+ File::Spec->catdir($p->{base_dir}, '../../extlib'),
+ );
+
+ $_[0]->SUPER::ACTION_test(@_);
+ };
+ sub ACTION_upload_google {
+ my ($self) = @_;
+ my $prj = 'toiplan-mtplugin-directory';
+ my $ver = $self->dist_version;
+ my $dist_dir = $self->dist_dir;
+ my $name = $self->dist_name;
+
+ $self->depends_on('dist');
+ #$self->_call_action('distdir');
+ $self->ACTION_distdir;
+ $self->depends_on('zipdist');
+ system(
+ "googlecode_upload.py -s 'Release $ver (TGZ)' -p $prj -l $name $dist_dir.tar.gz"
+ );
+ system(
+ "googlecode_upload.py -s 'Release $ver (ZIP)' -p $prj -l $name $dist_dir.zip"
+ );
+ unlink("$dist_dir.tar.gz");
+ unlink("$dist_dir.zip");
+ };
+
+ sub ACTION_zipdist {
+ my ($self) = @_;
+ my $dist_dir = $self->dist_dir;
+ $self->depends_on('distdir');
+ print "Creating $dist_dir.zip\n";
+ system("zip -r $dist_dir.zip $dist_dir") == 0 or die $?;
+ $self->delete_filetree($dist_dir);
+ }
+
+ sub ACTION_distdir {
+ my ($self) = @_;
+
+ $_[0]->SUPER::ACTION_distdir(@_);
+
+ my $dist_dir = $self->dist_dir;
+ rename($dist_dir, $self->{properties}{dist_name});
+ use File::Path;
+ use File::Spec;
+ use File::Basename;
+ my $plugins = File::Spec->catfile($dist_dir, 'plugins');
+ mkpath($plugins, 1, 0755);
+
+ my $static = File::Spec->catfile($dist_dir, 'mt-static/plugins');
+ mkpath($static, 1, 0755);
+
+ my $new_dist_dir = File::Spec->catfile(
+ $plugins, $self->{properties}{dist_name}
+ );
+ rename($self->{properties}{dist_name}, $new_dist_dir);
+
+ foreach my $f (glob(File::Spec->catfile($new_dist_dir, 'LIC*'))) {
+ rename($f, File::Spec->catfile($dist_dir, basename($f)));
+ }
+
+ if (my @statics = glob(File::Spec->catfile($new_dist_dir, 'static/*'))) {
+ my $d = File::Spec->catfile($static, $self->{properties}{dist_name});
+ mkpath($d, 1, 0755);
+ foreach my $f (@statics) {
+ rename($f, File::Spec->catfile($d, basename($f)));
+ }
+ }
+ }
+ }
+);
+
+my $yaml_string = do {
+ open(my $fh, File::Spec->catfile(dirname(__FILE__), 'config.yaml'));
+ local $/;
+ <$fh>
+};
+$yaml_string =~ s/^(\s*)\*/$1App::\*/gm;
+my $yaml = Load($yaml_string);
+
+my $builder = $class->new(
+ dist_name => $yaml->{name},
+ dist_author => 'Movable Type ACME Plugin Project',
+ dist_version => $yaml->{version},
+ module_name => $yaml->{name} . '::App',
+ license => 'MIT License',
+ add_to_cleanup => [ $yaml->{name} . '-*' ],
+);
+
+$builder->create_build_script();
--- /dev/null
+Bleach - Bleaching contents.
+Inspired by Acme::Bleach <http://search.cpan.org/dist/Acme-Bleach/>
+
+Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
--- /dev/null
+config.yaml
+lib/Bleach/App.pm
+lib/Bleach/L10N.pm
+lib/Bleach/L10N/en_us.pm
+lib/Bleach/L10N/ja.pm
+LICENSE
--- /dev/null
+^MANIFEST
+\bBuild.PL$
+#^Makefile
+#^META.yml$
+#^blib/
+#~$
+
+
+# Avoid version control files.
+\bRCS\b
+\bCVS\b
+,v$
+\B\.svn\b
+\B\.git\b
+\B\.cvsignore$
+
+# Avoid Makemaker generated and utility files.
+\bMakefile$
+\bblib
+\bMakeMaker-\d
+\bpm_to_blib$
+\bblibdirs$
+^MANIFEST\.SKIP$
+
+# Avoid Module::Build generated and utility files.
+\bBuild$
+\bBuild.bat$
+\b_build
+
+# Avoid Devel::Cover generated files
+\bcover_db
+
+# Avoid temp and backup files.
+~$
+\.tmp$
+\.old$
+\.bak$
+\#$
+\.#
+\.rej$
+
+# Avoid OS-specific files/dirs
+# Mac OSX metadata
+\B\.DS_Store
+# Mac OSX SMB mount metadata files
+\B\._
+# Avoid archives of this distribution
+\bArchiveUploader-[\d\.\_]+
--- /dev/null
+# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+# plugin name
+name: Bleach
+version: 0.0.1
+
+# about this plugin
+description: <__trans phrase="Bleaching template.">
+author_name: <__trans phrase="Movable Type ACME Plugin Project">
+author_link: http://mt-acme.sourceforge.jp/
+plugin_link: http://mt-acme.sourceforge.jp/bleach/
+doc_link: http://mt-acme.sourceforge.jp/bleach/
+
+#Localization
+l10n_class: Bleach::L10N
+
+#tag
+tags:
+ help_url: http://mt-acme.sourceforge.jp/bleach/tags#%t
+ block:
+ Bleach: Bleach::App::_hdlr_bleach
+
+callbacks:
+ MT::Entry::pre_save: Bleach::App::pre_save
+ MT::Template::pre_save: Bleach::App::pre_save
--- /dev/null
+# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+package Bleach::App;
+use strict;
+
+sub _hdlr_bleach {
+ my ($ctx, $args, $cond) = @_;
+
+ my $text = '';
+ my $texts = $ctx->stash('tokens')->getElementsByTagName('text');
+ foreach my $t (@$texts) {
+ $text .= MT::Template::Node::nodeValue($t);
+ }
+
+ $text =~ tr/ /01/;
+ $text =~ s/[^\r\n]+/pack('b*', $&)/ge;
+
+ $ctx->build($text);
+}
+
+sub pre_save {
+ my ($cb, $obj, $original) = @_;
+
+ my @cols = ();
+ if ($obj->datasource eq 'entry') {
+ @cols = ('text', 'text_more');
+ }
+ elsif ($obj->datasource eq 'template') {
+ @cols = ('text');
+ }
+
+ my $bleach = sub {
+ my $text = shift;
+ if ($text !~ m/^[\s\r\n]*$/) {
+ $text =~ s/[^\r\n]+/unpack('b*', $&)/ge;
+ $text =~ tr/01/ /;
+ }
+ $text;
+ };
+
+ foreach my $c (@cols) {
+ my $text = $obj->$c;
+ $text =~ s/(<mt:?bleach([^>]*)>)(.*)(<\/mt:?bleach>)/"$1" . $bleach->($3) . "$4"/iseg;
+ $obj->$c($text);
+ }
+}
+
+1
--- /dev/null
+# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+package Bleach::L10N;
+use strict;
+use base 'MT::Plugin::L10N';
+
+1;
--- /dev/null
+# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+package Bleach::L10N::en_us;
+
+use strict;
+
+use base 'Bleach::L10N';
+use vars qw( %Lexicon );
+%Lexicon = ();
+
+1;
--- /dev/null
+# Copyright (c) 2008 Movable Type ACME Plugin Project, All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+package Bleach::L10N::ja;
+
+use strict;
+use base 'Bleach::L10N::en_us';
+use vars qw( %Lexicon );
+
+%Lexicon = (
+ 'Bleaching template.' => 'テンプレートを漂白します',
+);
+
+1;