module Decidim::Faker::Localized

A Custom Faker wrapper so we can easily generate fake data for each locale in localized attributes.

Public Class Methods

character() click to toggle source

Builds a Lorem Ipsum character.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 58
def self.character
  localized do
    ::Faker::Lorem.character
  end
end
characters(...) click to toggle source

Builds many Lorem Ipsum characters. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 67
def self.characters(...)
  localized do
    ::Faker::Lorem.characters(...)
  end
end
company() click to toggle source

Fakes a company name.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 22
def self.company
  localized do
    ::Faker::Company.name
  end
end
literal(text) click to toggle source

Sets the given text as the value for each locale.

text - The String text to set for each locale.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 132
def self.literal(text)
  Decidim.available_locales.inject({}) do |result, locale|
    result.update(locale => text)
  end.with_indifferent_access
end
localized() { || ... } click to toggle source

Runs the given block for each of the available locales in Decidim, momentarilly setting the locale to the current one.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 170
def self.localized
  *locales, last_locale = Decidim.available_locales

  value = locales.inject({}) do |result, locale|
    text = ::Faker::Base.with_locale(locale) do
      yield
    end

    result.update(locale => text)
  end.with_indifferent_access

  value.update(
    "machine_translations" => {
      last_locale => ::Faker::Base.with_locale(last_locale) { yield }
    }.with_indifferent_access
  )
end
name() click to toggle source

Fakes a person name.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 31
def self.name
  localized do
    ::Faker::Name.name
  end
end
paragraph(...) click to toggle source

Builds a paragraph with Lorem Ipsum words. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 94
def self.paragraph(...)
  localized do
    ::Faker::Lorem.paragraph(...)
  end
end
paragraphs(...) click to toggle source

Builds many paragraphs with Lorem Ipsum words. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 103
def self.paragraphs(...)
  localized do
    ::Faker::Lorem.paragraphs(...)
  end
end
prefixed(msg, locales = Decidim.available_locales) click to toggle source

Prefixes the msg for each available locale and returns as a Hash of the form `locale => prefixed_msg`.

Return a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 192
def self.prefixed(msg, locales = Decidim.available_locales)
  *all_locales, last_locale = locales
  value = all_locales.inject({}) do |result, locale|
    result.update(locale => "#{locale.to_s.upcase}: #{msg}")
  end.with_indifferent_access

  value.update(
    "machine_translations" => {
      last_locale => "#{last_locale.to_s.upcase}: #{msg}"
    }.with_indifferent_access
  )
end
question(...) click to toggle source

Builds a question with Lorem Ipsum words. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 112
def self.question(...)
  localized do
    ::Faker::Lorem.question(...)
  end
end
questions(...) click to toggle source

Builds many questions with Lorem Ipsum words. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 121
def self.questions(...)
  localized do
    ::Faker::Lorem.questions(...)
  end
end
sentence(...) click to toggle source

Builds a sentence with Lorem Ipsum words. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 76
def self.sentence(...)
  localized do
    ::Faker::Lorem.sentence(...)
  end
end
sentences(...) click to toggle source

Builds many sentences with Lorem Ipsum words. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 85
def self.sentences(...)
  localized do
    ::Faker::Lorem.sentences(...)
  end
end
word() click to toggle source

Builds a Lorem Ipsum word.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 40
def self.word
  localized do
    ::Faker::Lorem.word
  end
end
words(...) click to toggle source

Builds many Lorem Ipsum words. See Faker::Lorem for options.

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 49
def self.words(...)
  localized do
    ::Faker::Lorem.words(...)
  end
end
wrapped(before, after) { || ... } click to toggle source

Wrapps a text build by the block with some other text.

before - The String text to inject at the begining of each value. after - The String text to inject at the end of each value. block - A Block that generates a Hash with a text for each locale.

Example:

Decidim::Faker::Localized.wrapped("<p>", "</p>") do
  Decidim::Faker::Localized.sentence(5)
end

Returns a Hash with a value for each locale.

# File lib/decidim/faker/localized.rb, line 151
def self.wrapped(before, after)
  result = yield
  result.inject({}) do |wrapped, (locale, value)|
    if value.is_a?(Hash)
      final_value = value.inject({}) do |new_wrapped, (new_locale, new_value)|
        new_wrapped.update(new_locale => [before, new_value, after].join)
      end

      wrapped.update(locale => final_value)
    else
      wrapped.update(locale => [before, value, after].join)
    end
  end
end