Class: DevSystem::ControllerGenerator

Inherits:
SimpleGenerator show all
Defined in:
lib/dev_system/subsystems/generator/generators/controller_generator.rb

Instance Attribute Summary

Attributes inherited from BaseGenerator

#menv

Attributes inherited from Liza::Controller

#menv

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SimpleGenerator

#add_unit, #add_view, #app_shell, #arg_views, #arg_views_adjacent?, #arg_views_eof?, #arg_views_nested?, #arg_views_none?, #before, before_instance_call, #before_instance_calls, before_instance_calls, #copy_examples, #copy_file, #copy_files, #create_file, #create_file_contents, #delete_file, #generate, #inform, #mapper, #pick_many_units, #puts_line, #read_file, #remove_units, #save, #set_default_views, set_default_views, #update_file, #valid_views

Methods inherited from BaseGenerator

#action_name, #after, #args, #before, #before_default, #before_input, #call, call, #command, #default_args, default_args, #default_booleans, default_booleans, default_strings, #default_strings, get_generator_signatures, #inform, #input_args, input_args, input_booleans, #input_booleans, input_strings, #input_strings, #save, #set_default_arg, set_default_arg, #set_default_boolean, set_default_boolean, #set_default_string, set_default_string, #set_input_arg, set_input_arg, set_input_boolean, #set_input_boolean, set_input_string, #set_input_string

Methods inherited from Generator

get_generator_signatures

Methods inherited from Liza::Controller

#`, `, attr_accessor, attr_reader, attr_writer, #attrs, box, #box, call, color, division, division!, division?, inherited, menv_accessor, menv_reader, menv_writer, on_connected, panel, #panel, plural, require, requirements, sh, #sh, singular, subsystem, subsystem!, subsystem?, subsystem_token, token

Methods inherited from Liza::Unit

_erbs_for, #add, add, cl, #cl, class_methods_defined, const_added, const_missing, constants_defined, define_error, descendants_select, division, erbs_available, erbs_defined, erbs_for, errors, #fetch, fetch, get, #get, instance_methods_defined, log, #log, log?, #log?, #log_array, log_array, log_hash, #log_hash, #log_level, log_level, #log_level?, log_level?, log_levels, #log_levels, #log_render_convert, #log_render_format, #log_render_in, #log_render_out, method_added, methods_defined, namespace, part, raise_error, #raise_error, reload!, #reload!, #render, #render!, #render_stack, renderable_formats_for, renderable_names, section, sections, #set, set, #settings, settings, singleton_method_added, sleep, #sleep, stick, #stick, sticks, #sticks, subclasses_select, subunits, system, #system, system?, test_class, time_diff, #time_diff

Class Method Details

.set_default_ask(ask) ⇒ Object



137
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 137

def self.set_default_ask(ask)= before_instance_call :set_default_ask, ask

.set_default_division(division) ⇒ Object



143
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 143

def self.set_default_division(division)= before_instance_call :set_default_division, division

.set_default_prefix(prefix) ⇒ Object



141
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 141

def self.set_default_prefix(prefix)= before_instance_call :set_default_prefix, prefix

.set_default_require(string) ⇒ Object



145
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 145

def self.set_default_require(string)= before_instance_call :set_default_require, string

.set_default_super(zuper) ⇒ Object



139
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 139

def self.set_default_super(zuper)= before_instance_call :set_default_super, zuper

Instance Method Details

#arg_action_namesObject



103
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 103

def arg_action_names() = @arg_action_names ||= command.simple_args_from_2

#arg_divisionObject



129
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 129

def arg_division() = @arg_division ||= command.simple_boolean(:division)

#arg_nameObject



101
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 101

def arg_name() = @arg_name ||= (name = command.simple_arg(1) until name.to_s.strip.length.positive?; name)

#arg_placeObject



105
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 105

def arg_place() = @arg_place ||= command.simple_string(:place)

#arg_place_pathObject



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 107

def arg_place_path
  @arg_place_path ||= begin
    path = 
      if available_places.key? arg_place
        msg = "the place already exists"
        available_places[arg_place]
      else
        msg = "infering the path"
        system_name, subsystem_name = arg_place.split("/")
        if subsystem_name.nil?
          App.systems_directory.join "#{system_name}_system/#{super_controller.division.plural}"
        else
          App.systems_directory.join "#{system_name}_system/subsystems/#{subsystem_name}/#{super_controller.division.plural}"
        end
      end
    log "#{msg}. #{path}"
    path
  end
end

#arg_prefixObject



131
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 131

