Class: Rsodx::Cli::GenerateInteractor

Inherits:
Object
  • Object
show all
Defined in:
lib/rsodx/cli/generate_interactor.rb

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ GenerateInteractor

Returns a new instance of GenerateInteractor.



4
5
6
7
# File 'lib/rsodx/cli/generate_interactor.rb', line 4

def initialize(name)
  @name = name
  @file_name = File.join("app/interactors", snake_case(name) + ".rb")
end

Instance Method Details

#contentObject



15
16
17
18
19
20
21
22
23
# File 'lib/rsodx/cli/generate_interactor.rb', line 15

def content
  <<~RUBY
  class #{@name} < AppInteractor
    def call
      # implement logic here
    end
  end
  RUBY
end

#createObject



9
10
11
12
13
# File 'lib/rsodx/cli/generate_interactor.rb', line 9

def create
  puts "📦 Creating interactor: #{@file_name}"
  FileUtils.mkdir_p("app/interactors")
  File.write(@file_name, content)
end

#snake_case(str) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/rsodx/cli/generate_interactor.rb', line 25

def snake_case(str)
  str.gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    tr("-", "_").
    downcase
end