class Paradigm::Generators::ServiceGenerator

Constants

DOUBLE_COLON
SINGLE_COLON

Attributes

scope[R]
service[R]
service_name[R]

Public Class Methods

source_root() click to toggle source
# File lib/generators/paradigm/service_generator.rb, line 31
def self.source_root
  @source_root ||= File.expand_path('../../templates/service', __FILE__)
end

Public Instance Methods

create_service() click to toggle source
# File lib/generators/paradigm/service_generator.rb, line 35
def create_service
  @service_name = service_name

  if scoped_service_containing?(DOUBLE_COLON)
    use_scoped_templates(DOUBLE_COLON)
  elsif scoped_service_containing?(SINGLE_COLON)
    use_scoped_templates(SINGLE_COLON)
  else
    template 'service.rb',      "app/services/#{service_name.underscore}_service.rb"
    template 'service_test.rb', "test/services/#{service_name.underscore}_service_test.rb"
  end
end

Private Instance Methods

scoped_service_containing?(colon_style) click to toggle source
# File lib/generators/paradigm/service_generator.rb, line 52
def scoped_service_containing?(colon_style)
  service_name.include?(colon_style)
end
split_by_colon(colon_style) click to toggle source
# File lib/generators/paradigm/service_generator.rb, line 64
def split_by_colon(colon_style)
  service_name
    .partition(colon_style)
    .delete_if { |str| str == colon_style }
end
use_scoped_templates(colon_style) click to toggle source
# File lib/generators/paradigm/service_generator.rb, line 56
def use_scoped_templates(colon_style)
  split = split_by_colon(colon_style)
  @scope, @service_name = split[0], split[1]

  template 'nested_service.rb',      "app/services/#{scope}/#{service_name.underscore}_service.rb"
  template 'nested_service_test.rb', "test/services/#{scope}/#{service_name.underscore}_service_test.rb"
end