def arg_prefix() = @arg_prefix ||= command.simple_boolean(:prefix)

#arg_requireObject



127
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 127

def arg_require() = @arg_require ||= command.simple_string(:require)

#arg_superObject



133
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 133

def arg_super() = @arg_super ||= command.simple_string(:super)

#available_placesObject



80
81
82
83
84
85
86
87
88
89
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 80

def available_places
  @available_places ||= begin
    d = super_controller.division
    directory_name = arg_division \
      ? "#{arg_name}_#{d.plural}"
      : d.plural
    log "directory_name: #{directory_name}"
    ControllerShell.places_for(d, directory_name: directory_name)
  end
end

#before_create_controllerObject



58
59
60
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 58

def before_create_controller
  # placeholder
end

#call_defaultObject

liza g controller



7
8
9
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 7

def call_default
  log stick :red, "Did you mean to generate a command instead?"
end

#controller_nameObject



66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 66

def controller_name
  @controller_name ||= begin
    name = arg_name
    
    if arg_place != "app"
      if arg_prefix
        name = "#{arg_place.split("/").first}_#{name}"
      end
    end

    name
  end
end

#create_controller {|unit, test| ... } ⇒ Object

Yields:

  • (unit, test)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 13

def create_controller(&block)
  before_create_controller
  log "super_controller: #{super_controller}"
  
  log "Determining class name..."
  @class_name = "#{controller_name.camelize}#{super_controller.division.last_namespace}"
  @class_name = "#{arg_place.split("/").first.camelize}System::#{@class_name}" unless arg_place == "app"
  log "class_name: #{@class_name}"

  unit, test = UnitHelper.new, UnitHelper.new
  log "Yielding..."
  yield unit, test

  log "Determining unit and test classes names..."
  unit_classes_names = [@class_name, super_controller.to_s]
  test_classes_names = unit_classes_names.map { "#{_1}Test" }
  log "unit_classes_names: #{unit_classes_names}"
  log "test_classes_names: #{test_classes_names}"

  log "Determining unit and test paths..."
  directory = App.root.join(arg_place_path)
  unit_path = directory.join("#{controller_name}_#{super_controller.division.singular}.rb")
  test_path = directory.join("#{controller_name}_#{super_controller.division.singular}_test.rb")
  log "unit_path: #{unit_path}"
  log "test_path: #{test_path}"

  log "Adding unit and test..."
  add_unit unit, unit_classes_names, unit_path
  add_unit test, test_classes_names, test_path

  unless arg_views_eof?
    log "Adding views..."
    arg_action_names.each do |arg|
      [unit, test].each do |u|
        u.views.each do |view|
          view_path = nil
          view_path = directory.join "#{controller_name}_#{super_controller.division.singular}#{"_test" if u == test}.rb.#{view[:name]}.#{view[:format]}.erb" if arg_views_adjacent?
          view_path = directory.join "#{controller_name}_#{super_controller.division.singular}#{"_test" if u == test}/#{view[:name]}.#{view[:format]}.erb" if arg_views_nested?
          add_view u, view, view_path if view_path
        end
      end
    end
  end
end

#requirements_to_addObject



91
92
93
94
95
96
97
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 91

def requirements_to_add
  @requirements_to_add ||= begin
    array = arg_require.to_s.split(",").map(&:strip).reject(&:empty?)
    array = [] if array == ["none"]
    array
  end
end

#set_default_ask(ask) ⇒ Object



147
148
149
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 147

def set_default_ask(ask)
  command.set_default_boolean :ask, ask
end

#set_default_division(division) ⇒ Object



161
162
163
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 161

def set_default_division(division)
  command.set_default_boolean :division, division
end

#set_default_prefix(prefix) ⇒ Object



151
152
153
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 151

def set_default_prefix(prefix)
  command.set_default_boolean :prefix, prefix
end

#set_default_require(string) ⇒ Object



165
166
167
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 165

def set_default_require(string)
  command.set_default_string :require, string    
end

#set_default_super(zuper) ⇒ Object



155
156
157
158
159
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 155

def set_default_super(zuper)
  command.set_default_string :super, zuper
  log stick :white, :red, "Checking if class exists... #{arg_super}_#{env[:generator_name]}"
  Liza.const "#{zuper}_#{env[:generator_name]}"
end

#super_controllerObject



62
63
64
# File 'lib/dev_system/subsystems/generator/generators/controller_generator.rb', line 62

def super_controller
  @super_controller ||= Liza.const "#{arg_super}_#{env[:generator_name]}"
end