From 1a68aa647d310f14866c30900f384bbb66b9987a Mon Sep 17 00:00:00 2001 From: "gavin.todes@gmail.com" Date: Fri, 5 Feb 2010 21:41:10 -0500 Subject: [PATCH 01/13] fixed error with deprecated item in #add_with_validation_group method --- lib/validation_group.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/validation_group.rb b/lib/validation_group.rb index 9598d1f..6358123 100644 --- a/lib/validation_group.rb +++ b/lib/validation_group.rb @@ -103,9 +103,10 @@ def valid_with_validation_group?(group=nil) end module Errors # included in ActiveRecord::Errors + # gaveeno: modified this method to fix error associated with deprecated method per this comment: + # http://alexkira.blogspot.com/2007/09/rails-validation-using-validation.html?showComment=1235667300000#c1858075936669114503 def add_with_validation_group(attribute, - msg = @@default_error_messages[:invalid], *args, - &block) + msg = I18n.translate('activerecord.errors.messages')[:invalid], *args, &block) # jeffp: setting @current_validation_fields and use of should_validate? optimizes code add_error = @base.respond_to?(:should_validate?) ? @base.should_validate?(attribute.to_sym) : true add_without_validation_group(attribute, msg, *args, &block) if add_error From ab91835d41e243e165132603ad7a878bec49f653 Mon Sep 17 00:00:00 2001 From: "gavin.todes@gmail.com" Date: Fri, 5 Feb 2010 22:10:00 -0500 Subject: [PATCH 02/13] updated gem info --- README.rdoc | 12 ++++++++++-- wizardly_gt-0.1.8.9.gem | Bin 0 -> 27136 bytes wizardly.gemspec => wizardly_gt.gemspec | 12 ++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 wizardly_gt-0.1.8.9.gem rename wizardly.gemspec => wizardly_gt.gemspec (90%) diff --git a/README.rdoc b/README.rdoc index a625c0f..ce21f76 100644 --- a/README.rdoc +++ b/README.rdoc @@ -1,6 +1,14 @@ -= wizardly += wizardly_gt -+wizardly+ creates a multi-step wizard for any ActiveRecord model in three steps. ++wizardly+ by Jeff Patmon creates a multi-step wizard for any ActiveRecord model in three steps. + +I fixed an error with a deprecated item in #add_with_validation_group method. See the instructions in the original README below, except add the following line to your environment.rb: + ++config.gem 'wizardly_gt'+ + +Instead of: + ++config.gem 'wizardly'+ == Resources diff --git a/wizardly_gt-0.1.8.9.gem b/wizardly_gt-0.1.8.9.gem new file mode 100644 index 0000000000000000000000000000000000000000..4a2a741abaa07061ff779e67e6d80acfc5c58bbe GIT binary patch literal 27136 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 literal 0 HcmV?d00001 diff --git a/wizardly.gemspec b/wizardly_gt.gemspec similarity index 90% rename from wizardly.gemspec rename to wizardly_gt.gemspec index 60b9962..e223440 100644 --- a/wizardly.gemspec +++ b/wizardly_gt.gemspec @@ -1,16 +1,16 @@ # -*- encoding: utf-8 -*- Gem::Specification.new do |s| - s.name = %q{wizardly} + s.name = %q{wizardly_gt} s.version = "0.1.8.9" s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Jeff Patmon"] - s.date = %q{2009-10-07} - s.description = %q{Create wizards from any model in three steps} - s.email = %q{jpatmon@yahoo.com} + s.authors = ["Jeff Patmon","Gavin Todes"] + s.date = %q{2010-02-05} + s.description = %q{Create wizards from any model in three steps. Slightly tweaked version of jeffp's gem to fix a deprecated method error'} + s.email = %q{gavin.todes@gmail.com} s.files = ["lib/generators", "lib/wizardly.rb", "lib/validation_group.rb", "lib/jeffp-wizardly.rb", "lib/wizardly", "lib/wizardly/wizard.rb", "lib/wizardly/wizard", "lib/wizardly/wizard/page.rb", "lib/wizardly/wizard/configuration.rb", "lib/wizardly/wizard/button.rb", "lib/wizardly/wizard/utils.rb", "lib/wizardly/wizard/dsl.rb", "lib/wizardly/wizard/configuration", "lib/wizardly/wizard/configuration/methods.rb", "lib/wizardly/wizard/text_helpers.rb", "lib/wizardly/action_controller.rb", "rails_generators/wizardly_app", "rails_generators/wizardly_app/USAGE", "rails_generators/wizardly_app/wizardly_app_generator.rb", "rails_generators/wizardly_app/templates", "rails_generators/wizardly_app/templates/wizardly.rake", "rails_generators/wizardly_scaffold", "rails_generators/wizardly_scaffold/wizardly_scaffold_generator.rb", "rails_generators/wizardly_scaffold/USAGE", "rails_generators/wizardly_scaffold/templates", "rails_generators/wizardly_scaffold/templates/style.css", "rails_generators/wizardly_scaffold/templates/form.html.haml.erb", "rails_generators/wizardly_scaffold/templates/form.html.erb", "rails_generators/wizardly_scaffold/templates/layout.html.haml.erb", "rails_generators/wizardly_scaffold/templates/layout.html.erb", "rails_generators/wizardly_scaffold/templates/images", "rails_generators/wizardly_scaffold/templates/images/next.png", "rails_generators/wizardly_scaffold/templates/images/finish.png", "rails_generators/wizardly_scaffold/templates/images/back.png", "rails_generators/wizardly_scaffold/templates/images/cancel.png", "rails_generators/wizardly_scaffold/templates/images/skip.png", "rails_generators/wizardly_scaffold/templates/helper.rb.erb", "rails_generators/wizardly_controller", "rails_generators/wizardly_controller/USAGE", "rails_generators/wizardly_controller/wizardly_controller_generator.rb", "rails_generators/wizardly_controller/templates", "rails_generators/wizardly_controller/templates/controller.rb.erb", "rails_generators/wizardly_controller/templates/helper.rb.erb", "CHANGELOG.rdoc", "init.rb", "LICENSE", "README.rdoc"] - s.homepage = %q{http://github.com/jeffp/wizardly/tree/master} + s.homepage = %q{http://github.com/gaveeno/wizardly/tree/master} s.require_paths = ["lib"] s.rubygems_version = %q{1.3.5} s.summary = %q{Produces controllers and wizard scaffolding for models with validation_groups} From c116dfbe5ff3fa761aa0207a8d8e132ffbba2962 Mon Sep 17 00:00:00 2001 From: "gavin.todes@gmail.com" Date: Fri, 5 Feb 2010 22:12:28 -0500 Subject: [PATCH 03/13] updated README and gem info --- README.rdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rdoc b/README.rdoc index ce21f76..658d5ef 100644 --- a/README.rdoc +++ b/README.rdoc @@ -8,7 +8,7 @@ I fixed an error with a deprecated item in #add_with_validation_group method. S Instead of: -+config.gem 'wizardly'+ ++config.gem 'wizardly_gt', :lib => "wizardly"+ == Resources From 636e01ba9647a743f1d4300ab7a8653e7e1389db Mon Sep 17 00:00:00 2001 From: "gavin.todes@gmail.com" Date: Fri, 5 Feb 2010 22:13:45 -0500 Subject: [PATCH 04/13] updated README and gem info --- README.rdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rdoc b/README.rdoc index 658d5ef..fd2a20d 100644 --- a/README.rdoc +++ b/README.rdoc @@ -4,11 +4,11 @@ I fixed an error with a deprecated item in #add_with_validation_group method. See the instructions in the original README below, except add the following line to your environment.rb: -+config.gem 'wizardly_gt'+ + config.gem 'wizardly_gt' Instead of: -+config.gem 'wizardly_gt', :lib => "wizardly"+ + config.gem 'wizardly_gt', :lib => "wizardly" == Resources From c296009169bf0a2970921c5d9785e6decbee725b Mon Sep 17 00:00:00 2001 From: "gavin.todes@gmail.com" Date: Fri, 5 Feb 2010 22:14:35 -0500 Subject: [PATCH 05/13] updated README and gem info --- README.rdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rdoc b/README.rdoc index fd2a20d..5250f4a 100644 --- a/README.rdoc +++ b/README.rdoc @@ -4,11 +4,11 @@ I fixed an error with a deprecated item in #add_with_validation_group method. See the instructions in the original README below, except add the following line to your environment.rb: - config.gem 'wizardly_gt' + config.gem 'wizardly_gt', :lib => 'wizardly' Instead of: - config.gem 'wizardly_gt', :lib => "wizardly" + config.gem 'wizardly' == Resources From 0c2a84f982abbe1f06f15f25b943d1d8c4b5d892 Mon Sep 17 00:00:00 2001 From: "gavin.todes@gmail.com" Date: Mon, 8 Feb 2010 21:40:19 -0500 Subject: [PATCH 06/13] modified Errors#add_with_validation_group method to allow errors to be added to base object --- lib/validation_group.rb | 8 +++++--- wizardly_gt-0.1.8.9.gem | Bin 27136 -> 27136 bytes 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/validation_group.rb b/lib/validation_group.rb index 6358123..57e3352 100644 --- a/lib/validation_group.rb +++ b/lib/validation_group.rb @@ -105,10 +105,12 @@ def valid_with_validation_group?(group=nil) module Errors # included in ActiveRecord::Errors # gaveeno: modified this method to fix error associated with deprecated method per this comment: # http://alexkira.blogspot.com/2007/09/rails-validation-using-validation.html?showComment=1235667300000#c1858075936669114503 - def add_with_validation_group(attribute, - msg = I18n.translate('activerecord.errors.messages')[:invalid], *args, &block) + # def add_with_validation_group(attribute, msg = @@default_error_messages[:invalid], *args, &block) + def add_with_validation_group(attribute, msg = I18n.translate('activerecord.errors.messages')[:invalid], *args, &block) # jeffp: setting @current_validation_fields and use of should_validate? optimizes code - add_error = @base.respond_to?(:should_validate?) ? @base.should_validate?(attribute.to_sym) : true + # gaveeno: modified this method to add error if the error is on the base object and not on an attribute. + # this is necessary to work with the advanced_exceptions plugin. + add_error = @base.respond_to?(:should_validate?) ? (@base.should_validate?(attribute.to_sym) || attribute == :base) : true add_without_validation_group(attribute, msg, *args, &block) if add_error end diff --git a/wizardly_gt-0.1.8.9.gem b/wizardly_gt-0.1.8.9.gem index 4a2a741abaa07061ff779e67e6d80acfc5c58bbe..d4a5fdfd682f94acf4095c64300ed70d40cb08ae 100644 GIT binary patch delta 8063 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 N-U_o}WuF9*AOwDM5#|5@ delta 7979 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 hZY2udy|mr${0jg8|NjF3r|xIB& Date: Thu, 18 Nov 2010 02:27:26 -0500 Subject: [PATCH 07/13] Added support for on_put callbacks. Updated documentation. --- CHANGELOG.rdoc | 3 ++ README.rdoc | 39 ++++++++++++++++--- Rakefile | 8 ++-- lib/wizardly/wizard/configuration/methods.rb | 4 ++ ps-wizardly-0.1.9.gem | Bin 0 -> 27648 bytes wizardly_gt.gemspec => ps-wizardly.gemspec | 13 +++---- wizardly_gt-0.1.8.9.gem | Bin 27136 -> 0 bytes 7 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 ps-wizardly-0.1.9.gem rename wizardly_gt.gemspec => ps-wizardly.gemspec (92%) delete mode 100644 wizardly_gt-0.1.8.9.gem diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index fe462b9..243f441 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -31,3 +31,6 @@ * README.rdoc initial version * gem version 0.1.0 +* 0.1.9/2010-11-18 + +* added on_put callbacks diff --git a/README.rdoc b/README.rdoc index 5250f4a..0e276f1 100644 --- a/README.rdoc +++ b/README.rdoc @@ -308,8 +308,9 @@ Here's the list of action callbacks macros that the developer can use for any ac on_finish(:step) # called when the :finish button is pressed for a valid form (post only) on_post(:step) # called at the beginning of a POST request + on_put(:step) # called at the beginning of a PUT request on_get(:step) # called before rendering a GET request - on_errors(:step) # called before re-rendering the form after form invalidation (on a POST request) + on_errors(:step) # called before re-rendering the form after form invalidation (on a POST/PUT request) The first five callbacks are related to the wizard buttons. Each callback gives the developer a chance to intervene before the impending render or @@ -357,7 +358,7 @@ presented to the user with a selection of fields and wizard buttons for posting the form. When the form data is returned by a POST request, the action creates the instance -variables and builds the model instance using the form data. The on_post callback +variables and builds the model instance using the form data. The on_post or on_put callback is called at the beginning of the post, then the wizard checks for back, skip and cancel buttons. If neither of those buttons were pressed, it proceeds to validate the form, calling the on_errors callback if form validation fails, re-rendering and @@ -369,13 +370,39 @@ the model has been committed to the database) #POST request callback order - on_post + on_post (on_put) on_back, on_skip, on_cancel on_errors render_wizard_form # only if errors on_next on_finish on_completed # only if completed + +==== The different between on_post and on_put + +If your form_for tag looks like: + <% form_for :person, :url=>{:action=>:stuff} do |f| %> +then you will always see an on_post callback. + +However, if your form_for tag looks like: + <% form_for @person, :url=>{:action=>:stuff} do |f| %> +then you will see an on_put callback. This is because +(a) Rails treats editing an existing object as a PUT request, and, +(b) Wizardly creates objects right away, so you're almost always editing an existing object + +The reason you would use @person instead of :person is so you can use +accepts_nested_attributes_for with related objects. See: + http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for + +==== Nested attributes example with wizardly + + <% form_for @person, :url=>{:action=>:stuff} do |f| %> + <%- f.fields_for :majors do |m| -%> + <%= m.text_field :name %> + <%- end -%> + <% end %> + + ==== Rendering with on_get and on_errors @@ -397,14 +424,14 @@ callbacks are a good place to declare extra variables needed to render the form. If you have a variable that goes in every page, render_wizard_form is called for every page. -==== Modifying form data with on_post +==== Modifying form data with on_post (on_put) -The on_post callback is the first callback in the chain of a POST request and +The on_post or on_put callback is the first callback in the chain of a POST request and is a good place to modify form input such as adding capitalization to a form. Modification should happen through the model instance variable and not the controller's params variable. -Redirecting and rendering are not allowed in the on_post callback. Doing so will +Redirecting and rendering are not allowed in the on_post and on_put callbacks. Doing so will raise an error. ==== Modifying Flow with on_next diff --git a/Rakefile b/Rakefile index 03cd3d8..3210e0c 100644 --- a/Rakefile +++ b/Rakefile @@ -14,7 +14,7 @@ require 'fileutils' spec = Gem::Specification.new do |s| s.name = 'wizardly' - s.version = '0.1.8.9' + s.version = '0.1.9' s.platform = Gem::Platform::RUBY s.description = 'Create wizards from any model in three steps' s.summary = 'Produces controllers and wizard scaffolding for models with validation_groups' @@ -29,9 +29,9 @@ spec = Gem::Specification.new do |s| s.has_rdoc = true #s.test_files = Dir['spec/*_spec.rb'] - s.author = 'Jeff Patmon' - s.email = 'jpatmon@yahoo.com' - s.homepage = 'http://github.com/jeffp/wizardly/tree/master' + s.author = 'Paul Schreiber' + s.email = 'paulschreiber@gmail.com' + s.homepage = 'http://github.com/paulschreiber/wizardly/' end require 'spec/version' diff --git a/lib/wizardly/wizard/configuration/methods.rb b/lib/wizardly/wizard/configuration/methods.rb index 21b48c4..331b4f3 100644 --- a/lib/wizardly/wizard/configuration/methods.rb +++ b/lib/wizardly/wizard/configuration/methods.rb @@ -5,6 +5,7 @@ class Configuration def print_callback_macros macros = [ %w(on_post _on_post_%s_form), + %w(on_put _on_put_%s_form), %w(on_get _on_get_%s_form), %w(on_errors _on_invalid_%s_form) ] @@ -97,6 +98,9 @@ def #{page.name} if request.post? && callback_performs_action?(:_on_post_#{id}_form) raise CallbackError, "render or redirect not allowed in :on_post(:#{id}) callback", caller end + if request.put? && callback_performs_action?(:_on_put_#{id}_form) + raise CallbackError, "render or redirect not allowed in :on_put(:#{id}) callback", caller + end button_id = check_action_for_button return if performed? if request.get? diff --git a/ps-wizardly-0.1.9.gem b/ps-wizardly-0.1.9.gem new file mode 100644 index 0000000000000000000000000000000000000000..602b11862b3e0ebe7b4595eedc00a5b5ce7a329d GIT binary patch literal 27648 zcmd3NRcsy6vZWbgiZSNcF*7qW#LO`>Gt)7|%*@Qp6vMG&W@ct)K87>7Z#2@=`Vy9Kd)-|Aq5n6$hozaB?SBvakMsXq{J)_6H*o*s@&8{hNum%Slok)< zA)qh15z~MCQYVd${eoW34cz11xugY|QRbwyJl^TMYkK_WzLDgu8!2q z_$DK6u8F(J!5GY2-hNl*OPyCl7P%K*SRR1<63mPgNtPeJ1BZ$l6tvg=VbNhDZmOXU z^#6#jP}0|w+&J8DnHE?Vc;3)xXYIl0>5U_(nUw9iOPAWq2spm!3w~hYKLt=xp`AOt z``_&>EF72&43ITKDJ61b=nKzhkmoSG2an&nkx+vPSY-QPEbL zpY$#j{KN$x*T7U6!Rzl>*1{u;2t*Prp3w*)(mtl<{b+$0BE`p8EaBQ)VM&0gF=xcW z52^*?Lm-@XC z=cGdSzk&}Q5`tA}J^?2q3kd?B050Ou`0M2#jtZVfAp4dE&T;$B48#|zdFsJ(}_5cBk=Za=mcp| zC10|O&qW28X#XsE^$FSxBeI0-0PKhrh2HNqB~ELV2;ca0x0eQvF;C;GH$$NF&xsrk zM7MVw3P6%nMM^4_;^(u5$3-Ru3*ybPHRlu~ST-42f*5?DZX$y9g|5Q)ly1^)&pDjV zaiR-DFVaB5v zt!QH(f0)+HA#xhl4%BeGIE~Ykch=6hntb<8V5ERqs%Z}PCZa<}YZFfCu{^YOGb z?2N@56*$VEVhXe0Xy#MrvQ>Lg15&IW#1j?|zs(~4Dq)RR>CNUSe$_(MnGHp$EeT#a zv+-X^n7AJx#b)o6&psrRP((6?P@9B({~m8+%L+(?Dn{L)8Lehr9krxF$d4heC(hS& zSfH1Srx8&ki*0_K;4J~Csu6vkv&~JV`XFqV{&{G=0I%KZBRNWxOv{Xdk~MuAs_H1i zNqN;l_1yh^|KY?D{~@k^6awukRM6m8Y1;A^TuNWw85TL6Qncmt){AL{wk0$%DsF9& zVFN2z=(3TS2dhRX$ai%mHC}C1X4e$h2#-Ns;~l16vMh~YBeWKD9&*sfW&GcqLKqvw z(uh6O+1~<0-y)g)vIz%@3>~iur+1%_?z3`^~P|_Lov#~ zsf;W07z@FivJ=!jtvV8wwpzGvQ0yhaw^xAXf@pWs`||sqkm}DkLK_>%N!x2 z&;|kRbJyBBZ#}*!O1lIt58t&09|d2kv>*SNR3N9wzQQzpbOp;_O7^yU&qnMCqm=%3 zyd-#NfqL*ZhTwr=APq((r7N(KAl!#hgO`S%(So=RoRgJShNzsGbQ84@EmyN6zo;?O zNz8VFdo09CK*N^*5uT0hzzg|z{HZC%TKo%b4MvCLYj(G@)L0;Ed6VQ?W2K zk_^hcaZA6uEwN_>LLS%chu!|L>#S^kPfKH+-~d&GO50Bue0-)T_eLb!+XI>Mo#$Ty zM{fDUlo3EA=OTRf@~4(Y&p#w}=DK~I7Z(0^TM8w(Z#l)V<@7kdnKkL=at+dp9tF*I z*EpImk0~$P=x_m7n7ZGUQ#UP3Bb!zcs*l!>mZlm5xmp8=kEJ#A0JBl>KB-#_nz>;U@i}vraQ7J3>tz1C+0~-o<1cs7R7I1} zSc~44GCtOVD|gG{jvF~^O=T_qSb61Ke#|%x0gH9D1zJc?wZ*}9inDSFY&c7DC`L8K zP5d4~Cu@Z)y=zIa;*S8~S|ny8;a;T0xil!!kU2I`)sRs4Hr{4U935x-nmPLcE%&CW z-(fP06&)%~rWMI{<~As7+#zIm<83Q^sx|1IR>|}SgU!Bb1syMR5^^&5$Pwz4=t~RU z0^ftE+8*{Cgk~@&b15&K?xz1nOg-JqbN<;5isEdf?@q*lFhnXe!i6}2*=Bup`oW@j zT~b<;_OX4E*%#in&_fj_FE7!oOic9-%2qo?S)U zdU^t1k0q@hF!8UUUkZ5KTWQ}4-No@uLA1tzM{B`iN%KDEV0->mQj$*--NC+i-_e+R zqr7r&kvU01%qW2wg&mX+jm{+92QuD6CW-E*6ED@n9FYBMvhTV`%)DV=-OJ-65mq-I zrKR3gAsm3$Zr=>P1t$n@r)?|PDbHy5ZbtT7S1vLyq$|!KUubTzs2v@! zHe&PJii-kUdCB*Oo8zLNvp&=IxrCoWvC76CDhRgy;Igt6m!{1yBR_}SO0#OW*VDBZa+eU<{C%-{qpqPWmx7&jKNJ45y9Guxd z)KOs!84{OA0xUzR-zrA9ytH~NQ(Ctv+5!n(SL)kPtc0q$rN5>QO1nLj*0xK;3bf>$ zQTE)hbVK_!FU`)98E0zbtG@#Na)~hcCPhv`J))T3Gm!m(AThiAbO6XlFL>$t` zs3^G@P+gIl3-+r1F?|gW8LupY)mYHe9AZJqUnY@8=)P2&tJ9P{MK*fC@GTara;ZoI zi1Oj!9t=4ifNTtj%)3@+T5oH;VAsd>E+x_1UR*8vWkZm?#M#C;9R-$fRp2ZUOHS=4 zcR2NP!AK#kQ$=YAv3d(~`+E4^&`xEgxcy`Pyu7Pi(bv5E#DjfX^Oj;<+U0th@@5C%K-YZYP)=iKE*1F?Q5WtX5D_3Jc zGj(+`Kzp+`uWP#&nI2cmbS}JpEeSf9rKeZwm-puz;O;?a_@NUza>wz*!TN5dZ{ans zBI1-B{`mpedHZDn4C<~=IUs^c+$NB*8PQA~5<|+5VL50L3)=4rY2xEpm{n+9lp?B# ztf%;)v99-}%&HfcbMKbIzN=Z~x_MIf9MsM6jB>4DB~!CK&b9JQD)&$2Ej1$EZ{#tE z{O|Arse_*}#(N(4q|o9}v|lT6dJX+z%Sg&$#`RwxRAi#fhld&oIqDZ6%(}{o>doPY zK~=trv|=Twb-&z%5L>IfA=J$FJ*cS<9h9WN646<6iUiYkM8_hu-K&(eGJukkW@Sb! z*%W_x^Y0Z>PJ+G8$GHh16-xE&--t;}}S0%b;tVg|9QkIhJzin%`h-}AkT0RSpTgtFgX7yFaCl_b=$Hhk|1DZgC04&lfAcxuu5r%H;_JKIi3JMFqUVfL4Lh!DMv zdb6!n$pEAitx@2w^pxs=IMlPA?6w8!p2B_q)H{@9WigF{s#7jqiAKz(Z}LO>yf3qt z^2D&{cJW2V6!EtWh4{+x=C(T{YwqJ}<+hPpfu&d6a_fPnp_~wegDeznRr$DkrRRSJ%ib5wj4W7cw75guCq!+4465l2e>=G-`UZMOJ3R>Z8HEc`;7bsrRMloR$$su2d}(Z_hq(s*Whf0eVAXdk}a zCN6&yW+|riCsM;ajj=9$$NL^$OF#{(c0bXx=ZQZ`vX)U^k;TvNI&6}6v-572W@rC*j#L(#&lj@|kAaoy!~Ue78Q<6|<|5&@y>BQ|tMf`<3XE|Bf2P$uO!Q{EfM*lo%28M&t z1_`;A+fQYi(?Ym`no2wjc=3Fwz?7rC_A$7k4P_PQc($F12E1?-78hO9+k`efG`tR3 zj2mwA<~kQt3)Ppce!?zj87GJzJj3oA^ZNWWV#1?m(Gmomp7wn>;v${v>-@_2{2Uf_3Gv4)rQL4?-trW6`MR^B?L-oJfFlt6WD}RH;wOuD$t5q|nZ1Rr^TfZDyh5jxq zA`s01Qv$Gcy#1?il@h}z)%ZLk)3An8x+Y%(3Bx3^Jmf28gsn`T!S)(TtMtATW_s0!AA0t z=wN0{eFht*!a~eDE89d=>xAu&_16K`i@Ces1+zAB>>&yaEVj?15cl0jysl9org7#0 zYWNR*;E^khl~dJt0pXmG>tC!k*2&e@6xEiKnN%Ydp5x6Z4SGxWsZB__R5342X5OkO zsvJu-Gb^FO`IKoXiJvHi$sqFAQ5e=Wg|@tE>^%E;WKO@AcfX8Nmu$)2Z#J=3U&cwH zCYYy=nfQ=S17hgMqvBcE+qQexMoZQ4`gR~J$cwn_w7;80Hlgt*)+XEi{;hyrthD4h zild<)TFFgAXDVlAGizL)8Pu$$O3QnGXn&Hv04^?W-EWqTt~lBq{y9gDDsQhI-xRM@ zHbcL|v>@F;yA2gZV+2)(QAJZ#5T>pj-oQdBC{DFFlgUNwK+kAEx7l?V4DyzHDL=uI zM1s%67GqkVn;8%M8?IHm$3-_25lKj`OJ}Q29QjwFK?x^hZV6rK$FKQ%>Z^1pa|x&> zV+aiBKaPnWUovee{#+uqk&=fNw!pzKN`-KLZ)8fz`XV12bQSDOc2mnCJxW=A&r*KB zhE8o9Q{Q1_H!)3kJ=3Uv#9XYk`(E9b(*!?G9k2kWcT+=;o9;8>n7hOL=?aT9 zcA{pY?AXzyHr~|6igJV`)Tsfep0>NsAkIB{x}J*ZGpcN7DhFca>V3JdLagEiOpZD4 zb8Fyn*fIG6D0~zt(5$u^FKOscr=vsQaicaAmQR}7-OQ$24fmxR`8JtL1oOB~s7NtJ zSZc*fcvt>wdv%3~q7>U1HCl46aV_3F-K>+xi)8e-<6bkvd0;o-Nf;hJgD*As7Yhkn zt;osA2~F15!H`$CX@R4p37o#1)Hz8_+ART-h6oczk;`yY>f_#CnieQeXVowKYf*QM zf?n@=qC(d@ko9&i-~lyCF!Vzhur&v%ywrDJ2u9u8JVqw`^Ry_@J=eU%H%c-so zn5z#ZG8q<&p8kd~XOiqSjcP+8@5edT|9s(lJ*WYo|MXyo?{x=lKd701Tpxnl<)){g z&!*}1Z&WfBkFrY$ehBWU6)ldGx7h6J!Za35B1N{Xjt+&MH*StDh0H(I7uwJFbF#V? z1tXW>uP;?OWNws}uRE>*bL^%W64pna{2eye+$G@ka`zVK%KWJ^qn{K)1fnh0?+wmw zCi~+N{v|BgEqyR6?hQO4Y~#S&F~_?^2nO5-5Fdezr#=6@}@^hqHX zaF?gY&42t0>1GL}M_S3b7y^;rDO8Jz(FJF>Z-hYp_UB`+HUtmH#^_}WbUUs#Ej-R< zsip7dwng&Lh*zXHr`VkRWwOwSf^GYkiBNK2CWSFD#UDzbv2-3DgUHL^LoTrm4+|Cr z*I*Eu4auR1jQotHC9h(Mqdel-+2M~HREVO4MNEFybp65e3V!_(R#{G7caxq-hO4f} zHCQ;>9_tFpH!M2OHE*t0B5GEHz_k4ogvJfU=A3_eUpt5JCmkzS98yf4p1rRw0m@7@ z#``Z-eKwx-!_NjnW}mwbmnF5bWj(r|u?u4_XhMtBR+2n4h1nXZjAjYwU`w1!o`FpE z;>1kp0%2`rg2*4$R&6HXHC;KGFMOAkcX9( z)5zL5{U6;fwVag09mwHQpV42cS3^Vbdd`KO9ldK6QNnOd-@9+K_98ZQeY1OfZ^?Qi zYkQRYX1`m1mP-GwpoeAs>2uOVQTs-HI$;)uP*Rxt}eF&HtdzPF zePsVCQ@}xlo7PjnJ!>uugT!Y1>B%9dXGipD7)D9^FE|a2S=ZNaz|O-|A)kTR6T4jO zr#I#rg1Fo!LBh&at}OiAuM#rUdh%O=d+8CPoBn$QHazb zM6)$QMbPLhl8WeSMTvB7)L%{TR_-~wOuNad-{YzAJZ3IAf+%XT9^_=&U%b(=WwESl zdE~vTc>+D>QYlP~;oYn099yeW$z7r|%eB?5?S$x&^~Tj7;Vl~aRMjhC6&#_P^{E|g zxn`*dR5;fOOM-%2#75Wg2`DSB(Q&&~&}->+1>2b0+PML*DzR8{6%tbSwy?<*QVg8z z$#!3te^CFy;AxsaapPaxBvk$`6g?@7JiaMCWTe`eGPZKiB0?5+t#p>SyH`K?MI+4P za{gPwih~J0bLP5DEAj}dg&QpaU>Mr{x|bI8-Mw_^WPC=P!&8VI`fAS=)IVfT=XzCq zkEsKx`f4krm|(C_6aCeOEu&UAisSW<>l|gq&_t2|jtQ^JD5w8SM~^Nyu-UbwmD$7H z-pIbd@u$_Oy*`v0*(+;7xyckgBp2Kxf^-fT;U>4vyLk=K06qS`*3-?17@dSlgoRO^ z8*Oir_H7?xWij7^=Fk&LlZAR6i@5!(6SK{@#^-=dn>{uXMfRs?51Z3?^}H?%FZ6zM zi0PTn7^O1U7&VI%36uBoTo<*nQ>tPf^7Xe?p*A1au>aX?Rw(wVK#6hW+F|^cqz&49 z?nycc*I&$9lfyYw4b{}lngm3RWMR{?%NMGLOzT*l(5@mn6K(eDIf3J_6^=q9sZG`g z*r1y-S)YA(Xt0;-&1BZ=;#u(Vzxtcf0owwm?oRb|$Uk&ijYuoW zfA0!`HccE2j{4mhw5B=j79rdAtc3Zq0-<)fJUz`z!z&Sv;E|8>-0ak-wgj>h=#?!E zEr+c4(W@q0!BSR)9{Po1*wb;tjZ-3atGM@~OWL-BnC)nFX^Q?Bl0bllhpeU-@|9Ge ze>@bCWREVKJtGj_F0$oNbcJ~$;ihmdcMa1n&$)Id=2>DcXDT->V-5>#1-gPT&uC`IxiMp-lWB=8 zU$|y4_4%O&z<@v&Q0ChOm%falbtOvo5uH$GI(;&gfHVtV67COD>5s71;X=jHC99FVZO3m z9)^la|B9s6QZ-T#A6ViD%T%E-j|})bH?%g?3A=})&BA#}^(xGsK2 z&1H4UueQ{>L-JKx9e4l9$01UEkFKT> zG{qo!Xf$6*GBj`TL#|L4Z=sE0t|*F(*W|l4Ehw@$umMQH*P<#3+D^;WUaZl44n){F zY7&K}`69_ct4;NY>U^t5+&v4e1*OhwEAS}7J?XUa`Uj>kXB>uVg3(9qBH zEVP{{DwHJ%%;{*CIDQYD73Fw|(6k;G_vP6<_DGfc_RYXMc3kR^I1v>bNc_7GC%RS; zVKbQY&K9WSzY<17T==JuZ9u-!^FnhJ5MO<%bbQsOWO6FiVOD+%scQLgS$uZ*9y*wk zNm7O-`s~cAvd_GD5b5q)Z2(<^tp@dqnPq6e(jj_66%w#UrLi&FZsrVUvgVrX=L4^| zG>5oIzybvUJ39#MSf{ zG#0_20%EyEYJ&CL?8ha0n{K{50j2fSPs0|J1PRzL8x1Bw!0|RtYSd2#r+ALc%?iBV z1T6#>{OrzwU&5E&(S){7?}faMffoxT9($xW?#Ey>MftL8aAxM(IM`V;S1%hpZSHtF zwCiRd<$|Jos>^BXTzn~8;lfko_9{vnM!{}9-l`i=KT*H(`ff_SWFLxtmWz()gz|j| zlDkM*W+$}fRLbo$=do@|E5oPjN*X`FZV9|_;7SRePYA~RuQEySoe)Z=4O2J8;i-E6 z5Gvw@WP(Gn$=_ihU9XVR*E~t=9WoL&mF-L83(bKnCUNq)aXSjjJu>^y^yBqS3}uOz zY}yg$-~B2z*}qj{Rp=x|=#VQ#{RixNlI#P+n>d{2B^GvX%Eq!Y0Ic>F?z%j%$i$9R z#XAbQc7^8JVUsC#wy37#yqYa$Jxw09)Hxo|Om?$?gUzkK%FVA_XNb>pof8ay8FSl! zL1rh5Z2SRTbQY%X8X&DKWyy>=T}QZF(RDNERq9P5b-6H$%Sxu_6Sq)XNse3E?2&XH z3yxnhLk!cn&mQcGNofYATzQCzcGs(;&`%C@6{FDy%Gs7?`9~g|`n8M2M=Wt@1p}*Lq=r%);Y$PmfYMeS# zZS|HGEY#iJ)+9?7Pnv^wr3TG12y^PtSEE4<;hemrfSdH*$ZbgLsu96g-2F3J|KZ

