i18n_attributes 0.1.0 → 0.1.1
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.
- data/CHANGELOG +5 -0
- data/README.markdown +1 -1
- data/i18n_attributes.gemspec +1 -0
- data/lib/generators/i18n_attributes/model/model_generator.rb +3 -1
- data/lib/generators/i18n_attributes/revise_model/revise_model_generator.rb +6 -19
- data/lib/i18n_attributes/generator_helpers.rb +6 -24
- data/lib/i18n_attributes/version.rb +1 -1
- metadata +23 -12
data/CHANGELOG
CHANGED
data/README.markdown
CHANGED
data/i18n_attributes.gemspec
CHANGED
@@ -6,6 +6,8 @@ class I18nAttributes::ModelGenerator < Rails::Generators::NamedBase
|
|
6
6
|
|
7
7
|
include I18nAttributes::GeneratorHelpers
|
8
8
|
|
9
|
+
SUPPORTED_ORMS = %w(active_record active_model mongoid)
|
10
|
+
|
9
11
|
def create_model_i18n_file
|
10
12
|
|
11
13
|
orm = options.orm.to_s
|
@@ -21,7 +23,7 @@ class I18nAttributes::ModelGenerator < Rails::Generators::NamedBase
|
|
21
23
|
|
22
24
|
private
|
23
25
|
def attributes_hash
|
24
|
-
Hash[ attributes.map {|attribute| [attribute.name, attribute.
|
26
|
+
Hash[ attributes.map {|attribute| [attribute.name, attribute.type] } ]
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
@@ -3,6 +3,9 @@ class I18nAttributes::ReviseModelGenerator < Rails::Generators::Base
|
|
3
3
|
|
4
4
|
class_option :orm, :required => false, :default => "active_record"
|
5
5
|
|
6
|
+
include ::VkillGemsMethods::Rails::Generators::Base
|
7
|
+
::ActiveRecord::Base.send :include, ::VkillGemsMethods::ActiveRecord::Base
|
8
|
+
|
6
9
|
include I18nAttributes::GeneratorHelpers
|
7
10
|
|
8
11
|
SUPPORTED_ORMS = %w(active_record)
|
@@ -13,30 +16,14 @@ class I18nAttributes::ReviseModelGenerator < Rails::Generators::Base
|
|
13
16
|
|
14
17
|
say_error "#{orm} [not found]" unless SUPPORTED_ORMS.include? orm
|
15
18
|
|
16
|
-
models do |model|
|
17
|
-
I18nAttributes::Configuration.locales.each do |locale|
|
19
|
+
::ActiveRecord::Base.models do |model, columns|
|
20
|
+
::I18nAttributes::Configuration.locales.each do |locale|
|
18
21
|
create_file "config/locales/model_#{ locale }/#{ model.name.underscore }.yml",
|
19
|
-
generate_yaml_file_data(locale, model.model_name.underscore, model.model_name,
|
22
|
+
generate_yaml_file_data(locale, model.model_name.underscore, model.model_name, columns, orm)
|
20
23
|
end
|
21
24
|
end
|
22
25
|
|
23
26
|
end
|
24
27
|
|
25
|
-
private
|
26
|
-
def models(&block)
|
27
|
-
Rails.application.eager_load!
|
28
|
-
ActiveRecord::Base.descendants.each do |model|
|
29
|
-
next unless model.respond_to?(:columns_hash)
|
30
|
-
next unless model.table_exists?
|
31
|
-
next if model.abstract_class?
|
32
|
-
next if model.columns_hash.keys.include?('type') and model.descendants.size > 0
|
33
|
-
yield model
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def attributes_hash(model)
|
38
|
-
Hash[ model.columns_hash.map { |k,v| [k, k.to_s.humanize] } ]
|
39
|
-
end
|
40
|
-
|
41
28
|
end
|
42
29
|
|
@@ -3,28 +3,7 @@ require "yaml"
|
|
3
3
|
module I18nAttributes
|
4
4
|
module GeneratorHelpers
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
def say_custom(type='warn', text) #example, type choise in FATAL,ERROR,WARN,INFO,DEBUG
|
9
|
-
ansicolor = #more ansicolor => https://github.com/flori/term-ansicolor
|
10
|
-
case type.downcase.to_s
|
11
|
-
when 'fatal'; '31m'
|
12
|
-
when 'error'; '31m'
|
13
|
-
when 'warn'; '36m'
|
14
|
-
when 'info'; '32m'
|
15
|
-
when 'debug'; '34m'
|
16
|
-
else; '0m'
|
17
|
-
end
|
18
|
-
say "\033[1m\033[#{ ansicolor }" + type.to_s.upcase.rjust(10) + "\033[0m" + " #{text}"
|
19
|
-
end
|
20
|
-
def say_fatal(text); say_custom('fatal', text); exit; end
|
21
|
-
def say_error(text); say_custom('error', text); exit; end
|
22
|
-
def say_warn(text); say_custom('warn', text); end
|
23
|
-
def say_info(text); say_custom('info', text); end
|
24
|
-
def say_debug(text); say_custom('debug', text); end
|
25
|
-
|
26
|
-
|
27
|
-
def generate_yaml_file_data(locale, singular_name, human_name, attributes_hash, orm="active_record")
|
6
|
+
def generate_yaml_file_data(locale, singular_name, human_name, attributes, orm="active_record")
|
28
7
|
YAML.dump_stream(
|
29
8
|
{
|
30
9
|
locale.to_s => {
|
@@ -33,7 +12,7 @@ module I18nAttributes
|
|
33
12
|
singular_name => human_name.to_s
|
34
13
|
},
|
35
14
|
"attributes" => {
|
36
|
-
singular_name =>
|
15
|
+
singular_name => columns_hash(attributes).merge(enums_hash(attributes))
|
37
16
|
}
|
38
17
|
}
|
39
18
|
}
|
@@ -42,11 +21,14 @@ module I18nAttributes
|
|
42
21
|
end
|
43
22
|
|
44
23
|
private
|
24
|
+
def columns_hash(attributes)
|
25
|
+
Hash[ attributes.keys.map {|k| [k.to_s, k.to_s.humanize]} ]
|
26
|
+
end
|
45
27
|
|
46
28
|
def enums_hash(attributes)
|
47
29
|
enums = {}
|
48
30
|
I18nAttributes::Configuration.enums_attributes.each do |k,v|
|
49
|
-
attributes.index(k) ? enums.merge!(k => v) : next
|
31
|
+
attributes.keys.index(k) ? enums.merge!(k => v) : next
|
50
32
|
end
|
51
33
|
enums.empty? ? {} : { "enums" => enums }
|
52
34
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement: &
|
16
|
+
requirement: &71077170 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *71077170
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &71076960 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *71076960
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &71076750 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *71076750
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: guard-rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &71076540 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *71076540
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rails
|
60
|
-
requirement: &
|
60
|
+
requirement: &71076290 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,18 @@ dependencies:
|
|
65
65
|
version: '3.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *71076290
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: vkill_gems_methods
|
71
|
+
requirement: &71076040 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.1.0
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *71076040
|
69
80
|
description: A generate model attributes I18n locale files plugin for Rails3.
|
70
81
|
email:
|
71
82
|
- vkill.net@gmail.com
|