class Ruboty::Handlers::Lokalise

Public Instance Methods

translation_stats(message) click to toggle source
# File lib/ruboty/handlers/lokalise.rb, line 12
def translation_stats(message)
  project_name = message[:project_name]
  language_iso_list = message[:language_iso_list].split(",")
  project = project_find_by_name(name: project_name)
  statistics = project.statistics

  language_text =
    statistics["languages"].map do |language|
      iso = language["language_iso"]

      unless language_iso_list.include?(iso)
        next
      end

      words_to_do_count = language['words_to_do']
      emoji_symbol = issue_status_emoji_symbol(issue_count: words_to_do_count)
      "#{iso} untranslated: #{words_to_do_count} #{emoji_symbol}"
    end.compact.join("\n")

  qa_issues_count = statistics['qa_issues_total']

  reply_messages = [
    "#{project_name} translation stats",
    "qa_issues: #{qa_issues_count} #{issue_status_emoji_symbol(issue_count: qa_issues_count)}",
    language_text,
  ]

  message.reply(reply_messages.join("\n"))
end

Private Instance Methods

client() click to toggle source
# File lib/ruboty/handlers/lokalise.rb, line 42
        def client
  @client ||= ::Lokalise.client(ENV["LOKALISE_ACCESS_TOKEN"])
end
issue_status_emoji_symbol(issue_count:) click to toggle source
# File lib/ruboty/handlers/lokalise.rb, line 52
        def issue_status_emoji_symbol(issue_count:)
  if issue_count > 0
    ":warning:"
  else
    ":ok_hand:"
  end
end
project_find_by_name(name:) click to toggle source
# File lib/ruboty/handlers/lokalise.rb, line 46
        def project_find_by_name(name:)
  client.projects.collection.find do |project|
    project.name == name
  end
end