Class: Scaffolder
- Inherits:
-
Object
- Object
- Scaffolder
- Defined in:
- lib/scaffold/scaffolder.rb
Constant Summary collapse
- ANY_TEMPLATE =
"any"
Class Method Summary collapse
Instance Method Summary collapse
- #as_dotted_list(indentation, items) ⇒ Object
-
#initialize(shell) ⇒ Scaffolder
constructor
A new instance of Scaffolder.
- #list_templates ⇒ Object
- #list_templates_as_dotted_list(indentation) ⇒ Object
- #scaffold(template, kata_file) ⇒ Object
- #template_path ⇒ Object
- #transform_file_content(filename) ⇒ Object
- #transform_file_name(filename) ⇒ Object
Constructor Details
#initialize(shell) ⇒ Scaffolder
Returns a new instance of Scaffolder.
8 9 10 11 12 |
# File 'lib/scaffold/scaffolder.rb', line 8 def initialize shell @shell = shell @template_machine = TextTemplateMachineFactory.create @shell @filename_formatter = FilenameFormatter.new end |
Class Method Details
.current_file ⇒ Object
71 72 73 |
# File 'lib/scaffold/scaffolder.rb', line 71 def self.current_file __FILE__ end |
Instance Method Details
#as_dotted_list(indentation, items) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/scaffold/scaffolder.rb', line 26 def as_dotted_list indentation, items indent_string = ' '*indentation grouped_items = items.group_by{|item| item.split('.').first} group_strings = grouped_items.collect{|group| group.last.join ', '} "#{indent_string}* " + group_strings.join("\n#{indent_string}* ") end |
#list_templates ⇒ Object
14 15 16 17 18 |
# File 'lib/scaffold/scaffolder.rb', line 14 def list_templates templates = @shell.real_dir_entries template_path templates.delete ANY_TEMPLATE templates.join(', ') end |
#list_templates_as_dotted_list(indentation) ⇒ Object
20 21 22 23 24 |
# File 'lib/scaffold/scaffolder.rb', line 20 def list_templates_as_dotted_list indentation templates = @shell.real_dir_entries template_path templates.delete ANY_TEMPLATE as_dotted_list indentation, templates end |
#scaffold(template, kata_file) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/scaffold/scaffolder.rb', line 33 def scaffold template, kata_file @template_machine.placeholder_values['kata_file.ext'] = kata_file @template_machine.placeholder_values['kata_file'] = Filename.new(kata_file).without_extension.to_s template = template == '???' ? ANY_TEMPLATE : template dir_path = "#{template_path}/#{template}" to_copy = @shell.real_dir_entries dir_path to_copy.each do |item| file_path = "#{dir_path}/#{item}" @shell.cp_r file_path, "." transform_file_content item transform_file_name item end end |
#template_path ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/scaffold/scaffolder.rb', line 62 def template_path file_path_elements = Scaffolder::current_file.split '/' while file_path_elements.last != 'lib' do file_path_elements.pop end file_path_elements.pop (file_path_elements << 'templates').join '/' end |
#transform_file_content(filename) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/scaffold/scaffolder.rb', line 47 def transform_file_content filename if @shell.file?(filename) content = @shell.read_file filename content = @template_machine.render content @shell.write_file filename, content end end |
#transform_file_name(filename) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/scaffold/scaffolder.rb', line 55 def transform_file_name filename new_filename = @template_machine.render filename if new_filename != filename @shell.rename filename, new_filename end end |