From: <plu...@us...> - 2009-03-17 09:48:28
|
Revision: 1471 http://sqlfairy.svn.sourceforge.net/sqlfairy/?rev=1471&view=rev Author: plutooth Date: 2009-03-17 09:48:06 +0000 (Tue, 17 Mar 2009) Log Message: ----------- New method to clear out extra attributes Modified Paths: -------------- trunk/sqlfairy/lib/SQL/Translator/Schema/Object.pm trunk/sqlfairy/t/38-mysql-producer.t Modified: trunk/sqlfairy/lib/SQL/Translator/Schema/Object.pm =================================================================== --- trunk/sqlfairy/lib/SQL/Translator/Schema/Object.pm 2009-03-16 23:59:52 UTC (rev 1470) +++ trunk/sqlfairy/lib/SQL/Translator/Schema/Object.pm 2009-03-17 09:48:06 UTC (rev 1471) @@ -151,7 +151,33 @@ return wantarray ? %$extra : $extra; } +# ---------------------------------------------------------------------- +sub remove_extra { +=head2 remove_extra + +L</extra> can only be used to get or set "extra" attributes but not to +remove some. Call with no args to remove all extra attributes that +have been set before. Call with a list of key names to remove +certain extra attributes only. + + # remove all extra attributes + $field->remove_extra(); + + # remove timezone and locale attributes only + $field->remove_extra(qw/timezone locale/); + +=cut + + my ( $self, @keys ) = @_; + unless (@keys) { + $self->{'extra'} = {}; + } + else { + delete $self->{'extra'}{$_} for @keys; + } +} + # ---------------------------------------------------------------------- sub equals { Modified: trunk/sqlfairy/t/38-mysql-producer.t =================================================================== --- trunk/sqlfairy/t/38-mysql-producer.t 2009-03-16 23:59:52 UTC (rev 1470) +++ trunk/sqlfairy/t/38-mysql-producer.t 2009-03-17 09:48:06 UTC (rev 1471) @@ -19,7 +19,7 @@ #============================================================================= BEGIN { - maybe_plan(32, + maybe_plan(35, 'YAML', 'SQL::Translator::Producer::MySQL', 'Test::Differences', @@ -399,4 +399,27 @@ SELECT id, name FROM thing )"; is($view1_sql2, $view_sql_noreplace, 'correct "CREATE VIEW" SQL'); + + { + my %extra = $view1->extra; + is_deeply \%extra, + { + 'mysql_algorithm' => 'MERGE', + 'mysql_definer' => 'CURRENT_USER', + 'mysql_security' => 'DEFINER' + }, + 'Extra attributes'; + } + + $view1->remove_extra(qw/mysql_definer mysql_security/); + { + my %extra = $view1->extra; + is_deeply \%extra, { 'mysql_algorithm' => 'MERGE', }, 'Extra attributes after first reset_extra call'; + } + + $view1->remove_extra(); + { + my %extra = $view1->extra; + is_deeply \%extra, {}, 'Extra attributes completely removed'; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |