class Translator::FilesListCoordinator

Public Class Methods

call(attrs = {}) click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 3
def self.call(attrs = {})
  new(attrs).call
end
new(days:) click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 7
def initialize(days:)
  @days = days
end

Public Instance Methods

allowed_products() click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 63
def allowed_products
  @allowed_products ||= YAML.safe_load(File.read("#{Rails.configuration.docs_base_path}/config/products.yml"))['products'].select { |product| product['translate'] == true }
end
allowed_tutorial_files() click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 67
def allowed_tutorial_files
  file_names = []
  tutorials_list = []

  TutorialList.all.each do |item|
    allowed_products.each do |product|
      tutorials_list << item if item.products.to_s.include?(product['path'])
    end
  end

  tutorials_list.each do |item|
    item.tutorial.prerequisites&.each do |prereq|
      file_names << prereq.path
    end

    item.tutorial.tasks&.each do |task|
      file_names << task.path
    end
  end

  file_names.uniq
end
call() click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 11
def call
  process_files(files)
end
files() click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 15
def files
  @files ||= `(git fetch origin main:main) && (git log --since="#{@days} days" --name-only --oneline --diff-filter=ACM --pretty=format: main #{Rails.configuration.docs_base_path}/_documentation/en #{Rails.configuration.docs_base_path}/_tutorials/en #{Rails.configuration.docs_base_path}/_use_cases/en) | uniq | awk 'NF'`.split("\n")
end
process_files(files) click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 19
def process_files(files)
  files.each_with_object([]) do |file, list|
    if file.include?('_documentation')
      list << file if translatable_doc_file?(file)
    elsif file.include?('_use_cases')
      list << file if translatable_use_case_file?(file)
    elsif file.include?('_tutorials')
      list << file if translatable_tutorial_file?(file)
    else
      raise ArgumentError, "The following file did not match documentation, use cases or tutorials: #{file}"
    end
  end
end
translatable_doc_file?(file) click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 33
def translatable_doc_file?(file)
  return nil unless File.exist?("#{Rails.configuration.docs_base_path}/#{file}")

  allowed_products.any? do |product|
    product['path'].include?(file.split('/')[2])
  end
end
translatable_tutorial_file?(file) click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 55
def translatable_tutorial_file?(file)
  return nil unless File.exist?("#{Rails.configuration.docs_base_path}/#{file}")

  allowed_tutorial_files.any? do |tutorial|
    tutorial.include?(file)
  end
end
translatable_use_case_file?(file) click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 41
def translatable_use_case_file?(file)
  return nil unless File.exist?("#{Rails.configuration.docs_base_path}/#{file}")

  allowed_products.any? do |product|
    use_case_product(file).include?(product['path'])
  end
end
use_case_product(file) click to toggle source
# File lib/nexmo_developer/app/services/translator/files_list_coordinator.rb, line 49
def use_case_product(file)
  @use_case_product = YAML.safe_load(File.read("#{Rails.configuration.docs_base_path}/#{file}"))['products']

  @use_case_product
end