acts_as_translated 0.0.2 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4d64595d0a9517ba19cc3a8265e5a9e2fe24b43
4
- data.tar.gz: 3fb8bafa1b863462ac85296e23a4cae29d330794
3
+ metadata.gz: e7bcf85b91c371dc0de79182b7cc0ae764db8be7
4
+ data.tar.gz: d4bd339971fef7736eded1b1fbaae2261e2fdd6e
5
5
  SHA512:
6
- metadata.gz: 73632959c1a3838f70486ef1b177f85393405554344a22570659d5b8ce3447e45f8d18213961f87fcc4c8786ea214f3b035b16f0a4e0c159c4c06ce2ef864894
7
- data.tar.gz: ca3a0156fab58f916eeb33626cd892a089257b36613864ee0c544f2b8a983d8013da77c971984629722cd72ab963606113ef091087a5a6ad0bab040dc29e5cb5
6
+ metadata.gz: 7daf028af2e8b1d3244fd3a6613865a0dfe70e9a92c97397cfc3ef6504f8155147ec51d6cd6ed1436ff2a606f2b89472b91819feff7e4b2be399e5689252bc15
7
+ data.tar.gz: 4f6468e62efe8b5cd2e43d6eaafaec10dbcab1db039a1fa1be8fd069654a01cc4d790230e2f443ba37f5bc6f39ab566e032b949033b638f921b208961b45e70b
data/.gitignore CHANGED
@@ -20,3 +20,4 @@ tmp
20
20
  *.o
21
21
  *.a
22
22
  mkmf.log
23
+ .ruby-version
data/README.md CHANGED
@@ -6,6 +6,7 @@ This acts_as extension allows easy attribute translation.
6
6
 
7
7
  Your migration file should look like this;
8
8
 
9
+ ```
9
10
  create_table :countries do |t|
10
11
  t.string :name_nl
11
12
  t.string :name_fr
@@ -13,36 +14,43 @@ create_table :countries do |t|
13
14
 
14
15
  t.timestamps
15
16
  end
17
+ ```
16
18
 
17
19
  Create a class;
18
20
 
21
+ ```
19
22
  class Country < ActiveRecord::Base
20
23
  acts_as_translated :name #, :default => :nl
21
24
  end
25
+ ```
22
26
 
23
27
  Use it in your views, controllers, ...
24
28
 
29
+ ```
25
30
  <% Country.all.each do |country| %>
26
31
  <%= country.name %>
27
32
  <% end %>
28
-
33
+ ```
29
34
 
30
35
  # Form Example
31
36
 
32
37
  Build a dynamic form that extends, based on the number of languages available;
33
38
 
34
- <% form_for @country do %>
39
+ ```
40
+ <%= form_for @country do %>
35
41
  ...
36
42
  <% @country.translated_fields_to_attributes.each do |attribute| %>
37
43
  <p><%= f.label attribute %><br/>
38
- <%= f.text_field attribute %></p>
44
+ <%= f.text_field attribute %></p>
39
45
  <% end %>
40
46
  ...
41
47
  <% end %>
42
-
48
+ ```
43
49
 
44
50
  # Install
45
51
 
46
52
  In your bundler Gemfile
47
53
 
48
- gem 'acts_as_translated'
54
+ ```
55
+ gem 'acts_as_translated'
56
+ ```
data/Rakefile CHANGED
@@ -1,2 +1,12 @@
1
+ #!/usr/bin/env rake
1
2
  require "bundler/gem_tasks"
2
3
 
4
+ require 'rake/testtask'
5
+
6
+ desc "Run the tests."
7
+ task :test do
8
+ $: << "lib" << "test"
9
+ Dir["test/*_test.rb"].each { |f| require f[5..-4] }
10
+ end
11
+
12
+ task :default => :test
@@ -1,6 +1,5 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
2
+ $:.push File.expand_path("../lib", __FILE__)
4
3
  require 'acts_as_translated/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
@@ -9,14 +8,18 @@ Gem::Specification.new do |spec|
9
8
  spec.authors = ["Stijn Mathysen"]
10
9
  spec.email = ["stijn@skylight.be"]
11
10
  spec.summary = %q{This acts_as extension allows easy attribute translation.}
12
- spec.homepage = ""
11
+ spec.homepage = "https://github.com/stijnster/acts_as_translated"
13
12
  spec.license = "MIT"
13
+ spec.description = %q{ActsAsTranslated is an acts_as for ActiveRecord that allows easy attribute translation.}
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0")
16
16
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.6"
21
- spec.add_development_dependency "rake"
20
+ spec.add_dependency 'activerecord', '>= 3.0.0'
21
+
22
+ spec.add_development_dependency 'sqlite3', '~> 0'
23
+ spec.add_development_dependency 'rake', '~> 0'
24
+ spec.add_development_dependency 'minitest', '~> 5.8'
22
25
  end
