translated_attribute_value 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 32a73c61415386ebc9b3d3a1cf40c78e0d898371
4
+ data.tar.gz: e1ab310f9b93d6a1c6217647a3aa7835e3c8b3bb
5
+ SHA512:
6
+ metadata.gz: f0983d7ff7328f60e892ef8f9e0822965e5c8c06f1f933cf9c20d84f8e98772dad73cc2a2bd2adf9881ea5c3b25fdd1505211f908cef452da39c77b514842d19
7
+ data.tar.gz: c321d7e4c0390754c844de31494b234ad92f168c55b695fd969a6600fb358d1bd8e225c659ec9b2c9607d8fe720e8e3051abf68f759b287a66a452408de2e256
data/README.md ADDED
@@ -0,0 +1,55 @@
1
+ # How to use
2
+ In your model (activerecord or mongo):
3
+
4
+ ```ruby
5
+ class User
6
+ include NamespacedAssetsRails::Base
7
+
8
+ # if you have a field called status
9
+ translate_value_for :status
10
+
11
+ # more field
12
+ translate_value_for :payments_status, :rule_status
13
+ end
14
+ ```
15
+
16
+ And then your can translate the attribute as following:
17
+
18
+ ## Activerecord
19
+ ```yaml
20
+ pt-BR:
21
+ activerecord:
22
+ attributes:
23
+ user:
24
+ status_translation:
25
+ value1: 'Translation for value1'
26
+ value2: 'Translation for value2'
27
+ ```
28
+
29
+ ## Mongoid
30
+ ```yaml
31
+ pt-BR:
32
+ mongoid:
33
+ attributes:
34
+ user:
35
+ status_translation:
36
+ value1: 'Translation for value1'
37
+ value2: 'Translation for value2'
38
+ ```
39
+
40
+ ## Otherwise
41
+ ```yaml
42
+ pt-BR:
43
+ translated_attribute_value:
44
+ user:
45
+ status_translation:
46
+ value1: 'Translation for value1'
47
+ value2: 'Translation for value2'
48
+ ```
49
+
50
+ Anywhere in your code you can call
51
+ ```ruby
52
+ user = User.new
53
+ user.status = 'value1'
54
+ user.status_translated
55
+ ```
data/Rakefile ADDED
@@ -0,0 +1,23 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'CodusTemplates'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ Bundler::GemHelper.install_tasks
18
+
19
+ require 'rspec/core'
20
+ require 'rspec/core/rake_task'
21
+ desc "Run all specs in spec directory (excluding plugin specs)"
22
+ RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
23
+ task :default => :spec
@@ -0,0 +1,5 @@
1
+ require 'translated_attribute_value/base'
2
+ require "translated_attribute_value/version"
3
+
4
+ module TranslatedAttributeValue
5
+ end
@@ -0,0 +1,30 @@
1
+ module TranslatedAttributeValue
2
+ module Base
3
+ def self.included(base)
4
+ base.send(:extend, ClassMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def translated_value_for(*args)
9
+ args.each do |attribute_name|
10
+ if defined?(ActiveRecord::Base)
11
+ self.send(:define_method, "#{attribute_name}_translated") do
12
+ attribute_value = self.send(attribute_name)
13
+ I18n.t("activerecord.attributes.user.status_translation.#{attribute_name}.#{attribute_value}")
14
+ end
15
+ elsif defined?(Mongoid::Document)
16
+ self.send(:define_method, "#{attribute_name}_translated") do
17
+ attribute_value = self.send(attribute_name)
18
+ I18n.t("mongoid.attributes.user.status_translation.#{attribute_name}.#{attribute_value}")
19
+ end
20
+ else
21
+ self.send(:define_method, "#{attribute_name}_translated") do
22
+ attribute_value = self.send(attribute_name)
23
+ I18n.t("translated_attribute_value.user.status_translation.#{attribute_name}.#{attribute_value}")
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ module TranslatedAttributeValue
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,6 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ require 'translated_attribute_value'
5
+
6
+ Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
@@ -0,0 +1,57 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe TranslatedAttributeValue::Base do
5
+ let(:test_model) { Class.new do
6
+ include TranslatedAttributeValue::Base
7
+ translated_value_for :status
8
+ end.new
9
+ }
10
+
11
+ before(:each) do
12
+ stub_const("I18n", double)
13
+ end
14
+
15
+ describe "translated_value_for" do
16
+ describe 'ActiveRecord' do
17
+ before(:each) do
18
+ stub_const("I18n", Object.new)
19
+ stub_const("ActiveRecord::Base", Object.new)
20
+ end
21
+
22
+ specify do
23
+ test_model.stub(:status).and_return('my_value')
24
+ expect(I18n).to receive(:t).with("activerecord.attributes.user.status_translation.status.my_value")
25
+ test_model.status_translated
26
+ end
27
+
28
+ end
29
+ describe 'Mongoid' do
30
+ before(:each) do
31
+ stub_const("I18n", Object.new)
32
+ stub_const("Mongoid::Document", Object.new)
33
+ end
34
+
35
+ specify do
36
+ test_model.stub(:status).and_return('my_value')
37
+ expect(I18n).to receive(:t).with("mongoid.attributes.user.status_translation.status.my_value")
38
+ test_model.status_translated
39
+ end
40
+
41
+ end
42
+ describe 'Mongoid' do
43
+ before(:each) do
44
+ stub_const("I18n", Object.new)
45
+ end
46
+
47
+ specify do
48
+ test_model.stub(:status).and_return('my_value')
49
+ expect(I18n).to receive(:t).with("translated_attribute_value.user.status_translation.status.my_value")
50
+ test_model.status_translated
51
+ end
52
+
53
+ end
54
+
55
+ end
56
+
57
+ end
@@ -0,0 +1,70 @@
1
+ // git@github.com:codus/yojs.git
2
+ // Version: 0.0.1
3
+
4
+ if(!Array.prototype.last) {
5
+ Array.prototype.last = function() {
6
+ return this[this.length - 1];
7
+ }
8
+ }
9
+
10
+ var yojs = (function(){
11
+ var nameFunctionHash = {};
12
+ var parentsNamespaces = [];
13
+
14
+ var getNameSpaceResult = function(namespace, arguments) {
15
+ if (typeof(nameFunctionHash[namespace]) == 'function') {
16
+ return nameFunctionHash[namespace].apply(this, arguments);
17
+ } else {
18
+ return nameFunctionHash[namespace];
19
+ }
20
+ }
21
+ return {
22
+ define: function(namespace, value) {
23
+ if (this.isDefined(namespace)) {
24
+ var errorMessage = "Error: trying to define namespace '" + namespace + "'' twice";
25
+ throw errorMessage;
26
+ } else {
27
+ nameFunctionHash[namespace] = value;
28
+ }
29
+ return;
30
+ },
31
+
32
+ set: function(namespace, value) {
33
+ nameFunctionHash[namespace] = value;
34
+ },
35
+
36
+ call: function(namespace){
37
+ var parentNamespaceArray = namespace.split(".");
38
+ var lastNameCalled = parentNamespaceArray.pop();
39
+ var currentParentNamespace = parentNamespaceArray.join(".");
40
+ var returnValue = null;
41
+ var lastParentNamespace = parentsNamespaces.last();
42
+ var functionWithLastParentClassNamespace = lastParentNamespace + "." + lastNameCalled;
43
+ var errorMessage = "";
44
+ var calledFunctionArguments = Array.prototype.slice.apply(arguments, [1]);
45
+
46
+ parentsNamespaces.push(currentParentNamespace);
47
+
48
+ if (this.isDefined(namespace)) {
49
+ returnValue = getNameSpaceResult(namespace, calledFunctionArguments);
50
+ } else if (this.isDefined(functionWithLastParentClassNamespace)) {
51
+ returnValue = getNameSpaceResult(functionWithLastParentClassNamespace, calledFunctionArguments);
52
+ } else {
53
+ var errorMessage = "Error: called namespace '" + namespace + "'. But it doesn't exist.";
54
+ throw errorMessage;
55
+ }
56
+
57
+ parentsNamespaces.pop();
58
+
59
+ return returnValue;
60
+ },
61
+
62
+ get: function(namespace) {
63
+ return this.call(namespace);
64
+ },
65
+
66
+ isDefined: function(namespace) {
67
+ return nameFunctionHash.hasOwnProperty(namespace);
68
+ }
69
+ }
70
+ }());
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: translated_attribute_value
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Vinícius Oyama
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.1.0
27
+ description: Translate attribute values
28
+ email: vinicius.oyama@gmail.com.br
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - README.md
34
+ - Rakefile
35
+ - lib/translated_attribute_value.rb
36
+ - lib/translated_attribute_value/base.rb
37
+ - lib/translated_attribute_value/version.rb
38
+ - spec/spec_helper.rb
39
+ - spec/translated_attribute_value/base_spec.rb
40
+ - vendor/assets/javascripts/yojs.js
41
+ homepage: https://github.com/viniciusoyama/translated_attribute_value
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.2.2
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: Translate attribute values
65
+ test_files:
66
+ - spec/spec_helper.rb
67
+ - spec/translated_attribute_value/base_spec.rb