Sha256: d7f1f0a6fd66e1a5f3bcab64ad2bbdfa52bcf98aa8f65ac601f7a4dbf4b3e693

Contents?: true

Size: 1.69 KB

Versions: 30

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: false

require_relative '../../lang/lang_factory'
require_relative '../../ai/question'

##
# BaseCodeAI class
class BaseCodeAI
  attr_reader :questions

  ##
  # Create CodeAI object from Code data
  # @param code (Code)
  def initialize(code)
    @code = code
    @lines = code.lines
    @num = 0
    @questions = []
    make_questions
  end

  ##
  # Return the name of code
  # @return String
  def name
    File.basename(@code.filename)
  end

  def process?
    @code.process?
  end

  def type
    @code.type
  end

  def filename
    @code.filename
  end

  def lines
    @code.lines
  end

  ##
  # Counter
  # @return count
  def num
    @num += 1
  end

  ##
  # Clone array
  # @param array (Array)
  # @return Array
  def clone_array(array)
    out = []
    array.each { |item| out << item.dup }
    out
  end

  ##
  # Convert an array of lines into one String
  # @param lines (Array)
  # @return String
  # rubocop:disable Style/FormatString
  def lines_to_s(lines)
    out = ''
    lines.each_with_index do |line, index|
      out << "%2d: #{line}\n" % (index + 1)
    end
    out
  end

  ##
  # Convert an array of lines into one HTML String
  # @param lines (Array)
  # @return String
  def lines_to_html(lines)
    out = ''
    lines.each_with_index do |line, index|
      out << "%2d: #{line}</br>" % (index + 1)
    end
    out
  end
  # rubocop:enable Style/FormatString

  ##
  # Make questions
  def make_questions
    list = find_make_methods
    list.each { |m| @questions += send m }
    @questions
  end

  private

  def find_make_methods
    list = public_methods.sort
    list.select! { |name| name.to_s.start_with? 'make_' }
    list.delete(:make_questions)
    list
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
asker-tool-2.6.0 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.9 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.8 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.7 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.6 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.5 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.4 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.3 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.2 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.1 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.5.0 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.4.5 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.4.4 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.4.3 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.4.2 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.4.1 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.4.0 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.3.4 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.3.3 lib/asker/ai/code/base_code_ai.rb
asker-tool-2.3.2 lib/asker/ai/code/base_code_ai.rb