@@ -1,16 +1,22 @@
1
- require "acts_as_translated/version"
1
+ require 'acts_as_translated/version'
2
+
2
3
 
3
4
  module ActsAsTranslated
5
+
6
+ require 'acts_as_translated/railtie' if defined? Rails::Railtie
7
+
4
8
  def self.included(base)
9
+
5
10
  class << base
6
11
  attr_accessor :language
7
12
  attr_accessor :translated_fields
8
13
  end
9
-
14
+
10
15
  base.extend(ClassMethods)
11
16
  end
12
17
 
13
18
  module ClassMethods
19
+
14
20
  def acts_as_translated(fields, options = {})
15
21
  self.language = options[:default] || 'en'
16
22
  self.translated_fields = Array.new if self.translated_fields.blank?
@@ -20,13 +26,15 @@ module ActsAsTranslated
20
26
  include InstanceMethods
21
27
  end
22
28
  end
29
+
23
30
  end
24
-
31
+
25
32
  module InstanceMethods
33
+
26
34
  def translated_field_exists(field)
27
35
  self.class.translated_fields.member?(field.to_sym) && attributes.member?("#{field}_#{self.class.language}")
28
36
  end
29
-
37
+
30
38
  def translated_fields_to_attributes
31
39
  result = Array.new
32
40
  self.class.translated_fields.each do |field|
@@ -36,22 +44,18 @@ module ActsAsTranslated
36
44
  end
37
45
  end
38
46
  end
39
-
47
+
40
48
  result.sort
41
49
  end
42
-
50
+
43
51
  def respond_to?(field, include_priv = false)
44
52
  return true if translated_field_exists(field)
45
53
  super
46
54
  end
47
-
55
+
48
56
  def method_missing(field, *args)
49
57
  return self["#{field}_#{self.class.language}".to_sym] if translated_field_exists(field)
50
58
  super
51
59
  end
52
60
  end
53
- end
54
-
55
- class ActiveRecord::Base
56
- include ActsAsTranslated
57
61
  end
@@ -0,0 +1,13 @@
1
+ module ActsAsTranslated
2
+
3
+ class Railtie < Rails::Railtie
4
+
5
+ initializer 'acts_as_translated.insert_into_active_record' do
6
+ ActiveSupport.on_load :active_record do
7
+ ActiveRecord::Base.send(:include, ActsAsTranslated)
8
+ end
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -1,3 +1,5 @@
1
1
  module ActsAsTranslated
2
- VERSION = '0.0.2'
2
+
3
+ VERSION = '0.0.5'
4
+
3
5
  end
@@ -1,31 +1,41 @@
1
- require 'test/unit'
2
-
3
- require 'rubygems'
4
- gem 'activerecord', '>= 1.15.4.7794'
1
+ require 'minitest/autorun'
2
+ require 'minitest/pride'
5
3
  require 'active_record'
4
+ require 'acts_as_translated'
5
+
6
+ ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
6
7
 
7
- require "#{File.dirname(__FILE__)}/../init"
8
+ def capture_stdout(&block)
9
+ real_stdout = $stdout
8
10
 
9
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
11
+ $stdout = StringIO.new
12
+ yield
13
+ $stdout.string
14
+ ensure
15
+ $stdout = real_stdout
16
+ end
10
17
 
11
18
  def setup_db
12
- ActiveRecord::Schema.define(:version => 1) do
13
- create_table :countries do |t|
14
- t.column :name_nl, :string
15
- t.column :name_fr, :string
16
- t.column :name_en, :string
17
- t.column :description_nl, :text
18
- t.column :description_fr, :text
19
- t.column :description_en, :text
20
- t.column :created_at, :datetime
21
- t.column :updated_at, :datetime
22
- t.column :position, :integer
19
+ capture_stdout do
20
+ ActiveRecord::Base.logger
21
+ ActiveRecord::Schema.define(:version => 1) do
22
+ create_table :countries do |t|
23
+ t.column :name_nl, :string
24
+ t.column :name_fr, :string
25
+ t.column :name_en, :string
26
+ t.column :description_nl, :text
27
+ t.column :description_fr, :text
28
+ t.column :description_en, :text
29
+ t.column :created_at, :datetime
30
+ t.column :updated_at, :datetime
31
+ t.column :position, :integer
32
+ end
23
33
  end
24
34
  end
25
35
  end
26
36
 
27
37
  def fixtures(filename)
28
- records = YAML.load_file("#{filename}.yml")
38
+ records = YAML.load_file(File.join(__dir__, "#{filename}.yml"))
29
39
  records.each do |key, record|
