Sha256: c1f2d1ace98d8ba348c04115625aca807208fbe7da43e2215c50a53cac4849f6

Contents?: true

Size: 1.57 KB

Versions: 7

Compression:

Stored size: 1.57 KB

Contents

module GettextI18nRails
  #write all found models/columns to a file where GetTexts ruby parser can find them
  def store_model_attributes(options)
    file = options[:to] || 'locale/model_attributes.rb'
    File.open(file,'w') do |f|
      f.puts "#DO NOT MODIFY! AUTOMATICALLY GENERATED FILE!"
      ModelAttributesFinder.new.find(options).each do |table_name,column_names|
        #model name
        model = table_name.singularize.camelcase.constantize
        f.puts("_('#{model.human_name_without_translation}')")
        
        #all columns namespaced under the model
        column_names.each do |attribute|
          translation = model.gettext_translation_for_attribute_name(attribute)
          f.puts("_('#{translation}')")
        end
      end
      f.puts "#DO NOT MODIFY! AUTOMATICALLY GENERATED FILE!"
    end
  end

  class ModelAttributesFinder
    # options:
    #   :ignore_tables => ['cars',/_settings$/,...]
    #   :ignore_columns => ['id',/_id$/,...]
    # current connection ---> {'cars'=>['model_name','type'],...}
    def find(options)
      found = Hash.new([])

      connection = ActiveRecord::Base.connection
      connection.tables.each do |table_name|
        next if ignored?(table_name,options[:ignore_tables])
        connection.columns(table_name).each do |column|
          found[table_name] += [column.name] unless ignored?(column.name,options[:ignore_columns])
        end
      end

      found
    end

    def ignored?(name,patterns)
      return false unless patterns
      patterns.detect{|p|p.to_s==name.to_s or (p.is_a?(Regexp) and name=~p)}
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
zena-1.0.0.rc2 vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/model_attributes_finder.rb
zena-1.0.0.rc1 vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/model_attributes_finder.rb
zena-1.0.0.beta3 vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/model_attributes_finder.rb
zena-1.0.0.beta2 vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/model_attributes_finder.rb
zena-1.0.0.beta1 vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/model_attributes_finder.rb
gettext_i18n_rails-0.1.3 lib/gettext_i18n_rails/model_attributes_finder.rb
gettext_i18n_rails-0.1.2 lib/gettext_i18n_rails/model_attributes_finder.rb