Module: Lokalise::Utils::AttributeHelpers

Included in:
Collections::Base, Collections::Base, Resources::Base, Resources::Base
Defined in:
lib/ruby-lokalise-api/utils/attribute_helpers.rb

Constant Summary collapse

UNIFIED_RESOURCES =
%w[comment language].freeze

Instance Method Summary collapse

Instance Method Details

#attributes_for(klass) ⇒ Array<String>

Loads attributes for the given resource based on its name

Returns:



49
50
51
52
53
54
# File 'lib/ruby-lokalise-api/utils/attribute_helpers.rb', line 49

def attributes_for(klass)
  @attributes ||= YAML.load_file(File.expand_path('../data/attributes.json', __dir__)).freeze

  name = unify klass.name.snakecase
  @attributes[name]
end

#data_key_for(model_class:, plural: false, collection: false) ⇒ String

Returns the name of the API resource for the given class. Most class names correspond to resource names (eg, ‘Project`, `Team`) but some may differ (`ProjectComment` corresponds to `Comment` resource). The resource name is in lowercase, with underscores as separators. Some resources also have different pluralization rules. For example, “CustomTranslationStatus” is “CustomTranslationStatuses” (-es postfix). To address that, we try to fetch `DATA_KEY_PLURAL` set for the individual class.

Parameters:

  • model_class (String)
  • plural (Boolean) (defaults to: false)

    Should the returned value be pluralized?

Returns:



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ruby-lokalise-api/utils/attribute_helpers.rb', line 19

def data_key_for(model_class:, plural: false, collection: false)
  data_key_plural = get_key(
    name: 'DATA_KEY_PLURAL',
    model_class: model_class,
    collection: true,
    strict: true
  )

  return data_key_plural if collection && data_key_plural

  data_key = get_key name: 'DATA_KEY', model_class: model_class, collection: collection

  return data_key unless plural

  "#{data_key}s"
end

#id_key_for(model_class) ⇒ String

Returns key used to determine resource id (for example ‘user_id` or `project_id`). Most ids corresponds to resources’ class names, but some may differ (for instance, ‘Contributor` has `user_id` attribute).

Parameters:

Returns:



42
43
44
# File 'lib/ruby-lokalise-api/utils/attribute_helpers.rb', line 42

def id_key_for(model_class)
  "#{get_key(name: 'ID_KEY', model_class: model_class)}_id"
end