On Thu, May 28, 2009 at 01:35:11AM +0900, J Haas wrote: > On May 22, 9:01m, Roger Pack <rogerpack2... / gmail.com> wrote: > > Tony's point was that certain constructs, like case statements, won't be > > transformable into indentation only blocks. oes that make sense? > > No, it doesn't, because I don't see why case statements are not > transformable into indent-only blocks. I've _done_ them using the > quick-and-dirty hacky script and they work just fine. (In cases like > Joshua's impossible.rb I had to make a minor modification to the > script to have it inject 'end ' rather than 'end\n', but it still > worked fine.) > > Code speaks louder than words, right? Here's some real-world code... > it's application_controller.rb from the AuthLogic example (http:// > github.com/binarylogic/authlogic_example/tree): > > ----------------- > > # Filters added to this controller apply to all controllers in the > application. > # Likewise, all the methods added will be available for all > controllers. > > class ApplicationController < ActionController::Base > helper :all > helper_method :current_user_session, :current_user > filter_parameter_logging :password, :password_confirmation > > private > def current_user_session > return @current_user_session if defined?(@current_user_session) > @current_user_session = UserSession.find > end > > def current_user > return @current_user if defined?(@current_user) > @current_user = current_user_session && > current_user_session.record > end > > def require_user > unless current_user > store_location > flash[:notice] = "You must be logged in to access this page" > redirect_to new_user_session_url > return false > end > end > > def require_no_user > if current_user > store_location > flash[:notice] = "You must be logged out to access this page" > redirect_to account_url > return false > end > end > > def store_location > session[:return_to] = request.request_uri > end > > def redirect_back_or_default(default) > redirect_to(session[:return_to] || default) > session[:return_to] = nil > end > end > > ----------------- > > Nothing particularly special about this code, right? Pretty standard > Ruby, if a bit simple? 37 non-blank, non-comment lines, of which 9 > consist of the bare word "end". I defy anyone to tell me that the code > would be less readable as this: > > ----------------- > > # Filters added to this controller apply to all controllers in the > application. > # Likewise, all the methods added will be available for all > controllers. > > class ApplicationController < ActionController::Base > helper :all > helper_method :current_user_session, :current_user > filter_parameter_logging :password, :password_confirmation > > private > def current_user_session: > return @current_user_session if defined?(@current_user_session) > @current_user_session = UserSession.find > > def current_user: > return @current_user if defined?(@current_user) > @current_user = current_user_session && > current_user_session.record > > def require_user: > unless current_user: > store_location > flash[:notice] = "You must be logged in to access this page" > redirect_to new_user_session_url > return false > > def require_no_user: > if current_user: > store_location > flash[:notice] = "You must be logged out to access this page" > redirect_to account_url > return false > > def store_location: > session[:return_to] = request.request_uri > > def redirect_back_or_default(default): > redirect_to(session[:return_to] || default) > session[:return_to] = nil > I find this code less readable than the above original code with the 'end's included