Reputation: 34155
Take the sample ruby code, how to rewrite/indent it so the following ruby code to make it more readable & make sure it fits in one line i.e 80-90chars?
%w(survey survey_section question_group question dependency dependency_condition answer answer_type answer_validity validation validation_condition validation_prefix validation_precludes error error_type error_level error_code style style_info style_override user user_model_name user_type).each {|m| require m }
Reading it is painful as I have long arrays like this present all over the codebase. it requires LOT of horizontal scrolling & I don't like that
Any way I can improve this?
Upvotes: 3
Views: 138
Reputation: 160571
Similar to how @derekerdmann did it, I might use:
%w[
survey survey_section question_group question
dependency dependency_condition answer answer_type
answer_validity validation validation_condition validation_prefix
validation_precludes error error_type error_level error_code
style style_info style_override user
user_model_name user_type
].each { |m| require m }
Wrapping and aligning like that is simple in Vim, using the Align plugin.
But, more likely, I'd put all the requires into a separate file and require it, much like using an include file in C to pull in a bunch of other include files. In this case, they're still being loaded, but they're out of sight. So, in a requirements.rb
file I'd have:
require 'answer'
require 'answer_type'
require 'answer_validity'
require 'dependency'
require 'dependency_condition'
require 'error'
require 'error_code'
require 'error_level'
require 'error_type'
require 'question'
require 'question_group'
require 'style'
require 'style_info'
require 'style_override'
require 'survey'
require 'survey_section'
require 'user'
require 'user_model_name'
require 'user_type'
require 'validation'
require 'validation_condition'
require 'validation_precludes'
require 'validation_prefix'
And in my main code file I'd have require_relative './requirements'
.
Alternately, I'd split the lists into a more manageable grouping, such as alphabetically:
%w[ answer answer_type answer_validity ].each { |r| require r }
%w[ dependency dependency_condition ].each { |r| require r }
%w[ error error_code error_level error_type ].each { |r| require r }
%w[ question question_group ].each { |r| require r }
%w[ style style_info style_override survey survey_section ].each { |r| require r }
%w[ user user_model_name user_type ].each { |r| require r }
%w[ validation validation_condition validation_precludes validation_prefix ].each { |r| require r }
It isn't as DRY as I'd like, but it's more organized and readable.
Upvotes: 2
Reputation: 18252
The %w
splits on whitespace, so you can insert newlines whenever you want and get the same result:
dependencies = %w(survey survey_section question_group question
dependency dependency_condition answer answer_type answer_validity
validation validation_condition validation_prefix
validation_precludes error error_type error_level error_code
style style_info style_override user user_model_name user_type)
dependencies.each {|m| require m }
Upvotes: 8