30
40
  Country.create!(record)
31
41
  end
@@ -38,13 +48,16 @@ def teardown_db
38
48
  end
39
49
 
40
50
  class Country < ActiveRecord::Base
51
+ include ActsAsTranslated
52
+
41
53
  acts_as_translated :name
42
54
  acts_as_translated :description
43
-
44
- default_scope :order => 'position'
45
55
  end
46
56
 
47
- class TranslatedTest < Test::Unit::TestCase
57
+
58
+
59
+ class ActsAsTranslatedTest < Minitest::Test
60
+
48
61
  def setup
49
62
  setup_db
50
63
  fixtures :countries
@@ -54,29 +67,33 @@ class TranslatedTest < Test::Unit::TestCase
54
67
  teardown_db
55
68
  end
56
69
 
70
+ def test_version
71
+ refute_nil ActsAsTranslated::VERSION
72
+ end
73
+
57
74
  def test_fixtures
58
75
  assert_equal 2, Country.count
59
76
  assert_equal 'Belgium', Country.first.name_en
60
77
  assert_equal 'Netherlands', Country.last.name_en
61
78
  end
62
79
 
63
- def test_translated_name
80
+ def test_translated_attributes
64
81
  @belgium = Country.first
65
82
  @netherlands = Country.last
66
-
83
+
67
84
  # test default language
68
85
  assert_equal 'Belgium', @belgium.name
69
86
  assert_equal 'Netherlands', @netherlands.name
70
87
  assert_equal 'Kingdom of Belgium', @belgium.description
71
88
  assert_equal 'Kingdom of the Netherlands', @netherlands.description
72
-
89
+
73
90
  # change language to dutch
74
91
  Country.language = 'nl'
75
92
  assert_equal 'België', @belgium.name
76
93
  assert_equal 'Nederland', @netherlands.name
77
94
  assert_equal 'Koninkrijk België', @belgium.description
78
95
  assert_equal 'Koninkrijk der Nederlanden', @netherlands.description
79
-
96
+
80
97
  # change language to french
81
98
  Country.language = 'fr'
82
99
  assert_equal 'Belgique', @belgium.name
@@ -91,4 +108,14 @@ class TranslatedTest < Test::Unit::TestCase
91
108
  assert_equal 'Kingdom of Belgium', @belgium.description
92
109
  assert_equal 'Kingdom of the Netherlands', @netherlands.description
93
110
  end
111
+
112
+ def test_class_helpers
113
+ @country = Country.first
114
+
115
+ assert @country.translated_field_exists('name')
116
+ refute @country.translated_field_exists('position')
117
+
118
+ assert_equal %w(description_en description_fr description_nl name_en name_fr name_nl), @country.translated_fields_to_attributes
119
+ end
120
+
94
121
  end
@@ -6,7 +6,6 @@ belgium:
6
6
  description_fr: Royaume de Belgique
7
7
  description_en: Kingdom of Belgium
8
8
  position: 1
9
-
10
9
  holland:
11
10
  name_nl: Nederland
12
11
  name_fr: Pays-Bas
metadata CHANGED
@@ -1,44 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_translated
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stijn Mathysen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-29 00:00:00.000000000 Z
11
+ date: 2015-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: '1.6'
33
+ version: '0'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: '1.6'
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - "~>"
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ">="
52
+ - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
- description:
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.8'
69
+ description: ActsAsTranslated is an acts_as for ActiveRecord that allows easy attribute
70
+ translation.
42
71
  email:
43
72
  - stijn@skylight.be
44
73
  executables: []
@@ -52,10 +81,11 @@ files:
52
81
  - Rakefile
53
82
  - acts_as_translated.gemspec
54
83
  - lib/acts_as_translated.rb
84
+ - lib/acts_as_translated/railtie.rb
55
85
  - lib/acts_as_translated/version.rb
56
- - tests/countries.yml
57
- - tests/translated_test.rb
58
- homepage: ''
86
+ - test/acts_as_translated_test.rb
87
+ - test/countries.yml
88
+ homepage: https://github.com/stijnster/acts_as_translated
59
89
  licenses:
60
90
  - MIT
61
91
  metadata: {}
@@ -75,8 +105,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
105
  version: '0'
76
106
  requirements: []
77
107
  rubyforge_project:
78
- rubygems_version: 2.4.3
108
+ rubygems_version: 2.2.2
79
109
  signing_key:
80
110
  specification_version: 4
81
111
  summary: This acts_as extension allows easy attribute translation.
82
- test_files: []
112
+ test_files:
113
+ - test/acts_as_translated_test.rb
114
+ - test/countries.yml