>ekQnf!X$dt#e=zA#DOZ*N+lV+YhUpwr3AD>XT(A@yICcyd?b zlI^_Oz};W#PrV=OexB{H4F*JdQ#_Al?s6sE31DdMS(acoe+$8byOdWo`=M&|Q0m$= zN z53 z&cT;#BMFXHL=}*qL4?~Pkc(g+)Y>^Yk2JQ>WjJJ5Bkc$O!vAe!jT9GyA{vl0>pr8U zs)r^CMVCjZU~lM>Ka2X?vPx(2BXd4)LGqEaBI`~;G zl{--we;n!PK*d^SHyHVPor_Yi@UJPbf1$;$M6AZ*k{&n%^MZ&s*a&=#;?){IU-q=| zLb}|sKElt4JDisQv0n_NoYAa;0=_K-+^| zA2KoOfUXcqZi%~3mD=QYIgIIs&}{xj6nwjBqh>KI)s!t1*xP_t3Zd*@RA6;^H|MaO zARIPIC}DNcHA~*1^7$3t06ZZjt7nGhtylred=(@s`JcvhCAt=xE)l zla|CEsZNWXOE34JnW30JBEQ7CC+NdQM;m`Nrxa$&<%2k`**vM7;Xi?4L@=$BpW6ff z#E8jY2WMyNX|RVT@u7Ji1arr*1tDX){BT?AXENf#aKAHI4Je8X59Y|sis|5dyRRwu z(IE(;`Cwg-WW5?ZDkeoa{{~jY^f?AzjWvDc;1t;@P>K8|%^Sm_BwUEM5N6)wrB+Td zKR+)eGUKg9ctDKTZTRxE3+N7QKi$m{%GuJIcL=MQtZXM9KmqQjg^+{^CPPx(c+Vi8 z-%#H2jcR=zFuE_V3?XYoVs&%=;{$DA4612pA=TA8S06m+e)-CK6_h_5>kNSs1aa>6 zAqhQS7%_@yKVt3Ytirk9uca=KPC=Mt(2WYhISSy&LnRTM$Xg=Ai+&7@PYe{{I1Dt$ zZ^lRa-QB{|V|Y=DvVzs0LL^Gaej^ra!cbWl<|T=^r7VlU<^jFs!F>evYXgCxyQPww z`@7U1(F(>2=mhbTngoWk+Bip%S07u7v&TZt9f_a?xI?y!lVw%RU{WGGg&iMp8OhrbG?PrtRRVkm{aSP4&JbJHTs+J3$Ku8 z68NkRlC~MYB2_l)bkhWerVrzHj844yL2y3H;2^b_g zC!X&3g1Qw;`fHm@oS$%g`f+ub?>-wNYf{JpCe!V;%YMO+;c)gdi~+hBUFnM-Km&_< zmP-jIT7cgO0{RCf6CcSBbVoQ1W0otdtq!GlzZj1ePrUJ`TnsD)1_t#m6aJ>4-%^t9 zgaEw4{S|I5XJ5r|{>bUt7vM(hY7J~X3OJA3l^GMY9l+gzKGp|<-<%K7 zN-g}wD~KkFnK>>!r(SXd+Y0fHnnGudfCQ7iZP?X;^(+I{Yry?drE^cn-QU0eZ^q zZHF9)5QSmw?B!)>NYc#Y&)31KeL3WPuKH0KTd_}`r6&AxcJCOB1?F-SL!KN{%Cel% zx2w*$syKwfH1lx8Q=qVkh`u-o*%`w~Yh)ta6xXD@HyYv9W@wKv(P=_gk2fkhxVhG3 zU{;!icw$C6ZtU2ySj>e$c6q{t0=8ucshBD5o;vnB*f2+v6@6)7==FmI>P^AwXQvLB zbp^&mn|Z*r%+I#%6OC9Q56sW*b~3UB0uoF|)#~y-!)|GkarpJUzp^3UT(j)}3?5&m zL%@sz*Xuqv)5kSa`q_RHCi?e8itiTShMTwkdkgclT(>I#U^}emhG1}i+W(==;ARc2 z3%K~&>W69Ie9#8CEkf(MZrgs311jtJ4*lA`tJ-e8rMiCIYOB>0{GrFHJpfG$e6(UEnO>yNrXE{_Zglw8aH@ zOQ`d`&)U9ub^xy}cio&%{p9}?>UtRLh9_=&pR@Q_zrz#)wFBQX^ZY?=??;PyH?6rI zha{8^@9(D$e9xsmpL?Gb&w5?YZMkp3$PPYda%dZ>K4VF-Jx{?UB(^;#g9hL|rkAQ< zz(?Ep^ygNd?=CL5KWY0lm4x@@_?f=@7;V|$rZ(*zv#c)ymvt?6@{Y8ebYzEu}74KA8udLJ>r`{Q>EI64LL-M=AU`<$l%_j03z z9*0SM_Vav4!7oc`RNL=QXxre}xGs=--Dkw|$E6Lb{~3c&!|fH|5p4PKd8=_6XyCgu zG>WYFwl`?tXYp9~xqbb)UibES|NMRk&GeGx@jkr$wmDBFbel}_J`L7-$zk%>+x_(5 z%zKUoyk9@Zd}_U7*Z5(oGC91v9WFApf7XJUfR7=_|K`49d5h;ZhRO3C&ESu2_ucOd z#Venuro4xtJkX?t?*O>dz-N1uYU1~`=khVY`My5}e1Bz<1pF{_5Pae@xNUBleam~u z^FPP|yF91@xSkwN{ppVoH2=+g;QeqOYgGEHt={dG3*R|Oo8EQ# zyO1Y0Ir#Yj+>xHpBDHO69Pw20rrRh&qKhMv{AI}mr;YOZT=e~!0g*w%KY{NX!sp4{l35Lwf6?F z11ScVb?^27{QpvcPtmr0b`HUpQp*;xmp=Oq9zstQ$IHLA8ya3dgg`4Ko@;SA^!{rA z^|$@J_o5F1u={O>(6gAL?=qn4{eum7cX8eEj;#o)DbqU#PsstU(15RALTcWJ!6e{} zj4=Od5QBl&y+mG<6ZxO#hGD__$AdcWH5-86Z5jBH=NWtqzB#_c^_xZ8ZhsQM1m0~a zzTYSLKhFaVKuK}FCrO)S;E{#8_s0k>0q*~zY9Hk51zTO9chn~AG0CnBBX@Y;8&+fbTg=Ri;wm;6V ztNagYxPT{aMRhL+B>tc@!Ps+fztC$oS`SG5k_4dF^*&$s-dnbHcbb>+(gb`Np^D21 z|2+CB^s0xezvg?FrGNJ(^srIZbxh&F_pqRP4LVp^T7JLi%k#V1tplz5q~0k=6g)yy9|%o_2=c_e%f>Q_4+L@&gV8w;l20#%m8dg^|?;Kx$Rb! z%>0I;$rpQYex_7nFN)yH~u(2 z$SHK~QCy<=J#fYPzb&nQS{2+y9Ce}r-^_q&`o8-IWm~ru08qkb9r*K{3cM^Ogx{oJ#$ucQ*0S%^THChw z(VWNU#j)Q_XU|hNp#E+*&+B9%ulr_v`{rWwXngx|0{C)&?RUPqT@E}#%L7@Yfju8{ zr#tVafUkjV@8lMr0aPd<-cE0*#pX=CcS1-p?ZvN2L8nDe!Q^$;G-IF-x}sT2UzbJQhvVOBy_+3o8AQNgUuX1 zs{6ndKsFjomY7k+{G6}%tLYg7ti(u`+U=2Hj|ts%{LabGKRTW^15+4vS8qSLI_cM) z9mty$67Fwr&8+V-|Fp;wwUVshA34N(#Dx%bu57^;7Q4cemFAP(eM05AD@>leJmF;SOZOJG z*rSJ5cCIj$y6NscWs5$!O;ykL;bP+}ZcxI?DyWj!A(P7{sLwd#BE-_jEl^k{M6IVK^|)LP%sRplu2B*SkWHr zKAsW^J_KsNpgqH!xP!n039j$Q2L%-s|8g~4x!L!5OCpM6gBNW&te58GN*2jMLtDF3 z(~%ZZ=R(Ju_RhlgO`l~{rE|xCSiH%J_%ghHJ z_bi`f6@KGom3BW9%FY}yLq`2h0!`f&uOZdw$vwSso(;05xw^~Elv}`M6ZyxqX8_w5 zXDUD2b8wErHJCUzb7LIrqM57gp!NmXC6y~r777vH*o-X>-m6H~j&N;-g~g^ejcsn2 zz`L7HLTS2K963b%KCHRAUa-TMv@LdW-we|4^{}?CM}G4oQ(@yQqf=Ypd}u>WjLLngEDO++tvSm@|dMDd3%dV@;=7uPhh!O10=8Tn>%DDt-R^yEBC8R~g zPQg!R#Ok|2Tg(y$-scSRswWb~=R6$!&TGNVpfiCYoT{x;p`z?#^@pXuQ`SLq1UBhe zZe|6b%x!J;=VzQMJlZ(i7+mBuX2^p>1yYn~d6{BKMlXv0(!;V)SW&8vLR}4=IGi9! znpJ8^?3Wj3Z-ir?b>XFi zY~Vflz}E$0|Cl#%&GFR*7vH5G}z}&$m2L81H+D_oa2fA#ifu{IRk6o*xGonry+veMD^Kw zYktsbP6*!`KrPOIGSBaL$0na@WR|E@wV-AabJ5%d8xGJDNrOKE9Oadje_hD1W0#kr zCGiegZk%C&SujCS?QxU9pvU;vCWL-&bdgs5$x3m%X1(~(1?{V?EB*nbpR#%z(xTuF z4aq+(!o?8Gk5l=bqhC+!AT*GDiHJhtG3;&QWN7d+Z4lySF7&c>R#dade@ybjFWg%p zfu(k$?sA^zytTBZwUnx!ArBqh1nEp`>p-}Y9OXM|qWywZ{uY9_RZ$4Pf_lPyADdj0 z`D9;J$+@@S<|IMZ zNUI#g+QiEOibm7OE=?AU|28t!PQ>)uulIKSnxt5dQB@|`pmRY>3uj|nXJ^|x{a`tW zn)PdKG5==G`zsRhzxLPnTbE5apIj^{k^kxnysnP_#8fF%7U1hyIIHW9sOgZ`d6zUC z5)JQXyS)FDX9oI$PalQcJek1LdR_`ro0E7=cag^3zl}jRc(U@h(fO-bn(z7qFhw2| z;p;}C#w_v!I_U8EK7r|QMw`@8l(d4%NvtWb9yd|6P>i#JEb*j~oDxF_$V^0SgoUL22rc*{)$?D+2&%d>pTkq?X2Iga)gb&>b_; z+P(bX7DK}Qa%A`#oK|$G4R#G^qLe`WE=ICuDrNBx`)Ub0j~@Yr=0ZbBPt^wjyP4t( zI&2U9}EpQrx`!pJ4fad)2) zRv_=?j+qSfzA70TJ);aL1* zu|`=I1+&^tX6{B-pAU=3O~`v=iy?GrxX1Z#Y+EJcX-7;sdI9=Jj8l3#mBMv1De0Xg z{^5i7O}LConoXLJAlRVmheJ9v#)&*W;EyST9!GOj{oKrZ#);|NKg`2=efbIo={dlE zW0^Beq!pyV1`hskMa#}B(wy0*e+QqIypE^w_l};9r={ZTSbUT0s4uP(WCn6; z;xr-OM}@~XA*U61iBm1K%f|?J%eibI73y%aK}p;^FAnlRk7snOBF`+5X|y71K4Aq- z?+vqt6E_Hkj{l=;Ve_wG$}%ddr#rw#ip5YnmWEHRhwuk)06}-^S5mG5X8HC_hsVDx z502JSC|eWAWB{Cl%SXe&{e~9>yu|5pQo~o6AN~B{4+M~#opPg^X3;Ft_y1ZAWuOs! z48z0*mAgXmgqB$uiMHx%5E}4ce)#-FML6tn#g!=`h3dd{7gl0P2sVUP*2aO{%#5Jy za-^W%;txzrC36XydSs5}O(h08ypo6Qal|Ff9aUa{|1eCs zk-UCrj%;AD_m@1>XV9?-Ba3^GNcb5<#xHGs04-(up*Z{#b zXp)<)t*x!v4{-1P@qU7*>r{6=Rj0at#|`I4`>Q{Ys8a11Rh+Qpb*VoH$@k;v0k!XV zJB`(-dC{hkH-VHu!f#o6+)}om(BrmeX(p;I-1N&&M*i9ek#vsQDK#Dbe}A^j5E4-n zbH5Q3ZE%pdO4ne%gYg#mZ;3kHS%y?;z&qr^f%-tZuTNN{O4sSf35YvNX`!5|_JV;Dh<(OO$N7TIx zk85M@eh#UOy7s|($eEvx5aUUTH$31BOQA*Kx@*yJiVrzD(P5g8t1}8gc@Lr7jcXk` z(h@V4TYKY=JgLK4`UQ`&L_wVk?C_-HKC#5uzhj%P<*@_XKAdsSV-MrSP%F@ro}qeI z?`dF7K9oR;I{#xOYVot@$wFku64-Otvre_Fq;1R5T@Tz8VTXbVs59`$)WZMSc&=diCX21 zMx`)HyPpi#>bInoUJQ z7pw+!g^L-$5&t>78Aw){BhaL)5M|=_eSwxiJwMTvFAl&dV{Wt|>{+f^nXr*Cz~=zf z9k5gz4ssY>L6BeO|XBuF9XhR#~+zxBKMHBXubG&OLwr2WPT;7 zr#BDfWgDy3Q<6^=ApaJ_L1O1qDEE?TVBbuSp#r=@`8xv;xq|U(Gq%tc?GTlIh9$L6 zREp$n6TA^LpjEjOigjJZ6Z{#Fjc>C?{oJHa8dnSF7e>L+V@qat`1u9_B9nrdd13+< zmZ|6$p!895mSOg$w1g<+VFm@`h&QNu&`veJK_Erwqsfa^WyEHw)mrl$lmN2D#(Kj)nK@q^usaBLdPn)CBcEE^dJc`AXxc5!YzCj<9?!K z=GFw?j1uEnszD_?^xqB9@{q0KaJXccJML+kC+B;MT6{IoM5CHKnptIm0d@q7A!-e( ztSS0Rcp}~hKRcA!4iep(-4gqTis~AO&XY{5Adja;IOFv+t_RA_@ zsQn`hupiq6G09dG;z(5YN#cVEbzVwMC$#G=dbqyE`6<{YeGMy0T%hrUgPm-?gk3SB^3x*ih6K%$6v6D$rmWwONcNbWM_40ZhmhM+XLTI=A^o zDr%er{917Ae61t zoh)_EOo@x9$)0kCrnx*;4#}4xl&a`gqZwJ_B-_gxkCexEH9Xdef5pgK&fhBzp^S;^ zK@C_i#ovB%U_fBZu&r4MH&`4Q+2i;@M9YWE2y?^hWEsP3{Kw3(4i@-rv4)beA)z(m zp?pc;NzLVcMRIp9U;XzQt)3doaTc>SZb`^1hB|0}&RxN@k?)2Irn$#S-?ExwJZ}m} zha+KBbo~etduc^ID9Ld(9?N^LPF&Mgn7F$T`!O{_H zo7j;sD$G!TYt0y@XF#Wtc4)!MEiK)Ph~UuNC3gn^sf__?*5~<_A^lMGl#X2gx8-%rV~#C{iCn zO)w~OoM8OjTse+nWcFfp0e8yQK?@y{S@AFiYmZUT@p#bDuGVry*Y6HW#ANG{=uB$R z!#6>XJaHYH;5-t^ITW_0KAEqB-EP)E5hMK9L}k3`-6iIMB}`}{LU9Dj@I<+6d_-OS zvqwdNpp2L+2!VU|mq#wLBx*vio5C$>;bhX;MDjgAg>-f3sjQ5nHL|nW3(E^DO!#9e zfj@oe!A-(3eeuO@-lDxQULJ8j8#0nhIJ0dY&}qJs1*eClAilfkHh zrJ~BKFB8;>z~#&laEuhc2Il7S3MK1=F@0*PP@>C5YzTr*a+?~A#yOGHmPhC>qhkCn ztMpSu(%|-63=XI6#D)gAOl<9lBHg$!d^^B$!_kCS1!~o6f%tvwfm*gcko5we&tm3e zZs9PN<|#m87+9HlX#nfT_kQ~%!zNjy9JL+&0WSDj7Yb;0)R6x;UCYxO%S{5rQ#u2t)If*U(;bKLFxOPb=oWs{1E1>QtRbqDrne(fFX^I~DmtP-@$2j zu!Aw(6o08(?zr=oL%w;?~RjhfK(QUK8*l8{TzY`mkQnU4*ZnSs|-(Ms>Sg zB0_h2cC6#TNh$65(PH3fq86B|hiUj(>z^UHsfe5Vd(T?knC zm42VsLy5o5W7sX7NQqxh{+s19BqQp#5avb}h>p6ZvLqG&**$oJElj;OJl+FNL_iBm zx(Jc?$x%~wTdZ?JT4*QOT1A4h9{&^?4c9qkCIGl=1Ef#dj4zlIV0^ji4sNJh(GZjB zimSgiC+Q$rn7pN;@aM*j1BBfJsFaG*^QW4EX3S6gC4_60i7E;}v8$6D4@cuMier(L zzGr!&<2FShL{y{dJuVd2q>*{E9aY>bW-nt8T)KCNTf#Bpvc*$H&EAA_8hGf z%SDq5LhK+B>(RiC6iy>Z&{kjmesjx-74C6}S1qWHZpMhdddv^{B|VAEMf}rq#Iuxp z?~nYd^$T=46L#bx=cdQacGws&sZ#yO>bP)-?M$8ahOUC4rP3_P(`mgDt5jq-s>K78 zPXMPPPvslTO4t}&YemJs4CGlbPF$Ek?l@!08RnYY{2Co@bwp@fK?b52zyy0ozB5FB znF^U~D$JN0Hu!w^i7{++(6@IkG$F0{G2zNGuMV6CbJ1JgR7D_>jtLftTQSObm}Oc+ z&p){Nel~e;O2W2cJ;J~Vq2VRS@+c7{Qs{ON&&{GVZ$CR*Vszq7d0L@0+DH=bzH2-*u`)a4P_L7%Y`LRT{g!Jt;Bh4|? zk^?Q%7e`sw7Pw#(WgewewJxtlAt_s(hbhLW9~Y8`ffOQPTsthQYK#PP3KNw!E{ehG z)HbWLO?h4TvyD>Z>L8xKNOADdc%kZGob$F*9fvWgqH+4grRD4{3gzWcdcXj8qyI)C zH4S-__k0qJrQs9LiXuAY2@G^9lg#u~(=tk*f0Bu^8~gJ+q-05O zFg#1Y_*ZsX&1|{+8%J&ND>y$ndjpgB1@DPY>X;}Pu76{5g)L0)8FlZFdAeiYVl{CV zQ2k&M!pWCZfZ4pI!zyYGjE-M2oK;O?D*#!{%^tURFH@tu3Dsa&aL?87_~~ZH>JZAn zO|UIC1ofZ0Y@`1gnzVio-Pu7(Fb2ka@qd5fL!OOyt)yWQC8@$vig|sFed-rXI*)}^ zLflR+)Q}cf4{A4J0(j(772E38OctuX9e4@zPA$M|=9$z0&89o6)uWu!f8?3$8Rs6#Ac{4&?&zUXHQ1&Y?M(sWuevPJAnoR zG8p7(5)Ae2F9Y^=W2ehK(`wvF3*UMew;ihKm2rz0u2nf`I&q6h4c<2{&%XTg2&i-&N>K02>ISp2q2d1m#n*!o^CN+s)*&Ct8J6kr?oz3&^11vlO5#^nruhN)oN>Rka;=$o4j&T@a5<@t46ViB7iihy>65 z(lzdRlaQ8G85U#gah1_LS7$S8W!9h?hvavG#-+CdNYG6v?M=9BcmO(f-ksUcy~DOl zAGW2xqGbC+Lqrxbic}W>6%&OlCOK$e8pP^|-q~sO%dag9CNh!GG@Et{Y77?Zr0Do` z8+P8fgpZ#dlw;B%3y(s)z4FB=f4Shtv#1(fig0u*@nkcZkU&(nZ<(Iyw!P-YkBeY+ zVr&Esfk&pyd8-U#Fq#No@L-+I!u+c`t2kX0C8F1Q8|sEg+Iy%`_kuhwdXh?xBQomf zuc4w3-_)@Z$jZG8XyVK^=aoJ*4o@`?ui?sbw{GBe0D}1(5IhwP!Cg3AX zn4k6{%7ZH-~NG~Nx)RN73SR5zBPGfA8q_8wG za+RRa|1Qa4R34{xO)Lq;1-}CI*UqPQtj7 zQ9Dl%ld)&_R(6wRW0O=8*OJ%*@h^)!%E3R4b1d%q`G)D~G6p&SMzPPeatm@;FOo}I zlGqR`mMilQlC^tS_$CdMQ^oMu*yZN%XQX@ssXD~XSde)s=U~U4==m|4u&DmSHW$KR z$u)HRJ0eRz=(&jo2*0|q86u~c?jC1LIm6v4JEW4b6k^EL7z@0%{0qyNivi1ZL zCka(`^}^Qt(NNi(log5?8II`J99unuk|r1V0&_aDtDgsYbVv0fmmM`8YFK_#$|WyZ zd^T6ykwagOZc%V^|QF_c=Rn(DBjt+4(MEvZsO5V>U+tE z2P%j`$dM)NjTj;6#ZzmU(gP+vME7A%xEC>Zy-OJ%iUvVkOq?G>}- zF`Eo5LEi`%4v5l^rqhZ>?C|-Ws)pxtOpWBs=qp+yfg@)UMT=xgII=HV;h*QLkxWz7bvsBt_VUW@)w4mW}rgC>lj-o9$5&N60&r!dwWUihs09$KJw ze$lhDgzjb$^JR+F%*ljEO^-n#g?=s+JS2D+W`wLk-Bac$$mi5^R?TwUt6G|~(jr6D zkHbG}z@YL~Q(LULOr(O4SY8^s-mC^N8MIS|X`x}K%~#4HgJsef`qp>7vO4VF%$TjJ zEqApJ_L&mw_iNH-D2}nP2Uu(QE2vP}0fy|DM^BdBn5rC(oR=3yFSuq>?0t_I&I1_0 z0gH&D*}n-eNOPfT;=5xK*`;*{jU*GharKtc)!b|vxEmmC=3??H-XAi6|X5Kbx^QR*D zCK*$W0a%1f^MND#$UR&`)OU>NV;f9#IuNw$iZ5(KTQc4^zH~6@rd1tA%|X zVPBcn(fr1Zi3D@yJzaFZF45MQS}8`OARpCK8^)fg=3Y@d)o+<2wL}LRYILU(%JTCu z+deDzbC7xK3Ms9;zK6uVaOCSmYmV=z)OmPjqKu24$~{C6jCM#2iY1vmzWUkLt-Mc! z#fg(7HI03#b&MWiq9fnypo!;FZf%aGwLbq)^p&aR zXjGeb7!!8(&1P4>$(PCjMDv24sDcRSn)#W@dQ*Z_Nk2?e?&4Or+kB$&^L&<3n9`Bc zT@tajW4SH%lWR>SN`u&EI4bDaSfKrk^YRC)@5(Hes1ZBXV<;js7vIR+t4ml8ca?l) z+Dp}{Pu+C7RS$)Sv~Lme)+F+sTp`*zDPLqJ&^tBlm-cI2tVfE#QkQYg~8U2{tFp%l!C7@O8=zW@=b&A&C+NDPsJz2QeU%lp*<1j zkao2b@_gqZ7p4gGOgBem*6!96Wj$~<3U)PAhq%k(rQ^*coawLj^3B>1x)Z@b7tOvnrvv(V~Pzr;=tL28b957)Zo6?hB01Bi3@5 ztf7;A?1){s4|0xOi%A7UT0{{s@D&>D3&SLU3i%%ZTR+o!Y*m?qpcvTc>-UvQfDyqM zt<`#lg_}iOV=2h|S!itBJ`BE7ny;#Ui~TdWtY1q1$C=2^pG{qA@k(zM!Y{d`X{Tx1 zRw(rRE`Wj)8XzWRNVIV3J$3W>Ka<92I7Ev^;#cqD9PM`RLET%Qfjz_}*nvO5JC9I7 zl=(m-x568J#4R6>N`Xj|ljf7BwQg1c3(r+(OS=4FofejzN>+I+X}Td-UPztFbmJZ*K1P z1{@Ox=%!4fi4eFOyh4zS3h$VuKuZ}L(SDYc+DCt-&spqCdyuV|RG7`Ok~s2-ZeH{6 zPVc%Y&$BwJD57Xa(tDaOYlcKefpqe;p0O_{Q|kZV6rP+R}0AGuuW5CoAW> z26Dp5SoJBLVd{+5HqF-%rnb|+Tpc$Vv#v`DL5LM2yxh|;_elQnt`Hs^{s2GuGf zvPlX~R91H&6q0sbY^Y0BIPVdLlp`8Efg)8VuiHHSER*~yJ1Pv`Frs#|C--2)FZ0SL z6SuQnxE{qJG9*VGa^Xkxpg&(K#B8m!5xw)ebT8_=zg{D0D!M2r1-+_tN@s}J5j6+M zYXV0Px`9%rVbWNs=Z1TVt5kOfrjPr&N4sKog^w(+*B+!)B~zLVn-*13ywtRI=++u4 zyuXU`Z9A3FMlm#GE7wmNzW3w+n;OpHcLWOZZ)oNkP zo+qH?`E`B-s~~d#djex5Um=_b()+E>1ko3Us`rL$@@Xxe)B&YFYbq&}B;VyY0_%W| zT)~n;6`MrAmIwE4M+G1dxmw2RMd)Yn5IXj+}N42pId4)M7y-mE?*?cX-bM8`SrOF1$Wc8OpTkJ(z8 z`|sjs{X%&SL??fljZBf!DGf;5q_QS{+SE(LA^)?>3=guod%nhVI8_{wzlCpiMt`YX zBfZpFPLO5$iaQepc23P9*>MWBiKw+#i3N-?eF0L&AmyU(XM94Jd!Oz`%PlsejY+F9 z=%gz_SY&4wB|8v_52f;A)I{sYqz*3+{&CBZPMR!K@ zKH>!Fy|f@JvN|9Vwe@@?bTe!PJFAsTP?$4S`7Gsare&?o zB2tqR=JNx3+K4|zCFs#LAf2RSWi*KX%>T~!4h7yq4l}>a6Hl?$DQCD@a8{tG%(PpSbi4&vzRkFgCl-YB!kp;HwQEw0_`AZ=T)FlvJ!DxLT?XEtnv z7C7sSykySG62oy#`r6;?>pRinWx^Ap8Ok+oOm*W&)@_CXs4Iwy!jdOqmX;yce-^TS zm+Uk|Ju?CW8qhz?%gJ=!aeTh!tV{^c5xda6JHKICgT$>0Y@T?RhBGpLykX?>?h|xs&qVDmYw0pqvocS#%{P$Wa4fcg~_Eh3lpl$1Ywej)Q(g}2jg%z(*jj< z9FQU7tHN&2Cuck`VQtjq8Ou21qFrdg2i0O{vFlcEoAAxByL5jNw;6ZNtikXnUU*0& z$@R_@)(9}uJ51>NnmePAtuM=%>&C&{^ylk4B*C+#by=_JF(VdVwyUoF+i}i0B>v-t zEHaOs?>)lEQ*{o$ss-(+L1p7GVrD|UN~e-v0ZA}8!3nr(aq+h0RC_;4wXkAdxd4`I z>S##CWRrL90z$E~JMbg?^J5X6|cL3I(+3o_ahqQPOco!aFEgBLwWVe zk96V8nu%I+QO(J(3rOboYV~>MJ}ofT>ujYe{2FdhzGa|mWdXpMFtJGO<7HJEH$3X| zP4^bbTo;ywQ&}_2x!XEvl=TYNGoByq*nXvU$xhz5^yTZ|`sW3I@a-KVE{hP#IU#y! zsX1$Nn$)ER5utJrH-6SYHMMY+V-A5M|LI?bt9+c7CLy^-)9exygoIii*f)+!vEjE) zpG~eSL_hqQ!`c=|o%22n%SxSiK7E#U=tma;F7H&*^ZuDzLH(sN_P}JLd0otDMM_}n zy<})i0yjgBan9xF3>C>#S1DeVWh@L;S3{VMD|YQA~;i~0|_|MxF4!jM*N5<&^$ z|E~c4|KYk^ZM`jR{#ORX|5*M5FP|`<@c*0tAjm89pZtgaj@J0U`45W*8gBc-c)h2F z>RxN=HayCq@ssRQBkJ(ckw#RTx~bXgT$qDVRpIE?5<_p*D0ZhD6|)^-t*^{QAX>V_aYpThQP`@*E1j zG(+Y14p%!U8dnH&Pc(BjLP8PJ?jT`{NHJvf$Q|wGzE%NYoIG${bll}QUB{LkRle(M z;(i>x5-=d%ME_wt)Z5yjhZfSzMDXxlzQK}#GP+utbhCEoYY;p~S)WypJsa__BEhE_ zTLvQg*V_hG_DK7&?07i6IrlzXq!D5>^maJD;gN;CX>V2PTTn(XX(TSb+SzP|L#b@u z9<53R=&d?@oh~}kgB*k1-UQDMi>rC5zeSQzfi@Y))HqlDzGpk^Z^RzS_P^?-ft{_be1IGgR1mVZ4jX)N5&!0X0XL1{_>PJM|nf>mWX-Y|8g!u z-|I*0W~RYm=K7a%<_4I7LYFvYEJt~&crjRvs<_9u?b2?tUn=CRi87Z$3CEGeN#cFx zvVQf&R?3TL?Q!p0+sod0?@iM*sdQP;#b_*~&`{J(+plLxt0;oXAT>PDzEx4gipq@^ zE<|x45ls0DxAVB`?qO;v@SgLeQ6PLe_Ob~lo8YI#=~GVO9RpkS#L3O|*i+{NU*YE+ zYLFMx*QFfgk{KWDWUcu}1D3>{H-(coRp>nK%T~@oe?dsmeC9j##(h2+6jC)R_9vuW zh7+t#=J-W;H@}E4bjf0$i4l(te0V%)8bm%{*sp~29oZLLBVQ3(AHAyy7Zo@H@Jt_F zNlBfb(ll&07+!{$u@o0xA$$hBO$&NhxIg*Lto|@`auWT{fFTS#tR2XIRsXHBi7V>p zZTRR5x7vd7Q#p?;of-{M$J0|nOPcA7uTM?$ftT$VR^2U0Y?Q;C_V$@}70XU3(T(P# z-MeGoFSgVX$|15CAIL&w4p3sPYsIwRz8AhA(#9tJ@gZnnYF3P`cJK#lJ$J=6GM|tl zM7>UOD1Kx_?uL{4_#-G3L;Q^3Xt$#E@PnuC7~0(a8dv({!D)=XYev= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Jeff Patmon","Gavin Todes"] - s.date = %q{2010-02-05} + s.authors = ["Jeff Patmon","Gavin Todes","Paul Schreiber"] + s.date = %q{2010-11-18} s.description = %q{Create wizards from any model in three steps. Slightly tweaked version of jeffp's gem to fix a deprecated method error'} - s.email = %q{gavin.todes@gmail.com} + s.email = %q{paulschreiber@gmail.com} s.files = ["lib/generators", "lib/wizardly.rb", "lib/validation_group.rb", "lib/jeffp-wizardly.rb", "lib/wizardly", "lib/wizardly/wizard.rb", "lib/wizardly/wizard", "lib/wizardly/wizard/page.rb", "lib/wizardly/wizard/configuration.rb", "lib/wizardly/wizard/button.rb", "lib/wizardly/wizard/utils.rb", "lib/wizardly/wizard/dsl.rb", "lib/wizardly/wizard/configuration", "lib/wizardly/wizard/configuration/methods.rb", "lib/wizardly/wizard/text_helpers.rb", "lib/wizardly/action_controller.rb", "rails_generators/wizardly_app", "rails_generators/wizardly_app/USAGE", "rails_generators/wizardly_app/wizardly_app_generator.rb", "rails_generators/wizardly_app/templates", "rails_generators/wizardly_app/templates/wizardly.rake", "rails_generators/wizardly_scaffold", "rails_generators/wizardly_scaffold/wizardly_scaffold_generator.rb", "rails_generators/wizardly_scaffold/USAGE", "rails_generators/wizardly_scaffold/templates", "rails_generators/wizardly_scaffold/templates/style.css", "rails_generators/wizardly_scaffold/templates/form.html.haml.erb", "rails_generators/wizardly_scaffold/templates/form.html.erb", "rails_generators/wizardly_scaffold/templates/layout.html.haml.erb", "rails_generators/wizardly_scaffold/templates/layout.html.erb", "rails_generators/wizardly_scaffold/templates/images", "rails_generators/wizardly_scaffold/templates/images/next.png", "rails_generators/wizardly_scaffold/templates/images/finish.png", "rails_generators/wizardly_scaffold/templates/images/back.png", "rails_generators/wizardly_scaffold/templates/images/cancel.png", "rails_generators/wizardly_scaffold/templates/images/skip.png", "rails_generators/wizardly_scaffold/templates/helper.rb.erb", "rails_generators/wizardly_controller", "rails_generators/wizardly_controller/USAGE", "rails_generators/wizardly_controller/wizardly_controller_generator.rb", "rails_generators/wizardly_controller/templates", "rails_generators/wizardly_controller/templates/controller.rb.erb", "rails_generators/wizardly_controller/templates/helper.rb.erb", "CHANGELOG.rdoc", "init.rb", "LICENSE", "README.rdoc"] - s.homepage = %q{http://github.com/gaveeno/wizardly/tree/master} + s.homepage = %q{http://github.com/paulschreiber/wizardly/} s.require_paths = ["lib"] s.rubygems_version = %q{1.3.5} s.summary = %q{Produces controllers and wizard scaffolding for models with validation_groups} diff --git a/wizardly_gt-0.1.8.9.gem b/wizardly_gt-0.1.8.9.gem deleted file mode 100644 index d4a5fdfd682f94acf4095c64300ed70d40cb08ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27136 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�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 WzhZ#@^TvM?_)h}=N#Or6f&T#w+~zR= From 6f8832213e9e3d4efab1cd0fb7288833450f48ff Mon Sep 17 00:00:00 2001 From: Paul Schreiber Date: Thu, 18 Nov 2010 02:30:48 -0500 Subject: [PATCH 08/13] Tweaked readme formatting. --- README.rdoc | 7 ++----- ps-wizardly-0.1.9.gem | Bin 27648 -> 27648 bytes 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/README.rdoc b/README.rdoc index 0e276f1..81e8805 100644 --- a/README.rdoc +++ b/README.rdoc @@ -382,17 +382,14 @@ the model has been committed to the database) If your form_for tag looks like: <% form_for :person, :url=>{:action=>:stuff} do |f| %> -then you will always see an on_post callback. - -However, if your form_for tag looks like: +then you will always see an on_post callback. However, if your form_for tag looks like: <% form_for @person, :url=>{:action=>:stuff} do |f| %> then you will see an on_put callback. This is because (a) Rails treats editing an existing object as a PUT request, and, (b) Wizardly creates objects right away, so you're almost always editing an existing object The reason you would use @person instead of :person is so you can use -accepts_nested_attributes_for with related objects. See: - http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for +accepts_nested_attributes_for with related objects. See: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for ==== Nested attributes example with wizardly diff --git a/ps-wizardly-0.1.9.gem b/ps-wizardly-0.1.9.gem index 602b11862b3e0ebe7b4595eedc00a5b5ce7a329d..b8e255f3e7913c50e75350aa595c688fa67e6ae7 100644 GIT binary patch delta 3044 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 delta 3046 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 From c33fa62d43d322c59d7b9c9e2aef432ade55dca5 Mon Sep 17 00:00:00 2001 From: Paul Schreiber Date: Sat, 25 Dec 2010 20:25:27 -0500 Subject: [PATCH 09/13] Changed #returning calls to #tap to get rid of deprecation warnings --- lib/validation_group.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/validation_group.rb b/lib/validation_group.rb index 57e3352..83ce4c5 100644 --- a/lib/validation_group.rb +++ b/lib/validation_group.rb @@ -12,7 +12,7 @@ def self.validation_group_order; @validation_group_order; end def self.validation_groups(all_classes = false) return (self.validation_group_classes[self] || {}) unless all_classes klasses = ValidationGroup::Util.current_and_ancestors(self).reverse - returning Hash.new do |hash| + {}.tap do |hash| klasses.each do |klass| hash.merge! self.validation_group_classes[klass] end @@ -132,7 +132,7 @@ module Util # Return array consisting of current and its superclasses down to and # including base_class. def self.current_and_ancestors(current) - returning [] do |klasses| + [].tap do |klasses| klasses << current root = current.base_class until current == root From 72c95fac09badc15eea390d670e84900764e47a1 Mon Sep 17 00:00:00 2001 From: Paul Schreiber Date: Sat, 25 Dec 2010 22:22:47 -0500 Subject: [PATCH 10/13] * added support for accepts_nested_attributes_for version bump to 0.1.10 --- CHANGELOG.rdoc | 6 ++++++ Rakefile | 2 +- lib/wizardly/wizard/configuration/methods.rb | 10 ++++++++++ ps-wizardly-0.1.9.gem | Bin 27648 -> 0 bytes ps-wizardly.gemspec | 2 +- 5 files changed, 18 insertions(+), 2 deletions(-) delete mode 100644 ps-wizardly-0.1.9.gem diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index 243f441..f8cff46 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -34,3 +34,9 @@ * 0.1.9/2010-11-18 * added on_put callbacks + +* 0.1.10/2010-12-25 + +* fixed deprecation warnings on #returning calls (thanks, Aaron Todd) +* added support for accepts_nested_attributes_for + diff --git a/Rakefile b/Rakefile index 3210e0c..b386231 100644 --- a/Rakefile +++ b/Rakefile @@ -14,7 +14,7 @@ require 'fileutils' spec = Gem::Specification.new do |s| s.name = 'wizardly' - s.version = '0.1.9' + s.version = '0.1.10' s.platform = Gem::Platform::RUBY s.description = 'Create wizards from any model in three steps' s.summary = 'Produces controllers and wizard scaffolding for models with validation_groups' diff --git a/lib/wizardly/wizard/configuration/methods.rb b/lib/wizardly/wizard/configuration/methods.rb index 331b4f3..b4aa276 100644 --- a/lib/wizardly/wizard/configuration/methods.rb +++ b/lib/wizardly/wizard/configuration/methods.rb @@ -294,6 +294,16 @@ def _build_wizard_model h = self.wizard_form_data if (h && model_id = h['id']) _model = #{self.model_class_name}.find(model_id) + ## PJS: 2010-09-10 + ## Hack so that relationships with accepts_nested_attributes_for will work with wizardly + _model.class.reflect_on_all_associations(:has_many).each do |a| + _model.send(a.name).to_s + end + ## PJS: 2010-11-17 + ## Added HABTM associations + _model.class.reflect_on_all_associations(:has_and_belongs_many).each do |a| + _model.send(a.name).to_s + end _model.attributes = params[:#{self.model}]||{} @#{self.model} = _model return diff --git a/ps-wizardly-0.1.9.gem b/ps-wizardly-0.1.9.gem deleted file mode 100644 index b8e255f3e7913c50e75350aa595c688fa67e6ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27648 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 z zR-Hqo7!SvfAiSe(NY=-zw!KYgZ9eKJj}{O~CAjvz$xktFlU;-3q`s02^aM#LV7>Z6 z-IYY?EUBulUer-A9wD2XwoV%d<&6E6Yo}*W*5WE(Xu(K*^W|8N@w8F&y1ULx4e!mY za@o&pe%sD};RcHqa_pWPUo&t8KbZ<>_{g#}mkHq0>1T7>^Xglr(OTNM4e4A_Z4)!n z>H9z>f)vD!XwW4cjG2uxOJ_H;WQI)p$-hTB6JEvLe^`ZwmJCDgTaGI?)1t~$bgkb| zbyY1?#%+Vxf+t8p$K;u(a~UOL_9Oz%HKR+pX2x>nOjRB4fMb`EB`a7He&f;#EaI*t z*BB4T28wy4MbvuKE#j=PqRl`RGlAF3XC)xU@lFV5*pxZK*I(_z1!`V&(F)GxLoRq8 zVg+dzl>Bg!)ZH#&y-u^9Kc5z@>o+K()z1rujR>7Y8l!74^jA0u@jLfl*0P;_P(|df zw?oMX2?Q1lKq?iM61XsM^0Q1c~RagvQA&_*jjL51EPFk;U-e!k|xQsa2)vbH>a#XXwQG7G@Cq~ zC!1sHs?%H%mSlF}rD3Yb;82T<5UDV~nRk$~tswgxlWQ)49iP(wln!0rbyb2PAytASOLl@SxXyn>Z2GDwA zO~`+8w}^DB8I+YwF=yB${%F9WL6QnWn5d~OVINd&4W}a?wY|PRkiL}C?{nTtEF{i| z=VhN!LbDjk&8&rVoxB-Q-L~9Jg80f~r8*^N7Bef48`Jc@!WS7wKF@k>e?0xj>GHwf z1^)eWi)RuNSfQ@h9uhAMMbAjd2Q|Y@$NEBti4Som9#Z4&$L>>ZiHI02Pt_zxsi}g| zPD00j3cBBmiA3`1x6?+zc<|8qo}&IdAawgno?pFy@Y5z*QSN5c&Dh%Eo0eseNk_+e z3t+WZ5OZ18!%x>R$7vM^Qmzg^2_G|Je0s3n(@nNJBT>lmqxH_r+4`<)@Ea~NLn!S2oMGndCa^kaUHwL{=v#g@Jpp1~Hapf)OK%@mj3H_bWzY<}uPbx`-x5P$zXoN=<1{&rDjC3$xPF-3S zbm@9nd>heRdovQ5hO8FcDO6T|mT!Ksz_S(?DvVIvBM1&?N^kOK2@(G)#MFVzuP5m; z{?=!{G`nFyXAfqSuMSk>l%;8SC%;wG%lukfA+fewK`k%=-C02aRyRUI^K74u&lN35 zGT}q~_q0U+{XL_ERe+;7yi=w&`*O$$z2p=KhoZ=3_{}jyM^XWr}A44`J;g^l(Tm& z%{NsQ2A@WNg^hcrYM*$LBv~*75!CTsZM4Pd$P@6^rNo(L&M}3az%sh}>)e$_r3Puo z3TVji16^KrmH)!sP=-B`x;{Oe8^9K-Z=LU;%*KiNQ2N8Z3ia_c`))&`LMxwzd+clQ!pEaK;h^n($CL~IH z3ck9HEI%WNugst0#3+X&=^Z~A;UAY}=_bIs`}E0yG3H{Okr#YCZ?qOlrgU{(uC zE1=TSut6dGvI8kX@eF*QNj7Iti z{Leuw-teQrh_oCf&h7M4mMTR9nRHzpIaCwL__x_y};cLBUJaiDnc z`;E~Je$IjvPWO`TX)v{YEKauz31iJz7%1sDR3xEV?`s9luXft9?DaE!8Pj3y8Xvfv zK=8$6^dCgj`*z|JzJlF+KXAoRV*Kd&H0zlBq&XXfknMOuEXdDx;v{9>YZ;STx~{yT%Bw7EV1gL+pA0`Xd0^<#tmax z)*m=rqYT^I3{NANx_eboE4-N-6HRLldlLvhu9l|{xqH|2uGoAvgseoxRd6Sne4e1^ z*XdUw&3XR>l_Sw3J09Ee&RWjb1&?PLgfsHjD;jCOt%1~Mw8)-%3HNE0vc)33Bj487 zcsn^2l|-$PQlJ~>&`fr+Nu@A?$*Vd%p<)TFlo=ds!Bs6An=LQWL&COf%%YZyPT>bIeH*Dpo z%wB3uf^nC%tq~>GphF|+2 zuSr2iA2Uo5tDj@XuZF(Obz7C*rvt4sh=i#Hx$4+6@5HEQ0br z5_;Y=eYTzDY~{mRe=T9Uc`Mqe1V(&o#Y*>Yqs{m$_m+F^h;uf*N|^~?pm`}5ZdDp` z=wk?i{;x^&0A6&CpX8#hy5yqvP7Oi#no^0; zMR6iE$UMwD6S`m}PvA;IInEvN6hJY!!53or$vVLq%ftdX-U3~>ZzJK17!UP6Yh?DB zLE|-S`c$6iWza8{5HMG@8!zGUpFaEMdbiRRt9W_q*k3jHYH(Ta8z})-jf3cs+N}x2 z5S{T-Bih#Zp0l)(ttnC4Lfk+K?bvoi$k^15?c5U+xN0`-d;a=%1bw0aReG@n=MS@p z3a8rP0A>*I;XH<_En~vRZ1tAd9bP7@NfMK#1fh}LpG1_*HKvl@U`fzLEDfnnC%;5z zQ_DMZUSN$FGLk!FG)St5wD$L#6*j`BwdJGdcgr}{6;hh@S9W6RAr~&~Q8K1MX0;z&) zHV$ObI(sBrhy-KoJAF$}xCWVraV{IalsoevTU|3xC#OFFTzBoWFJcZWCe2Ug5hFJr zBo9tWIX%`J&n8vq*2=v7PAB9lwMDzzU8v2_vc=XXdK-Y+Vl<)+#8%4*$sSo;j%EYj(HzAM~-%rYDHyHmH7mXsQ!s$mfRsc zbXT?S5KOo1>afhn$LWW2qJw?GScI{rw)sh_*Kfn=U6tHVb7*(@lV6~;#)%wWPy*wA z@n26kfS66Kp3XNcv`XT+Q z$tv@TPMB%--DoM;C@}oDE5kmT3!T6PXYm!FlPC2#6RWj3Zrx)kxpW8@AM`3z_(8?E z+RwytjR(^Im}+rTgp*i_PSu{IKW(`VkVRMQ{(`_#qKLRn9pGu!k{#e;^ob_2Bk4;6 zzpopZZw2$x%9zc_PZ9KYu4pRqzJ<`9mWRqs?zTN%N)V-qANcr1_(lGk3Gv_j2O&P;|L`CFCmzTD<3FqzXm}in z5P!HZRQK7;WbT75HilCY=#IFx>|kAV=9CeGoteGl(m7(M$A5nZsS6;e&`haCK{F4#H*sTMc1%(iO8>cUiUo9ZJb<0u8sz<&^bNE%l@pAiCE*n@{3 zQx`EvWI)wZ``lfSSVCdkL$R!dXh}t*E=Nf_RN4{iC!Saj&&?_$=9y!+6{iEvi!FTF zapn7g7M`c^8$kn#ZR|ahkq;f+dRSp?EToU_@=aDCy4YG7s_pubkHN@XWqq(7M-J*= zMbh{4b|7+xU*DR*9Pb<^a}tqE7Cc8t(PkstkyoRMO;2nbEr%P@6T$EgRPP8$)Gim` zjtJTO!o-J;8F?Hh8c^}%FTobVH%?Qpwk;`IezuJUKaZ{(~? z0oRMs`aXN{+gS!DSzG0mtWB*33cV6^@tl?E5~VP4`qF;?&TIRbLFur|7P>rIB?2cl zXG!<0HT~MFowT1~^=BVm*+imJFeLAnZBoy?>lt4f@V?-Ygh37k}MCkVE?A^~G~;(LIR0cKZD8cJjIB zk-w;Tp8?{-@^Lj+xoqAKKUHh#$$%|+pQvc&t_GXebIsZ%_%8%4mfvE((PY36PAgrf z;&4vYYd8&dwje1XzI&j!(xs07L4kT^;K%FrqDi#)%3(ch;MAe;7X60I=G3w-N=)z+ zz&m$(BQ5>);ziSLli_ukIa_Jb4N5WKRYvgR^7r%Ktm=;==jXAO2B1jTsCJORP2)s$ z3wO-vtElmxJZj4(&y~EgjA}2)yPuzv+B3}N{r&3Nj(zMV@fyBS#>Y4=YVTfZ*Rbs) z$nP|t>@Cmy%k3DVmBVClLa8I5#~AT8_2SyE+(oX)wehL;LW7597sT1?hxfpZJXO2s z{KASx>J3sOiDP4OcU%l-Zy^yl5|^Z>2UQ&>q2B(JSc^xS+?g}S7jgP-@S1O?+X4xM zc31cxlBzvS52(G5TsPI2b5liHtU1|m0DUfV{1M_wvMC$qbWcscO5>WMUXg46Mf<= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Jeff Patmon","Gavin Todes","Paul Schreiber"] s.date = %q{2010-11-18} From d0acb757fcf170b5f90dd9a1a2b5be1a4513ec76 Mon Sep 17 00:00:00 2001 From: Paul Schreiber Date: Sat, 3 Sep 2011 01:48:07 -0400 Subject: [PATCH 11/13] Added suppress_duplicate_warnings_for option --- CHANGELOG.rdoc | 4 ++++ README.rdoc | 15 +++++++++++++++ Rakefile | 2 +- lib/wizardly/wizard/configuration.rb | 5 +++-- lib/wizardly/wizard/configuration/methods.rb | 17 ++++++++++++++++- ps-wizardly.gemspec | 2 +- 6 files changed, 40 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index f8cff46..932996b 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -40,3 +40,7 @@ * fixed deprecation warnings on #returning calls (thanks, Aaron Todd) * added support for accepts_nested_attributes_for + +* 0.1.11/2011-09-03 + +* added suppress_duplicate_warnings_for option diff --git a/README.rdoc b/README.rdoc index 81e8805..f68a057 100644 --- a/README.rdoc +++ b/README.rdoc @@ -205,6 +205,7 @@ Here's a list of options for the +act_wizardly_for+ controller macro :mask_fields => [:password, :password_confirmation] (by default) :persist_model => {:per_page|:once} :form_data => {:session|:sandbox} + :suppress_duplicate_warnings_for => [:foo, :bar] Setting the :skip option to +true+ tells the scaffold helpers to include a skip button on each page. The :cancel option set to +false+ removes the 'cancel' button from the wizard views. @@ -336,6 +337,20 @@ controller variables and methods including the model instance, controller method like +redirect_to+, and controller variables like params, request, response and session. The model instance variable is available for all action callback macros. +==== Suppressing Unique Key violation errors + +Because the wizard saves automatically at each step, you may run into uncaught ActiveRecord::StatementInvalid exceptions which you cannot catch with a begin/rescue/end block. + +The errors would look like this: + + Mysql2::Error: Duplicate entry '' for key 'index_foos_on_bar': UPDATE `foos` SET `updated_at` = '2011-09-02 16:56:24', `bar` = '' WHERE `id` = 12345) + +To prevent crashes, list the columns with unique key constrainst on them. For example: + + :suppress_duplicate_warnings_for => [:foo, :bar] + +Note that this will not work if you have a nonstandard table or index name. + ==== The Wizard's Action Request Cycle The wizard page is first requested through a GET to an action. In this GET request, diff --git a/Rakefile b/Rakefile index b386231..f6946f4 100644 --- a/Rakefile +++ b/Rakefile @@ -14,7 +14,7 @@ require 'fileutils' spec = Gem::Specification.new do |s| s.name = 'wizardly' - s.version = '0.1.10' + s.version = '0.1.11' s.platform = Gem::Platform::RUBY s.description = 'Create wizards from any model in three steps' s.summary = 'Produces controllers and wizard scaffolding for models with validation_groups' diff --git a/lib/wizardly/wizard/configuration.rb b/lib/wizardly/wizard/configuration.rb index 1334a69..4d4191c 100644 --- a/lib/wizardly/wizard/configuration.rb +++ b/lib/wizardly/wizard/configuration.rb @@ -8,7 +8,7 @@ module Wizardly module Wizard class Configuration include TextHelpers - attr_reader :pages, :completed_redirect, :canceled_redirect, :controller_path, :controller_class_name, :controller_name, :page_order + attr_reader :pages, :completed_redirect, :canceled_redirect, :controller_path, :controller_class_name, :controller_name, :page_order, :suppress_duplicate_warnings_for #enum_attr :persistance, %w(sandbox session database) @@ -22,6 +22,7 @@ def initialize(controller, opts) #completed_redirect = nil, canceled_redirect = @include_skip_button = opts[:skip] || opts[:allow_skip] || opts[:allow_skipping] || false @include_cancel_button = opts.key?(:cancel) ? opts[:cancel] : true @guard_entry = opts.key?(:guard) ? opts[:guard] : true + @suppress_duplicate_warnings_for = opts.key?(:suppress_duplicate_warnings_for) ? opts[:suppress_duplicate_warnings_for] : [] @password_fields = opts[:mask_fields] || opts[:mask_passwords] || [:password, :password_confirmation] @persist_model = opts[:persist_model] || :per_page @form_data = opts[:form_data] || :session @@ -40,7 +41,7 @@ def model; @wizard_model_sym; end def model_instance_variable; "@#{@wizard_model_sym.to_s}"; end def model_class_name; @wizard_model_class_name; end def model_const; @wizard_model_const; end - + def first_page?(name); @page_order.first == name; end def last_page?(name); @page_order.last == name; end def next_page(name) diff --git a/lib/wizardly/wizard/configuration/methods.rb b/lib/wizardly/wizard/configuration/methods.rb index b4aa276..8a815dd 100644 --- a/lib/wizardly/wizard/configuration/methods.rb +++ b/lib/wizardly/wizard/configuration/methods.rb @@ -147,7 +147,22 @@ def #{page.name} mb << <<-ENSURE ensure - _preserve_wizard_model + begin + _preserve_wizard_model + ## + ## If @suppress_duplicate_warnings_for is set, you can suppress + ## warnings caused by a unique key violation + rescue ActiveRecord::StatementInvalid => e + matched = false + if !wizard_config.suppress_duplicate_warnings_for.empty? and e.to_s =~ /Mysql2?::Error: Duplicate/ + wizard_config.suppress_duplicate_warnings_for.each do |field| + if e.to_s =~ /index_#{self.model.to_s.pluralize}_on_\#{field}/ + matched = true + end + end # each + end + raise e if matched == false + end end end ENSURE diff --git a/ps-wizardly.gemspec b/ps-wizardly.gemspec index d1a2286..e7bd40c 100644 --- a/ps-wizardly.gemspec +++ b/ps-wizardly.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |s| s.name = %q{ps-wizardly} - s.version = "0.1.10" + s.version = "0.1.11" s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Jeff Patmon","Gavin Todes","Paul Schreiber"] s.date = %q{2010-11-18} From 8cebcc6a2591b542d51e89b07ff0284aee423795 Mon Sep 17 00:00:00 2001 From: Paul Schreiber Date: Sun, 9 Oct 2011 23:05:22 -0400 Subject: [PATCH 12/13] updated read me with details about suppress_duplicate_warnings_for requirements --- README.rdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rdoc b/README.rdoc index f68a057..10c3c63 100644 --- a/README.rdoc +++ b/README.rdoc @@ -349,7 +349,7 @@ To prevent crashes, list the columns with unique key constrainst on them. For ex :suppress_duplicate_warnings_for => [:foo, :bar] -Note that this will not work if you have a nonstandard table or index name. +Note that this will not work if you have a nonstandard table or index name. This requires MySQL 5.1 or newer (5.0.xx and older use ER_DUP_ENTRY instead of ER_DUP_ENTRY_WITH_KEY_NAME). ==== The Wizard's Action Request Cycle From a31c6d695a620330a1acdbf47bb4822f05159322 Mon Sep 17 00:00:00 2001 From: Paul Schreiber Date: Tue, 6 Mar 2012 10:54:23 -0500 Subject: [PATCH 13/13] 0.1.12: suppress_duplicate_warnings_for now uses a hash instead of an array, allowing you to specify table and column names --- CHANGELOG.rdoc | 4 ++++ README.rdoc | 6 +++--- Rakefile | 2 +- lib/wizardly/wizard/configuration/methods.rb | 4 ++-- ps-wizardly.gemspec | 4 ++-- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index 932996b..0d14e37 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -44,3 +44,7 @@ * 0.1.11/2011-09-03 * added suppress_duplicate_warnings_for option + +* 0.1.12/2012-03-06 + +* suppress_duplicate_warnings_for now takes a hash of {:table => :column} diff --git a/README.rdoc b/README.rdoc index 10c3c63..ef4ad5c 100644 --- a/README.rdoc +++ b/README.rdoc @@ -205,7 +205,7 @@ Here's a list of options for the +act_wizardly_for+ controller macro :mask_fields => [:password, :password_confirmation] (by default) :persist_model => {:per_page|:once} :form_data => {:session|:sandbox} - :suppress_duplicate_warnings_for => [:foo, :bar] + :suppress_duplicate_warnings_for => {:foo => :bar, :animals => :fish} Setting the :skip option to +true+ tells the scaffold helpers to include a skip button on each page. The :cancel option set to +false+ removes the 'cancel' button from the wizard views. @@ -343,11 +343,11 @@ Because the wizard saves automatically at each step, you may run into uncaught A The errors would look like this: - Mysql2::Error: Duplicate entry '' for key 'index_foos_on_bar': UPDATE `foos` SET `updated_at` = '2011-09-02 16:56:24', `bar` = '' WHERE `id` = 12345) + Mysql2::Error: Duplicate entry '' for key 'index_foo_on_bar': UPDATE `foo` SET `updated_at` = '2011-09-02 16:56:24', `bar` = '' WHERE `id` = 12345) To prevent crashes, list the columns with unique key constrainst on them. For example: - :suppress_duplicate_warnings_for => [:foo, :bar] + :suppress_duplicate_warnings_for => {:foo => :bar, :animals => :fish} Note that this will not work if you have a nonstandard table or index name. This requires MySQL 5.1 or newer (5.0.xx and older use ER_DUP_ENTRY instead of ER_DUP_ENTRY_WITH_KEY_NAME). diff --git a/Rakefile b/Rakefile index f6946f4..e68115d 100644 --- a/Rakefile +++ b/Rakefile @@ -14,7 +14,7 @@ require 'fileutils' spec = Gem::Specification.new do |s| s.name = 'wizardly' - s.version = '0.1.11' + s.version = '0.1.12' s.platform = Gem::Platform::RUBY s.description = 'Create wizards from any model in three steps' s.summary = 'Produces controllers and wizard scaffolding for models with validation_groups' diff --git a/lib/wizardly/wizard/configuration/methods.rb b/lib/wizardly/wizard/configuration/methods.rb index 8a815dd..1c73ff7 100644 --- a/lib/wizardly/wizard/configuration/methods.rb +++ b/lib/wizardly/wizard/configuration/methods.rb @@ -155,8 +155,8 @@ def #{page.name} rescue ActiveRecord::StatementInvalid => e matched = false if !wizard_config.suppress_duplicate_warnings_for.empty? and e.to_s =~ /Mysql2?::Error: Duplicate/ - wizard_config.suppress_duplicate_warnings_for.each do |field| - if e.to_s =~ /index_#{self.model.to_s.pluralize}_on_\#{field}/ + wizard_config.suppress_duplicate_warnings_for.each_pair do |table, column| + if e.to_s =~ /index_\#{table}_on_\#{column}/ matched = true end end # each diff --git a/ps-wizardly.gemspec b/ps-wizardly.gemspec index e7bd40c..b01625c 100644 --- a/ps-wizardly.gemspec +++ b/ps-wizardly.gemspec @@ -2,10 +2,10 @@ Gem::Specification.new do |s| s.name = %q{ps-wizardly} - s.version = "0.1.11" + s.version = "0.1.12" s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Jeff Patmon","Gavin Todes","Paul Schreiber"] - s.date = %q{2010-11-18} + s.date = %q{2012-03-06} s.description = %q{Create wizards from any model in three steps. Slightly tweaked version of jeffp's gem to fix a deprecated method error'} s.email = %q{paulschreiber@gmail.com} s.files = ["lib/generators", "lib/wizardly.rb", "lib/validation_group.rb", "lib/jeffp-wizardly.rb", "lib/wizardly", "lib/wizardly/wizard.rb", "lib/wizardly/wizard", "lib/wizardly/wizard/page.rb", "lib/wizardly/wizard/configuration.rb", "lib/wizardly/wizard/button.rb", "lib/wizardly/wizard/utils.rb", "lib/wizardly/wizard/dsl.rb", "lib/wizardly/wizard/configuration", "lib/wizardly/wizard/configuration/methods.rb", "lib/wizardly/wizard/text_helpers.rb", "lib/wizardly/action_controller.rb", "rails_generators/wizardly_app", "rails_generators/wizardly_app/USAGE", "rails_generators/wizardly_app/wizardly_app_generator.rb", "rails_generators/wizardly_app/templates", "rails_generators/wizardly_app/templates/wizardly.rake", "rails_generators/wizardly_scaffold", "rails_generators/wizardly_scaffold/wizardly_scaffold_generator.rb", "rails_generators/wizardly_scaffold/USAGE", "rails_generators/wizardly_scaffold/templates", "rails_generators/wizardly_scaffold/templates/style.css", "rails_generators/wizardly_scaffold/templates/form.html.haml.erb", "rails_generators/wizardly_scaffold/templates/form.html.erb", "rails_generators/wizardly_scaffold/templates/layout.html.haml.erb", "rails_generators/wizardly_scaffold/templates/layout.html.erb", "rails_generators/wizardly_scaffold/templates/images", "rails_generators/wizardly_scaffold/templates/images/next.png", "rails_generators/wizardly_scaffold/templates/images/finish.png", "rails_generators/wizardly_scaffold/templates/images/back.png", "rails_generators/wizardly_scaffold/templates/images/cancel.png", "rails_generators/wizardly_scaffold/templates/images/skip.png", "rails_generators/wizardly_scaffold/templates/helper.rb.erb", "rails_generators/wizardly_controller", "rails_generators/wizardly_controller/USAGE", "rails_generators/wizardly_controller/wizardly_controller_generator.rb", "rails_generators/wizardly_controller/templates", "rails_generators/wizardly_controller/templates/controller.rb.erb", "rails_generators/wizardly_controller/templates/helper.rb.erb", "CHANGELOG.rdoc", "init.rb", "LICENSE", "README.rdoc"]