Class: Shhh::App::NLP::Translator

Inherits:
Object
  • Object
show all
Defined in:
lib/shhh/app/nlp/translator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv) ⇒ Translator

Returns a new instance of Translator.



9
10
11
12
13
# File 'lib/shhh/app/nlp/translator.rb', line 9

def initialize(argv)
  self.argv            = argv
  self.opts            = CLI.new(%w(-E)).opts.to_hash
  self.translated_argv = []
end

Instance Attribute Details

#argvObject

Returns the value of attribute argv.



7
8
9
# File 'lib/shhh/app/nlp/translator.rb', line 7

def argv
  @argv
end

#optsObject

Returns the value of attribute opts.



7
8
9
# File 'lib/shhh/app/nlp/translator.rb', line 7

def opts
  @opts
end

#translated_argvObject

Returns the value of attribute translated_argv.



7
8
9
# File 'lib/shhh/app/nlp/translator.rb', line 7

def translated_argv
  @translated_argv
end

Instance Method Details

#andObject Also known as: application



47
48
49
50
51
52
53
54
# File 'lib/shhh/app/nlp/translator.rb', line 47

def and
  translate if translated_argv.empty?
  if self.translated_argv.include?('--verbose')
    STDERR.puts 'Original arguments: '.dark + "#{argv.join(' ').green}"
    STDERR.puts '   Translated argv: '.dark + "#{translated_argv.join(' ').blue}"
  end
  ::Shhh::App::CLI.new(self.translated_argv)
end

#dictObject



15
16
17
# File 'lib/shhh/app/nlp/translator.rb', line 15

def dict
  ::Shhh::App::NLP::Constants::DICTIONARY
end

#strippedObject



19
20
21
# File 'lib/shhh/app/nlp/translator.rb', line 19

def stripped
  ::Shhh::App::NLP::Constants::STRIPPED
end

#translateObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/shhh/app/nlp/translator.rb', line 23

def translate
  self.translated_argv = argv.map do |value|
    nlp_argument = value.to_sym
    arg = nil
    arg ||= dict.keys.find do |key|
      dict[key].include?(nlp_argument) || key == nlp_argument
    end
    arg ||= nlp_argument

    if stripped.include?(arg)
      # nada
    elsif opts.to_hash.key?(arg)
      '--' + "#{arg.to_s.gsub(/_/, '-')}"
    else
      arg.to_s
    end
  end.compact

  counts = {}
  translated_argv.each{ |arg| counts.key?(arg) ? counts[arg] += 1 : counts[arg] = 1 }
  translated_argv.delete_if{ |arg| counts[arg] > 1 }
  self
end