Showing 3 changed files with 123 additions and 245 deletions
+2 -1
lib/DBIx/Custom.pm
... ...
@@ -25,7 +25,8 @@ __PACKAGE__->attr(
25 25
     query_builder => sub { DBIx::Custom::QueryBuilder->new },
26 26
     result_class  => 'DBIx::Custom::Result',
27 27
     base_table    => sub { DBIx::Custom::Table->new(dbi => shift) },
28
-    safety_column_name => sub { qr/^[\w\.]*$/ }
28
+    safety_column_name => sub { qr/^[\w\.]*$/ },
29
+    stash => sub { {} }
29 30
 );
30 31
 
31 32
 __PACKAGE__->attr(
+79 -139
lib/DBIx/Custom/Guide.pod
... ...
@@ -490,18 +490,17 @@ use <sth()> to get statement handle.
490 490
 
491 491
     my $sth = $result->sth;
492 492
 
493
-=head2 4. �t�B���^�����O
493
+=head2 4. Filtering
494 494
 
495
-�f�[�^�x�[�X�Ƀf�[�^��o�^����Ƃ���f�[�^�x�[�X����f�[�^��擾����
496
-�Ƃ��Ɏ����I�ɒl�̕ϊ���s�������ꍇ�������Ǝv���܂��B
497
-���Ƃ��΁A��t��\�������̏ꍇ�́A
498
-�f�[�^�x�[�X�ɓo�^����ꍇ��L<Time::Piece>�I�u�W�F�N�g����
499
-�f�[�^�x�[�X�̓�t�̃t�H�[�}�b�g�ɁA
500
-�f�[�^�x�[�X����f�[�^��擾����Ƃ��́A���̋t��s����ƕ֗��ł��B
495
+L<DBIx::Custom> provide value filtering. 
496
+For example, You maybe want to convert L<Time::Piece> object to
497
+database date format when register data into database.
498
+and convert database date fromat to L<Time::Piece> object
499
+when get data from database.
501 500
 
502
-=head3 �t�B���^�̓o�^ C<register_filter()>
501
+=head3 Register filter C<register_filter()>
503 502
 
504
-�t�B���^��o�^����ɂ�C<register_filter()>��g�p���܂��B
503
+use C<register_filter() to register filter.
505 504
 
506 505
     $dbi->register_filter(
507 506
         # Time::Piece object to DATE format
... ...
@@ -521,67 +520,60 @@ use <sth()> to get statement handle.
521 520
         },
522 521
     );
523 522
 
524
-�o�^�����t�B���^��C<apply_filter()>�Ȃǂŗ��p���邱�Ƃ��ł��܂��B
523
+Registered filter is used by C<apply_filter()> or etc.
525 524
 
526
-=head3 �t�B���^�̓K�p C<apply_filter()>
525
+=head3 Apply filter C<apply_filter()>
527 526
 
528
-�쐬�����t�B���^��K�p����ɂ́AC<apply_filter()>��g�p���܂��B
527
+use C<apply_filter()> to apply registered filter.
529 528
 
530 529
     $dbi->apply_filter('book',
531 530
         issue_date => {out => 'tp_to_date', in => 'date_to_tp'},
532 531
         first_issue_date => {out => 'tp_to_date', in => 'date_to_tp'}
533 532
     );
534 533
 
535
-����̓e�[�u�����ł��B����ȍ~�́A�񖼂ƃt�B���^���[���̃y�A��L�q���܂��B
536
-�t�B���^���[����out�ɂ́A�f�[�^�x�[�X�Ƀf�[�^�𑗐M����Ƃ��ɓK�p����t�B���^��A
537
-�t�B���^���[����in�ɂ́A�f�[�^�x�[�X����f�[�^��擾����Ƃ��ɓK�p����t�B���^��
538
-�L�q���܂��Bout���f�[�^�x�[�X�ɑ��M������Ain���f�[�^�x�[�X������o�����ł��B
539
-�t�B���^�ɂ́AC<register_filter>�œo�^�����t�B���^���̑��ɁA�R�[�h���t�@�����X��
540
-�w�肷�邱�Ƃ�ł��܂��B
534
+First argument is table name. Arguments after first argument are pairs of column
535
+name and fitering rule. C<out> of filtering rule is filter which is used when data
536
+is send to database. C<in> of filtering rule is filter which is used when data
537
+is got from database. 
538
+
539
+You can specify code reference as filter.
541 540
 
542 541
     issue_date => {out => sub { ... }, in => sub { ... }}
543 542
 
544
-�K�p���ꂽ�t�B���^��C<insert()>�AC<update()>�AC<update_all()>�AC<delete()>�A
545
-C<delete_all()>�AC<select()>�ŗL��ɂȂ�܂��B
543
+Applied filter become effective at insert()>, C<update()>, C<update_all()>,
544
+C<delete()>, C<delete_all()>, C<select()>.
546 545
 
547 546
     my $tp = Time::Piece->strptime('2010/10/14', '%Y/%m/%d');
548
-    my $result = $dbi->select(table => 'book', where => {issu_date => $tp});
547
+    my $result = $dbi->select(table => 'book', where => {issue_date => $tp});
549 548
 
550
-�f�[�^�x�[�X�Ƀf�[�^�����M�����Ƃ��ɁAL<Time::Piece>�I�u�W�F�N�g��
551
-�f�[�^�x�[�X�̓�t�̃t�H�[�}�b�g�u2010-10-14�v�ɕϊ�����܂��B
549
+When data is send to database, L<Time::Piece> object is converted
550
+to database date format "2010-10-14"
552 551
 
553
-�܂��t�Ƀf�[�^��t�F�b�`����Ƃ��ɂ́A�f�[�^�x�[�X�̓�t�̃t�H�[�}�b�g��
554
-�^�C���s�[�X�I�u�W�F�N�g�ɕϊ�����܂��B
552
+When data is fetched, database date format is
553
+converted to L<Time::Piece> object.
555 554
 
556 555
     my $row = $resutl->fetch_hash_first;
557 556
     my $tp = $row->{issue_date};
558 557
 
559
-���̂悤�Ȏ����I�Ɏ�s�����t�B���^��o�^�ł��邱�Ƃ�L<DBIx::Custom>��
560
-����̂ЂƂ‚ł��B
561
-
562
-C<apply_filter()>�œK�p���ꂽ�t�B���^�̓e�[�u�������܂ޗ񖼂ɑ΂��Ă�L��ł��B
558
+You can also use column name which contains table name.
563 559
 
564 560
     $dbi->select(
565 561
         table => 'book',
566
-        where => {'book.title' => 'Perl', 'book.author' => 'Ken'}
562
+        where => {'book.issue_date' => $tp}
567 563
     );
568 564
 
569
-�e�[�u�����ʂ���K�v������Ƃ��ɕ֗��ȋ@�\�ł��B
565
+=head3 Individual filter C<filter>
570 566
 
571
-=head3 �•ʂ̃t�B���^�̓K�p C<filter>
567
+You can apply individual filter .
568
+This filter overwrite the filter by C<apply_filter()>
572 569
 
573
-C<apply_filter()>��g��čŏ��ɂ��ׂẴe�[�u���̗�ɂ‚���
574
-�t�B���^���`���邱�Ƃ�ł��܂����A
575
-�•ʂɃt�B���^��K�p���邱�Ƃ�ł��܂��B
576
-�•ʂ̃t�B���^��C<apply_filter()>�œK�p�����t�B���^��㏑���܂��B
577
-�•ʂ̃t�B���^��SQL��as��g��āA��̕ʖ���쐬����K�v������ꍇ�Ɋ��􂵂܂��B
570
+use C<filter> option to apply individual filter
571
+when data is send to database.
572
+This option is used at C<insert()>, C<update()>,
573
+C<update_all()>, C<delete()>, C<delete_all()>, C<select()>,
574
+C<execute()>.
578 575
 
579
-�f�[�^�x�[�X�ɑ��M����ꍇ�ɁA�•ʂ̃t�B���^��K�p����ɂ́A�e���\�b�h��
580
-C<filter>�I�v�V������g�p���܂��B�•ʂ̃t�B���^�́AC<insert()>�AC<update()>�A
581
-C<update_all()>�AC<delete()>�AC<delete_all()>�AC<select()>�AC<execute()>
582
-�Ŏg�p���邱�Ƃ��ł��܂��B
583
-
584
-C<insert()>�̗����܂��B
576
+C<insert()> example:
585 577
 
586 578
     $dbi->insert(
587 579
         table => 'book',
... ...
@@ -589,7 +581,7 @@ C<insert()>
589 581
         filter => {issue_date => 'tp_to_date', first_issue_date => 'tp_to_date'}
590 582
     );
591 583
 
592
-C<execute()>�̗����܂��B
584
+C<execute()> example:
593 585
 
594 586
 my $sql = <<"EOS";
595 587
 select YEAR(issue_date) as issue_year
... ...
@@ -603,30 +595,16 @@ EOS
603 595
         filter => {issue_year => 'tp_to_year'}
604 596
     );
605 597
 
606
-�����C<filter>��g���ǂ������ł��Bissue_date�̕ϊ��ɂ‚��Ă�C<apply_filter()>
607
-�œo�^���Ă���̂ł����A�V�����쐬������ł���issue_year�ɂ‚��ẮA
608
-���̕ϊ���o�^����Ă��܂���B�ł��̂ŁA�•ʂɃt�B���^��ݒ肵�Ă��܂��B
609
-
610
-�܂����΂ɍs��t�F�b�`����Ƃ��ɂ�•ʂ̃t�B���^��K�p���邱�Ƃ��ł��܂��B
611
-�t�B���^��K�p����ɂ́A
612
-C<DBIx::Custom::Result>�N���X��C<filter>���\�b�h��g�p���܂��B
598
+You can also apply indivisual filter when you fetch row.
599
+use C<DBIx::Custom::Result>'s C<filter()>.
613 600
 
614 601
     $result->filter(issue_year => 'year_to_tp');
615 602
 
616
-�p�ɂɗ��p����̂ł���΁A�•ʂɓo�^�������C<apply_filter()>�œo�^
617
-���Ă������ق����֗��ł��傤�BC<apply_filter()>�͑��݂��Ȃ���ɑ΂��Ă�
618
-�t�B���^��K�p�ł��邩��ł��B
619
-
620
-    $dbi->apply_filter('book',
621
-        'issue_year' => {out => 'tp_to_year', in => 'year_to_tp'}
622
-    );
603
+=head3 End filtering : C<end_filter()>
623 604
 
624
-=head3 �ŏI�o�͂̂��߂̃t�B���^�����O C<end_filter()>
625
-
626
-C<DBIx::Custom::Result>�ł͂���ɍŌ�ɂ���x�A�t�B���^��lj��
627
-�o�^���邱�Ƃ��ł��܂��B���Ƃ���HTML�ɏo�͂������ꍇ�ɁATime::Piece
628
-�I�u�W�F�N�g����ǂ݂₷���L�q�ɕϊ����邱�Ƃ��ł��܂��B
629
-�Ō�̃t�B���^��o�^����ɂ́AC<end_filter()>��g�p���܂��B
605
+You can add filter at end.
606
+It is useful to create last output.
607
+use C<end_filter()> to add end filter.
630 608
 
631 609
     $result->end_filter(issue_date => sub {
632 610
         my $tp = shift;
... ...
@@ -635,20 +613,12 @@ C<DBIx::Custom::Result>
635 613
         return $tp->strftime('%Y/%m/%d %h:%m:%s (%a)');
636 614
     });
637 615
 
638
-��t��₷���`�Ƀt�H�[�}�b�g���邱�Ƃ��ł��܂��B
639
-
640
-�t�B���^�̓t�F�b�`��s���O�ɓo�^���Ă����K�v�����邱�Ƃ�
641
-���ӂ��Ă��������B
642
-
643
-    $result->filter(...);
644
-    $result->end_filter(...);
645
-    my $row = $result->fetch_hash_first;
616
+In this example, L<Time::Piece> object is converted to readable format.
646 617
 
647
-=head3 ��̏���Ƀt�B���^��K�p���� C<each_column()>
618
+=head3 Automate applying filter C<each_column()>
648 619
 
649
-��t�^�̗�͎蓮�Őݒ肵�Ȃ��Ă�A�����I�ɐݒ�ł���ƕ֗��ł��B
650
-���̂��߂Ƀf�[�^�x�[�X�̃e�[�u���̗�̂��ׂĂ̏���
651
-���Ԃɏ������邽�߂�C<each_column()>������܂��B
620
+It is useful to apply filter automatically at date type columns.
621
+You can use C<each_column()> to process all column infos.
652 622
 
653 623
     $dbi->each_column(
654 624
         sub {
... ...
@@ -665,154 +635,124 @@ C<DBIx::Custom::Result>
665 635
         }
666 636
     );
667 637
 
668
-each_column�̓R�[���o�b�N��󂯎��܂��B�R�[���o�b�N�̈��
669
-���Ԃ�L<DBIx::Custom>�I�u�W�F�N�g�A�e�[�u�����A�񖼁A��̏��ł��B
670
-��̌^���̏����ƂɎ����I�ɁA�t�B���^��K�p���Ă��܂��B
671
-
672
-�ЂƂ‚̒��ӓ_�Ƃ��ăR�[���o�b�N�̒�����A�R�[���o�b�N�̊O��
673
-�̕ϐ���Q�Ƃ��Ȃ��悤�ɒ��ӂ��Ă��������Beach_column��
674
-���X1�񂾂���s����邾���Ȃ̂ŁA�قƂ�ǂ̏ꍇ��肠��܂��񂪁A
675
-�z�ŽQ�Ƃɂ�郁�������[�N���������Ă��܂��”\�����Ă��邩��ł��B
638
+C<each_column() receive callback.
639
+callback arguments are L<DBIx::Custom> object, table name, column name, column information.
640
+Filter is applied automatically by column type.
676 641
 
677
-=head2 5. �^�O
642
+=head2 5. Tag
678 643
 
679
-=head3 �^�O�̋@�\
644
+=head3 Basic of Tag
680 645
 
681
-L<DBIx::Custom>��SQL�̒��Ƀ^�O�𖄂ߍ��ދ@�\���Ă��܂��B
646
+You can embedd tag into SQL.
682 647
 
683 648
     select * from book where {= title} and {like author};
684 649
 
685
-{= title}��{like author}�̕������^�O�ł��B�^�O�͎��̂悤�Ȍ`��
686
-����܂��B
650
+{= title} and {like author} are tag. Tag has the folloring format.
687 651
 
688
-    {�^�O�� ��1 ��2 ...}
689
-    
690
-�^�O��C<{>�Ŏn�܂�AC<}>�ŏI���܂��B�ŏ���C<{>�ƃ^�O���̊�
691
-�ɂ͋󔒂�}��Ȃ��悤���ӂ��Ă��������B
652
+    {TAG_NAME ARG1 ARG2 ...}
692 653
 
693
-�^�O�̋@�\�̂��߂�C<{>��C<}>�͗\���ɂȂ�Ă��܂��B
694
-�����p�������ꍇ�͒��O��\����ăG�X�P�[�v��s���K�v������܂��B
654
+Tag start C<{> and end C<}>. 
655
+Don't insert space between C<{} and tag name.
656
+
657
+C<{> and C<}> are reserved word.
658
+If you want to use these, escape it by '\';
695 659
 
696 660
     select from book \\{ ... \\}
697 661
 
662
+\ is perl's escape character, you need two \.
663
+
698 664
 C<\>���̂�Perl�̃G�X�P�[�v�����ł��̂ŁA
699
-�G�X�P�[�v����ꍇ��C<\>����•K�v�ɂȂ�Ƃ����_�ɒ��ӂ��Ă��������B
665
+C<\>�͓�•K�v�ɂȂ�܂��B
700 666
 
701
-��L�̃^�O��SQL����s�����O�Ɏ���SQL�ɓW�J����܂��B
667
+Tag is expanded before executing SQL.
702 668
 
703 669
     select * from book where title = ? and author like ?;
704 670
 
705
-�^�O��܂�SQL���s����ɂ�C<execute()>��g�p���܂��B
671
+use C<execute()> to execute SQL which contains tag
706 672
 
707 673
     my $sql = "select * from book where {= author} and {like title};"
708 674
     $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'});
709 675
 
710
-C<param>�I�v�V������g��āA�v���[�X�z���_�ɖ��ߍ��݂����l��
711
-�n�b�V�����t�@�����X�Ŏw�肷�邱�Ƃ��ł��܂��B
676
+You can specify values embedded into place holder as hash reference using
677
+C<param> option.
712 678
 
713
-���̃��\�b�h�Ɠ��l��C<execute()>�ɂ����Ă�C<filter>��w�肷�邱�Ƃ��ł��܂��B
679
+You can specify C<filter()> at C<execute()>.
714 680
 
715 681
     $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'}
716 682
                   filter => {title => 'to_something');
717 683
 
718
-C<execute>�̂ЂƂ‚̒��ӓ_�Ƃ��Ă�C<apply_filter()>�œK�p���ꂽ�t�B���^
719
-�̓f�t�H���g�ł͗L��ł͂Ȃ��Ƃ������Ƃɒ��ӂ��Ă��������B
720
-C<apply_filter()>�œK�p���ꂽ�t�B���^��L��ɂ���ɂ́A
721
-C<table>��w�肷��K�v������܂��B
684
+Note that at C<execute()> the filter applied by C<apply_filter()>
685
+don't has effective to columns.
686
+You need specify C<table> to have effective.
722 687
 
723 688
     $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'}
724 689
                   table => ['book']);
725 690
 
726
-=head3 �^�O�ꗗ
691
+=head3 Tag list
727 692
 
728 693
 L<DBIx::Custom>�ł͎��̃^�O���g�p�”\�ł��B
729 694
 
730
-���̂悤�Ƀ^�O��g���SQL����\������̂�L<DBIx::Custom>��
731
-����ł��B�ȉ��̃^�O�����p�”\�ł��B
695
+The following tag is available.
732 696
 
733 697
 =head4 C<?>
734 698
 
735
-C<?>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
736
-
737 699
     {? NAME}    ->   ?
738 700
 
739 701
 =head4 C<=>
740 702
 
741
-C<=>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
742
-
743 703
     {= NAME}    ->   NAME = ?
744 704
 
745 705
 =head4 C<E<lt>E<gt>>
746 706
 
747
-C<E<lt>E<gt>>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
748
-
749 707
     {<> NAME}   ->   NAME <> ?
750 708
 
751 709
 =head4 C<E<lt>>
752 710
 
753
-C<E<lt>>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
754
-
755 711
     {< NAME}    ->   NAME < ?
756 712
 
757 713
 =head4 C<E<gt>>
758 714
 
759
-C<E<gt>>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
760
-
761 715
     {> NAME}    ->   NAME > ?
762 716
 
763 717
 =head4 C<E<gt>=>
764 718
 
765
-C<E<gt>=>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
766
-
767 719
     {>= NAME}   ->   NAME >= ?
768 720
 
769 721
 =head4 C<E<lt>=>
770 722
 
771
-C<E<lt>=>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
772
-
773 723
     {<= NAME}   ->   NAME <= ?
774 724
 
775 725
 =head4 C<like>
776 726
 
777
-C<like>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
778
-
779 727
     {like NAME}   ->   NAME like ?
780 728
 
781 729
 =head4 C<in>
782 730
 
783
-C<in>�^�O�͈ȉ��̂悤�ɓW�J����܂��B�v���[�X�z���_��
784
-�����Ŏw�肷��K�v�����邱�Ƃɒ��ӂ��Ă��������B
785
-
786 731
     {in NAME COUNT}   ->   NAME in [?, ?, ..]
787 732
 
788 733
 =head4 C<insert_param>
789 734
 
790
-C<insert_param>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
791
-
792 735
     {insert_param NAME1 NAME2}   ->   (NAME1, NAME2) values (?, ?)
793 736
 
794 737
 =head4 C<update_param>
795 738
 
796
-C<update_param>�^�O�͈ȉ��̂悤�ɓW�J����܂��B
797
-
798 739
     {update_param NAME1 NAME2}   ->   set NAME1 = ?, NAME2 = ?
799 740
 
800
-=head3 �����̗�̈���
741
+=head3 Manipulate same name's columns
801 742
 
802
-�����̗��܂ރ^�O������ꍇ�ɂ�ASQL���s���邱�Ƃ��ł��܂��B
803
-���Ƃ��΁A��‚̓�t�Ŕ�r���Ȃ���΂Ȃ�Ȃ��ꍇ��
804
-�l���Č��܂��傤�B
743
+It is ok if there are same name's columns.
744
+Let's think two date comparison.
805 745
 
806 746
     my $sql = "select * from table where {> date} and {< date};";
807 747
 
808
-���̂悤�ȏꍇ�͑Ή�����p�����[�^�̒l��z��̃��t�@�����X�ɂ��܂��B
748
+In this case, You specify paramter values as array reference.
809 749
 
810 750
     my $dbi->execute($sql, param => {date => ['2010-10-01', '2012-02-10']});
811 751
 
812
-=head3 �^�O�̒lj� C<register_tag()>
752
+=head3 Register Tag C<register_tag()>
813 753
 
814
-L<DBIx::Custom>�ł̓^�O��Ǝ��ɒlj���邱�Ƃ��ł��܂��B
815
-�^�O��lj����ɂ�C<register_tag()>��g�p���܂��B
754
+You can register your tag.
755
+use C<register_tag()> to register tag.
816 756
 
817 757
     $dbi->register_tag(
818 758
         '=' => sub {
+42 -105
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -502,12 +502,13 @@ C<fetch_hash_first()>を使用します。
502 502
 
503 503
 =head2 4. フィルタリング
504 504
 
505
-データベースにデータを登録するときやデータベースからデータを取得する
506
-ときに自動的に値の変換を行いたい場合が多いと思います。
507
-たとえば、日付を表現する列の場合は、
508
-データベースに登録する場合はL<Time::Piece>オブジェクトから
509
-データベースの日付のフォーマットに、
510
-データベースからデータを取得するときは、その逆を行えると便利です。
505
+L<DBIx::Custom>は値のフィルタリング機能を提供します。
506
+
507
+たとえば、データをデータベースに登録するときは
508
+L<Time::Piece>オブジェクトからデータベースの日付のフォーマットに、
509
+データベースからデータを取得するときは、
510
+データベースの日付のフォーマットからL<Time::Piece>オブジェクト
511
+に変換を行いたいと思うことでしょう。
511 512
 
512 513
 =head3 フィルタの登録 C<register_filter()>
513 514
 
... ...
@@ -542,11 +543,12 @@ C<fetch_hash_first()>を使用します。
542 543
         first_issue_date => {out => 'tp_to_date', in => 'date_to_tp'}
543 544
     );
544 545
 
545
-第一引数はテーブル名です。第二引数以降は、列名とフィルタルールのペアを記述します。
546
+第一引数はテーブル名です。第1引数より後の引数は、列名とフィルタルールのペアを記述します。
546 547
 フィルタルールのoutには、データベースにデータを送信するときに適用するフィルタを、
547 548
 フィルタルールのinには、データベースからデータを取得するときに適用するフィルタを
548
-記述します。outがデータベースに送信する方向、inがデータベースから取り出す方向です。
549
-フィルタには、C<register_filter>で登録したフィルタ名の他に、コードリファレンスを
549
+記述します。
550
+
551
+フィルタとしてコードリファレンスを
550 552
 指定することもできます。
551 553
 
552 554
     issue_date => {out => sub { ... }, in => sub { ... }}
... ...
@@ -560,39 +562,29 @@ C<delete_all()>、C<select()>で有効になります。
560 562
 データベースにデータが送信されるときに、L<Time::Piece>オブジェクトは
561 563
 データベースの日付のフォーマット「2010-10-14」に変換されます。
562 564
 
563
-また逆にデータをフェッチするときには、データベースの日付のフォーマットは
564
-タイムピースオブジェクトに変換されます。
565
+データをフェッチするときには、データベースの日付のフォーマットは
566
+L<Time::Piece>オブジェクトに変換されます。
565 567
 
566 568
     my $row = $resutl->fetch_hash_first;
567 569
     my $tp = $row->{issue_date};
568 570
 
569
-このような自動的に実行されるフィルタを登録できることがL<DBIx::Custom>の
570
-特徴のひとつです。
571
-
572
-C<apply_filter()>で適用されたフィルタはテーブル名をを含む列名に対しても有効です。
571
+テーブル名を含む列名を使用することもできます。
573 572
 
574 573
     $dbi->select(
575 574
         table => 'book',
576 575
         where => {'book.title' => 'Perl', 'book.author' => 'Ken'}
577 576
     );
578 577
 
579
-テーブルを区別する必要があるときに便利な機能です。
580
-
581
-=head3 個別のフィルタの適用 C<filter>
578
+=head3 個別のフィルタ C<filter>
582 579
 
583
-C<apply_filter()>を使って最初にすべてのテーブルの列について
584
-フィルタを定義することもできますが、
585 580
 個別にフィルタを適用することもできます。
586 581
 個別のフィルタはC<apply_filter()>で適用したフィルタを上書きます。
587
-個別のフィルタはSQLのasを使って、列の別名を作成する必要がある場合に活躍します。
588 582
 
589
-データベースに送信する場合に、個別のフィルタを適用するには、各メソッドの
590
-C<filter>オプションを使用します。個別のフィルタは、C<insert()>、C<update()>、
583
+データを送信する場合に個別のフィルタを適用するには、C<filter>オプションを使用します。
584
+このオプションはC<insert()>、C<update()>、
591 585
 C<update_all()>、C<delete()>、C<delete_all()>、C<select()>、C<execute()>
592 586
 で使用することができます。
593 587
 
594
-C<insert()>の例を示します。
595
-
596 588
     $dbi->insert(
597 589
         table => 'book',
598 590
         param => {issue_date => $tp, first_issue_date => $tp},
... ...
@@ -613,30 +605,16 @@ EOS
613 605
         filter => {issue_year => 'tp_to_year'}
614 606
     );
615 607
 
616
-これはC<filter>を使う良くある例です。issue_dateの変換についてはC<apply_filter()>
617
-で登録してあるのですが、新しく作成した列であるissue_yearについては、
618
-何の変換も登録されていません。ですので、個別にフィルタを設定しています。
619
-
620
-また反対に行をフェッチするときにも個別のフィルタを適用することができます。
621
-フィルタを適用するには、
622
-C<DBIx::Custom::Result>クラスのC<filter>メソッドを使用します。
608
+行をフェッチするときにも個別のフィルタを適用することができます。
609
+C<DBIx::Custom::Result>のC<filter()>を使用します。
623 610
 
624 611
     $result->filter(issue_year => 'year_to_tp');
625 612
 
626
-頻繁に利用するのであれば、個別に登録するよりもC<apply_filter()>で登録
627
-しておいたほうが便利でしょう。C<apply_filter()>は存在しない列に対しても
628
-フィルタを適用できるからです。
629
-
630
-    $dbi->apply_filter('book',
631
-        'issue_year' => {out => 'tp_to_year', in => 'year_to_tp'}
632
-    );
613
+=head3 最後のフィルタリング : C<end_filter()>
633 614
 
634
-=head3 最終出力のためのフィルタリング C<end_filter()>
635
-
636
-C<DBIx::Custom::Result>ではさらに最後にもう一度、フィルタを追加で
637
-登録することができます。たとえばHTMLに出力したい場合に、Time::Piece
638
-オブジェクトから読みやすい記述に変換することができます。
639
-最後のフィルタを登録するには、C<end_filter()>を使用します。
615
+最後にもうひとつフィルタを追加することができます。
616
+最終的な出力を作成する場合に便利です。
617
+最後のフィルタを登録するにはC<end_filter()>を使用します。
640 618
 
641 619
     $result->end_filter(issue_date => sub {
642 620
         my $tp = shift;
... ...
@@ -645,20 +623,12 @@ C<DBIx::Custom::Result>ではさらに最後にもう一度、フィルタを追
645 623
         return $tp->strftime('%Y/%m/%d %h:%m:%s (%a)');
646 624
     });
647 625
 
648
-日付を見やすい形にフォーマットすることができます。
626
+この例ではL<Time::Piece>オブジェクトを読みやすい書式に変換しています。
649 627
 
650
-フィルタはフェッチを行う前に登録しておく必要があることに
651
-注意してください。
628
+=head3 フィルタの適用の自動化 C<each_column()>
652 629
 
653
-    $result->filter(...);
654
-    $result->end_filter(...);
655
-    my $row = $result->fetch_hash_first;
656
-
657
-=head3 列の情報を元にフィルタを適用する C<each_column()>
658
-
659
-日付型の列は手動で設定しなくても、自動的に設定できると便利です。
660
-このためにデータベースのテーブルの列のすべての情報を
661
-順番に処理するためのC<each_column()>があります。
630
+日付型の列は自動的にフィルタを適用できると便利です。
631
+列のすべての情報を処理するためのC<each_column()>を利用することができます。
662 632
 
663 633
     $dbi->each_column(
664 634
         sub {
... ...
@@ -676,19 +646,14 @@ C<DBIx::Custom::Result>ではさらに最後にもう一度、フィルタを追
676 646
     );
677 647
 
678 648
 each_columnはコールバックを受け取ります。コールバックの引数は
679
-順番にL<DBIx::Custom>オブジェクト、テーブル名、列名、列の情報です。
649
+L<DBIx::Custom>オブジェクト、テーブル名、列名、列の情報です。
680 650
 列の型名の情報をもとに自動的に、フィルタを適用しています。
681 651
 
682
-ひとつの注意点としてコールバックの中から、コールバックの外側
683
-の変数を参照しないように注意してください。each_columnは
684
-高々1回だけ実行されるだけなので、ほとんどの場合問題ありませんが、
685
-循環参照によるメモリリークが発生してしまう可能性を持っているからです。
686
-
687 652
 =head2 5. タグ
688 653
 
689
-=head3 タグの機能
654
+=head3 タグの基本
690 655
 
691
-L<DBIx::Custom>はSQLの中にタグを埋め込む機能を持っています。
656
+SQLの中にタグを埋め込むことができます。
692 657
 
693 658
     select * from book where {= title} and {like author};
694 659
 
... ...
@@ -700,15 +665,15 @@ L<DBIx::Custom>はSQLの中にタグを埋め込む機能を持っています
700 665
 タグはC<{>で始まり、C<}>で終わります。最初のC<{>とタグ名の間
701 666
 には空白を挿入しないよう注意してください。
702 667
 
703
-タグの機能のためにC<{>とC<}>は予約語になっています。
704
-もし利用したい場合は直前に\をおいてエスケープを行う必要があります。
668
+C<{>とC<}>は予約語になっています。
669
+もし利用したい場合は\でエスケープを行う必要があります。
705 670
 
706 671
     select from book \\{ ... \\}
707 672
 
708 673
 C<\>自体がPerlのエスケープ文字ですので、
709
-エスケープする場合はC<\>が二つ必要になるという点に注意してください。
674
+C<\>は二つ必要になります。
710 675
 
711
-上記のタグはSQLが実行される前に次のSQLに展開されます。
676
+タグはSQLが実行される前に展開されます。
712 677
 
713 678
     select * from book where title = ? and author like ?;
714 679
 
... ...
@@ -720,13 +685,13 @@ C<\>自体がPerlのエスケープ文字ですので、
720 685
 C<param>オプションを使って、プレースホルダに埋め込みたい値を
721 686
 ハッシュリファレンスで指定することができます。
722 687
 
723
-他のメソッドと同様にC<execute()>においてもC<filter>を指定することができます。
688
+C<execute()>においてもC<filter>を指定することができます。
724 689
 
725 690
     $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'}
726 691
                   filter => {title => 'to_something');
727 692
 
728
-C<execute>のひとつの注意点としてはC<apply_filter()>で適用されたフィルタ
729
-はデフォルトでは有効ではないということに注意してください。
693
+C<execute>ではC<apply_filter()>で適用されたフィルタ
694
+は有効ではないということに注意してください。
730 695
 C<apply_filter()>で適用されたフィルタを有効にするには、
731 696
 C<table>を指定する必要があります。
732 697
 
... ...
@@ -735,93 +700,65 @@ C<table>を指定する必要があります。
735 700
 
736 701
 =head3 タグ一覧
737 702
 
738
-L<DBIx::Custom>では次のタグが使用可能です。
739
-
740
-このようにタグを使ってSQL文を表現するのがL<DBIx::Custom>の
741
-特徴です。以下のタグが利用可能です。
742
-
743 703
 =head4 C<?>
744 704
 
745
-C<?>タグは以下のように展開されます。
746
-
747 705
     {? NAME}    ->   ?
748 706
 
749 707
 =head4 C<=>
750 708
 
751
-C<=>タグは以下のように展開されます。
752
-
753 709
     {= NAME}    ->   NAME = ?
754 710
 
755 711
 =head4 C<E<lt>E<gt>>
756 712
 
757
-C<E<lt>E<gt>>タグは以下のように展開されます。
758
-
759 713
     {<> NAME}   ->   NAME <> ?
760 714
 
761 715
 =head4 C<E<lt>>
762 716
 
763
-C<E<lt>>タグは以下のように展開されます。
764
-
765 717
     {< NAME}    ->   NAME < ?
766 718
 
767 719
 =head4 C<E<gt>>
768 720
 
769
-C<E<gt>>タグは以下のように展開されます。
770
-
771 721
     {> NAME}    ->   NAME > ?
772 722
 
773 723
 =head4 C<E<gt>=>
774 724
 
775
-C<E<gt>=>タグは以下のように展開されます。
776
-
777 725
     {>= NAME}   ->   NAME >= ?
778 726
 
779 727
 =head4 C<E<lt>=>
780 728
 
781
-C<E<lt>=>タグは以下のように展開されます。
782
-
783 729
     {<= NAME}   ->   NAME <= ?
784 730
 
785 731
 =head4 C<like>
786 732
 
787
-C<like>タグは以下のように展開されます。
788
-
789 733
     {like NAME}   ->   NAME like ?
790 734
 
791 735
 =head4 C<in>
792 736
 
793
-C<in>タグは以下のように展開されます。プレースホルダの
794
-数を引数で指定する必要があることに注意してください。
795
-
796 737
     {in NAME COUNT}   ->   NAME in [?, ?, ..]
797 738
 
798 739
 =head4 C<insert_param>
799 740
 
800
-C<insert_param>タグは以下のように展開されます。
801
-
802 741
     {insert_param NAME1 NAME2}   ->   (NAME1, NAME2) values (?, ?)
803 742
 
804 743
 =head4 C<update_param>
805 744
 
806
-C<update_param>タグは以下のように展開されます。
807
-
808 745
     {update_param NAME1 NAME2}   ->   set NAME1 = ?, NAME2 = ?
809 746
 
810 747
 =head3 同名の列の扱い
811 748
 
812
-同名の列を含むタグがある場合にも、SQLを実行することができます。
813
-たとえば、二つの日付で比較しなければならない場合を
749
+同名の列を含むタグがある場合でも大丈夫です。
750
+二つの日付で比較しなければならない場合を
814 751
 考えて見ましょう。
815 752
 
816 753
     my $sql = "select * from table where {> date} and {< date};";
817 754
 
818
-このような場合は対応するパラメータの値を配列のリファレンスにします。
755
+このような場合はパラメータの値を配列のリファレンスで指定します。
819 756
 
820 757
     my $dbi->execute($sql, param => {date => ['2010-10-01', '2012-02-10']});
821 758
 
822
-=head3 タグの追加 C<register_tag()>
759
+=head3 タグの登録 C<register_tag()>
823 760
 
824
-L<DBIx::Custom>ではタグを独自に追加することができます。
761
+独自のタグを登録することができます。
825 762
 タグを追加するにはC<register_tag()>を使用します。
826 763
 
827 764
     $dbi->register_tag(