Sha256: 380a97466245510247203042db386fc9142410fcb6ea897943da7784d3ecab1d

Contents?: true

Size: 1.22 KB

Versions: 31

Compression:

Stored size: 1.22 KB

Contents

# frozen-string-literal: true

module Mobility
  module Plugins
    module Reader
=begin

Defines attribute reader that delegates to +Mobility::Backend#read+.

=end
      extend Plugin

      default true
      requires :backend

      initialize_hook do |*names, **|
        if options[:reader]
          names.each do |name|
            class_eval <<-EOM, __FILE__, __LINE__ + 1
              def #{name}(locale: nil, **options)
                #{Reader.setup_source}
                mobility_backends[:#{name}].read(locale, **options)
              end
            EOM
            class_eval <<-EOM, __FILE__, __LINE__ + 1
              def #{name}?(locale: nil, **options)
                #{Reader.setup_source}
                mobility_backends[:#{name}].present?(locale, **options)
              end
            EOM
          end
        end
      end

      def self.setup_source
        <<-EOL
        return super() if options[:super]
        if (locale &&= locale.to_sym)
          #{"Mobility.enforce_available_locales!(locale)" if I18n.enforce_available_locales}
          options[:locale] = true
        else
          locale = Mobility.locale
        end
        EOL
      end
    end

    register_plugin(:reader, Reader)
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
mobility-1.3.2 lib/mobility/plugins/reader.rb
mobility-1.3.1 lib/mobility/plugins/reader.rb
mobility-1.3.0 lib/mobility/plugins/reader.rb
mobility-1.3.0.rc3 lib/mobility/plugins/reader.rb
mobility-1.3.0.rc2 lib/mobility/plugins/reader.rb
mobility-1.3.0.rc1 lib/mobility/plugins/reader.rb
mobility-1.2.9 lib/mobility/plugins/reader.rb
mobility-1.2.8 lib/mobility/plugins/reader.rb
mobility-1.2.7 lib/mobility/plugins/reader.rb
mobility-1.2.6 lib/mobility/plugins/reader.rb
mobility-1.2.5 lib/mobility/plugins/reader.rb
mobility-1.2.4 lib/mobility/plugins/reader.rb
mobility-1.2.3 lib/mobility/plugins/reader.rb
mobility-1.2.2 lib/mobility/plugins/reader.rb
mobility-1.2.1 lib/mobility/plugins/reader.rb
mobility-1.2.0 lib/mobility/plugins/reader.rb
mobility-1.1.3 lib/mobility/plugins/reader.rb
mobility-1.1.2 lib/mobility/plugins/reader.rb
mobility-1.1.1 lib/mobility/plugins/reader.rb
mobility-1.1.0 lib/mobility/plugins/reader.rb