rosette-proj/rosette-core

View on GitHub
lib/rosette/tms/repository.rb

Summary

Maintainability
A
0 mins
Test Coverage
# encoding: UTF-8

module Rosette
  module Tms
    class Repository
      # Creates a new instance of this repository.
      #
      # @param [Object] configurator The implementation-specific configuration
      #   object for this repository.
      # @return [Repository]
      def initialize(configurator)
      end

      # Retrieves a list of translations for the given phrases.
      #
      # @param [Locale] locale The locale of the translations to retrieve.
      # @param [Array<Phrase>] phrases The list of phrases to retrieve
      #   translations for.
      # @return [Array<String>] an array of translations (note that the array
      #   contains strings, not [Translation] instances). The array may also
      #   contain +nil+ entries where translations could not be found.
      def lookup_translations(locale, phrases)
        raise NotImplementedError,
          'expected to be implemented in derived classes'
      end

      # Retrieves a single translation for the given phrase.
      #
      # @param [Locale] locale The locale of the translation to retrieve.
      # @param [Phrase] phrase The phrase to retrieve the translation for.
      # @return [String] the translation or nil of one cannot be found.
      def lookup_translation(locale, phrase)
        raise NotImplementedError,
          'expected to be implemented in derived classes'
      end

      # Publishes a list of phrases in the repository. For web-based translation
      # management systems, this probably means uploading phrases to be
      # translated over HTTP.
      #
      # @param [Array<Phrase>] phrases The list of phrases to store.
      # @param [String] commit_id The commit id to associate the phrases with.
      # @return [void]
      def store_phrases(phrases, commit_id)
        raise NotImplementedError,
          'expected to be implemented in derived classes'
      end

      # Publishes a phrase in the repository. For web-based translation
      # management systems, this probably means uploading the phrase over HTTP.
      #
      # @param [Phrase] phrase The phrase to store.
      # @param [String] commit_id The commit id to associate the phrase with.
      # @return [void]
      def store_phrase(phrase, commit_id)
        raise NotImplementedError,
          'expected to be implemented in derived classes'
      end

      # Calculates a single unique value for the phrases and translations
      # associated with a given commit id. Often this is calculated using a
      # one-way hash like MD5 or SHA1. Checksum values can be compared to
      # determine when translations for the given commit id have changed.
      #
      # @param [Locale] locale The locale to calculate the checksum for.
      # @param [String] commit_id The commit id that contains the phrases and
      #   translations to calculate the checksum for.
      # @return [String] the calculated checksum value
      def checksum_for(locale, commit_id)
        raise NotImplementedError,
          'expected to be implemented in derived classes'
      end

      # Collects and calculates status information for the phrases contained in
      # the given commit as well as their translations per locale.
      #
      # @param [String] commit_id The commit id to calculate the status for.
      # @return [TranslationStatus]
      def status(commit_id)
        raise NotImplementedError,
          'expected to be implemented in derived classes'
      end

      # Signals the repository to perform any cleanup tasks that may be required
      # for the given commit once it's been fully processed.
      #
      # @param [String] commit_id
      def finalize(commit_id)
        raise NotImplementedError,
          'expected to be implemented in derived classes'
      end

    end
  end
end