class PrettyValidation::Renderer
Attributes
table_name[R]
Public Class Methods
generate(dry_run: false)
click to toggle source
# File lib/pretty_validation/renderer.rb, line 13 def self.generate(dry_run: false) if generate?(dry_run) && !File.directory?(validations_path) FileUtils.mkdir_p validations_path end Schema.table_names.each do |t| r = new t next if r.validations.empty? r.write! if generate?(dry_run) end end
generate?(dry_run)
click to toggle source
# File lib/pretty_validation/renderer.rb, line 26 def self.generate?(dry_run) PrettyValidation.config.auto_generate && !dry_run end
new(table_name)
click to toggle source
# File lib/pretty_validation/renderer.rb, line 30 def initialize(table_name) @table_name = table_name end
validations_path()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 9 def self.validations_path File.join('app', 'validations') end
Public Instance Methods
file_name()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 50 def file_name "#{module_name.underscore}.rb" end
file_path()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 54 def file_path File.join(Renderer.validations_path, file_name) end
messages()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 66 def messages [ announce('generating'), render, announce('generated'), "\n" ].join end
module_name()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 46 def module_name "#{table_name.classify}Validation" end
render()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 34 def render @render ||= <<-EOF module #{module_name} extend ActiveSupport::Concern included do #{validations.join("\n ")} end end EOF end
validations()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 62 def validations sexy_validations + uniq_validations end
write!()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 58 def write! File.write(file_path, render) end
Private Instance Methods
announce(message)
click to toggle source
# File lib/pretty_validation/renderer.rb, line 85 def announce(message) text = "#{module_name}: #{message}" length = [0, 75 - text.length].max "== #{text} #{'=' * length}\n" end
sexy_validations()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 77 def sexy_validations Validation.sexy_validations(table_name) end
uniq_validations()
click to toggle source
# File lib/pretty_validation/renderer.rb, line 81 def uniq_validations Validation.unique_validations(table_name) end