ember-i18n-rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ doc
2
+ coverage
3
+ pkg
4
+ idea
5
+ spec/tmp
6
+ .DS_Store
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format documentation
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source :rubygems
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,47 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ember-i18n-rails (0.1.0)
5
+ i18n
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ activesupport (3.1.1)
11
+ multi_json (~> 1.0)
12
+ coderay (0.9.8)
13
+ diff-lcs (1.1.3)
14
+ fakeweb (1.3.0)
15
+ i18n (0.6.1)
16
+ method_source (0.6.7)
17
+ ruby_parser (>= 2.3.1)
18
+ multi_json (1.0.3)
19
+ pry (0.9.7.4)
20
+ coderay (~> 0.9.8)
21
+ method_source (~> 0.6.7)
22
+ ruby_parser (>= 2.3.1)
23
+ slop (~> 2.1.0)
24
+ rake (0.9.2.2)
25
+ rspec (2.7.0)
26
+ rspec-core (~> 2.7.0)
27
+ rspec-expectations (~> 2.7.0)
28
+ rspec-mocks (~> 2.7.0)
29
+ rspec-core (2.7.1)
30
+ rspec-expectations (2.7.0)
31
+ diff-lcs (~> 1.1.2)
32
+ rspec-mocks (2.7.0)
33
+ ruby_parser (2.3.1)
34
+ sexp_processor (~> 3.0)
35
+ sexp_processor (3.0.8)
36
+ slop (2.1.0)
37
+
38
+ PLATFORMS
39
+ ruby
40
+
41
+ DEPENDENCIES
42
+ activesupport (>= 3.0.0)
43
+ ember-i18n-rails!
44
+ fakeweb
45
+ pry
46
+ rake
47
+ rspec (~> 2.6)
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ #ember-i18n-rails#
2
+
3
+ Loosely Based on https://github.com/fnando/i18n-js of Nando Vieira
4
+
5
+ __Version:__ 0.1
6
+
7
+ ## Instalation:
8
+
9
+ ### in Gemfile:
10
+
11
+ gem "ember-i18n-rails"
12
+
13
+ ### then call:
14
+
15
+ rake ember:i18n:setup
16
+
17
+ ### in app/assets/javascript/application.js
18
+ //= require i18n/ember-i18n
19
+ //= require i18n/translations
20
+
21
+ ## Exporting locales:
22
+
23
+ rake ember:i18n:export
24
+
25
+ ## Updating ember-i18n
26
+
27
+ rake ember:i18n:update
28
+
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+
@@ -0,0 +1,22 @@
1
+ # Split context in several files.
2
+ # By default only one file with all translations is exported and
3
+ # no configuration is required. Your settings for asset pipeline
4
+ # are automatically recognized.
5
+ #
6
+ # If you want to split translations into several files or specify
7
+ # locale contexts that will be exported, just use this file to do
8
+ # so.
9
+ #
10
+ # If you're going to use the Rails 3.1 asset pipeline, change
11
+ # the following configuration to something like this:
12
+ #
13
+ # translations:
14
+ # - file: "app/assets/javascripts/i18n/translations.js"
15
+ #
16
+ # If you're running an old version, you can use something
17
+ # like this:
18
+ #
19
+ # translations:
20
+ # - file: "public/javascripts/translations.js"
21
+ # only: "*"
22
+ #
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "ember/i18n/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "ember-i18n-rails"
7
+ s.version = Ember::I18n::Version::STRING
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Nando Vieira", "Andrzej Sliwa"]
10
+ s.email = ["andrzej.sliwa@i-tool.eu"]
11
+ s.homepage = "http://rubygems.org/gems/ember-i18n-rails"
12
+ s.summary = ""
13
+ s.description = s.summary
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency "i18n"
21
+ s.add_development_dependency "fakeweb"
22
+ s.add_development_dependency "activesupport", ">= 3.0.0"
23
+ s.add_development_dependency "rspec", "~> 2.6"
24
+ s.add_development_dependency "rake"
25
+ s.add_development_dependency "pry"
26
+ end
@@ -0,0 +1,119 @@
1
+ require "FileUtils" unless defined?(FileUtils)
2
+
3
+ module Ember
4
+ module I18n
5
+ extend self
6
+
7
+ require "ember/i18n/railtie" if Rails.version >= "3.0"
8
+ require "ember/i18n/engine" if Rails.version >= "3.1"
9
+
10
+ # deep_merge by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809
11
+ MERGER = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &MERGER) : v2 }
12
+
13
+ # Under rails 3.1.1 and higher, perform a check to ensure that the
14
+ # full environment will be available during asset compilation.
15
+ # This is required to ensure I18n is loaded.
16
+ def assert_usable_configuration!
17
+ @usable_configuration ||= Rails.version >= "3.1.1" &&
18
+ Rails.configuration.assets.initialize_on_precompile ||
19
+ raise("Cannot precompile ember-i18n translations unless environment is initialized. Please set config.assets.initialize_on_precompile to true.")
20
+ end
21
+
22
+ def has_asset_pipeline?
23
+ Rails.configuration.respond_to?(:assets) && Rails.configuration.assets.enabled
24
+ end
25
+
26
+ def config_file
27
+ Rails.root.join("config/ember-i18n.yml")
28
+ end
29
+
30
+ def export_dir
31
+ if has_asset_pipeline?
32
+ "app/assets/javascripts/i18n"
33
+ else
34
+ "public/javascripts"
35
+ end
36
+ end
37
+
38
+ def javascript_file
39
+ Rails.root.join(export_dir, "ember-i18n.js")
40
+ end
41
+
42
+ # Export translations to JavaScript, considering settings
43
+ # from configuration file
44
+ def export!
45
+ save(flat_hash(translations), File.join(export_dir, "translations.js"))
46
+ end
47
+
48
+ def flat_hash(data, prefix = '', result = {})
49
+ data.each do |key, value|
50
+ current_prefix = prefix.present? ? "#{prefix}.#{key}" : key
51
+
52
+ if !value.is_a?(Hash)
53
+ result[current_prefix] = value.respond_to?(:stringify_keys) ? value.stringify_keys : value
54
+ else
55
+ flat_hash(value, current_prefix, result)
56
+ end
57
+ end
58
+
59
+ result.stringify_keys
60
+ end
61
+
62
+ # Load configuration file for partial exporting and
63
+ # custom output directory
64
+ def config
65
+ if config?
66
+ (YAML.load_file(config_file) || {}).with_indifferent_access
67
+ else
68
+ {}
69
+ end
70
+ end
71
+
72
+ # Check if configuration file exist
73
+ def config?
74
+ File.file? config_file
75
+ end
76
+
77
+ # Copy configuration and JavaScript library files to
78
+ # <tt>config/ember-i18n.yml</tt> and <tt>public/javascripts/i18n.js</tt>.
79
+ def setup!
80
+ FileUtils.mkdir_p(export_dir)
81
+ FileUtils.cp(File.dirname(__FILE__) + "/../vendor/assets/javascripts/ember-i18n.js", javascript_file)
82
+ FileUtils.cp(File.dirname(__FILE__) + "/../config/ember-i18n.yml", config_file) unless config?
83
+ end
84
+
85
+ # Retrieve an updated JavaScript library from Github.
86
+ def update!
87
+ FileUtils.mkdir_p(export_dir)
88
+ require "open-uri"
89
+ contents = open("https://raw.github.com/jamesarosen/ember-i18n/master/lib/i18n.js").read
90
+ File.open(javascript_file, "w+") {|f| f << contents}
91
+ end
92
+
93
+ # Convert translations to JSON string and save file.
94
+ def save(translations, file)
95
+ file = Rails.root.join(file)
96
+ FileUtils.mkdir_p File.dirname(file)
97
+
98
+ File.open(file, "w+") do |f|
99
+ f << 'Em.I18n.translations = '
100
+ f << JSON.pretty_generate(translations).html_safe
101
+ f << ';'
102
+ end
103
+ end
104
+
105
+ # Initialize and return translations
106
+ def translations
107
+ ::I18n.load_path = default_locales_path
108
+ ::I18n.backend.instance_eval do
109
+ init_translations unless initialized?
110
+ translations
111
+ end
112
+ end
113
+
114
+ def default_locales_path
115
+ Dir[Rails.root.join('config', 'locales', '*.yml').to_s]
116
+ end
117
+ end
118
+ end
119
+
@@ -0,0 +1,63 @@
1
+ module Ember
2
+ module I18n
3
+ class Engine < ::Rails::Engine
4
+ I18N_TRANSLATIONS_ASSET = "i18n/translations"
5
+
6
+ initializer "ember-i18n-rails.asset_dependencies", :after => "sprockets.environment",
7
+ :before => "ember-i18n-rails.initialize" do
8
+ next unless Ember::I18n.has_asset_pipeline?
9
+
10
+ config = I18n.config_file
11
+ cache_file = I18n::Engine.load_path_hash_cache
12
+
13
+ Rails.application.assets.register_preprocessor "application/javascript", :"ember-i18n-rails_dependencies" do |context, data|
14
+ if context.logical_path == I18N_TRANSLATIONS_ASSET
15
+ context.depend_on(config) if I18n.config?
16
+ # also set up dependencies on every locale file
17
+ ::I18n.load_path.each {|path| context.depend_on(path)}
18
+
19
+ # Set up a dependency on the contents of the load path
20
+ # itself. In some situations it is possible to get here
21
+ # before the path hash cache file has been written; in
22
+ # this situation, write it now.
23
+ I18n::Engine.write_hash! unless File.exists?(cache_file)
24
+ context.depend_on(cache_file)
25
+ end
26
+
27
+ data
28
+ end
29
+ end
30
+
31
+ # rewrite path cache hash at startup and before each request in development
32
+ config.to_prepare do
33
+ next unless Ember::I18n.has_asset_pipeline?
34
+ Ember::I18n::Engine.write_hash_if_changed unless Rails.env.production?
35
+ end
36
+
37
+ def self.load_path_hash_cache
38
+ @load_path_hash_cache ||= Rails.root.join("tmp/ember-i18n.cache")
39
+ end
40
+
41
+ def self.write_hash_if_changed
42
+ load_path_hash = ::I18n.load_path.hash
43
+
44
+ if load_path_hash != cached_load_path_hash
45
+ self.cached_load_path_hash = load_path_hash
46
+ write_hash!
47
+ end
48
+ end
49
+
50
+ def self.write_hash!
51
+ FileUtils.mkdir_p Rails.root.join("tmp")
52
+
53
+ File.open(load_path_hash_cache, "w+") do |f|
54
+ f.write(cached_load_path_hash)
55
+ end
56
+ end
57
+
58
+ class << self
59
+ attr_accessor :cached_load_path_hash
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,13 @@
1
+ module Ember
2
+ module I18n
3
+ class Railtie < Rails::Railtie
4
+ rake_tasks do
5
+ require "ember/i18n/rake"
6
+ end
7
+
8
+ initializer "ember-i18n-rails.initialize" do |app|
9
+ app.config.middleware.use(Middleware) if Rails.env.development? && !Ember::I18n.has_asset_pipeline?
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ namespace :ember do
2
+ namespace :i18n do
3
+ desc "install ember-i18n.js"
4
+ task :setup => :environment do
5
+ Ember::I18n.setup!
6
+ end
7
+
8
+ desc "Export the messages files"
9
+ task :export => :environment do
10
+ Ember::I18n.export!
11
+ end
12
+
13
+ desc "install ember-i18n.js"
14
+ task :update => :environment do
15
+ Ember::I18n.update!
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,10 @@
1
+ module Ember
2
+ module I18n
3
+ module Version
4
+ MAJOR = 0
5
+ MINOR = 1
6
+ PATCH = 0
7
+ STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,80 @@
1
+ require "spec_helper"
2
+
3
+ if File.basename(Rails.root) != "tmp"
4
+ abort <<-TXT
5
+ \e[31;5m
6
+ WARNING: That will remove your project!
7
+ Please go to #{File.expand_path(File.dirname(__FILE__) + "/..")} and run `rake spec`\e[0m
8
+ TXT
9
+ end
10
+
11
+ describe Ember::I18n do
12
+ before do
13
+ # Remove temporary directory if already present
14
+ FileUtils.rm_r(Rails.root) if File.exist?(Rails.root)
15
+
16
+ # Create temporary directory to test the files generation
17
+ %w( config public/javascripts ).each do |path|
18
+ FileUtils.mkdir_p Rails.root.join(path)
19
+ end
20
+ end
21
+
22
+ after do
23
+ # Remove temporary directory
24
+ FileUtils.rm_r(Rails.root)
25
+ end
26
+
27
+ it "copies JavaScript library" do
28
+ path = Rails.root.join("public/javascripts/ember-i18n.js")
29
+
30
+ File.should_not be_file(path)
31
+ Ember::I18n.setup!
32
+ File.should be_file(path)
33
+ end
34
+
35
+ it "exports messages" do
36
+ default_locales_path = Dir[File.join('spec', 'resources', '*.yml').to_s]
37
+ Ember::I18n.should_receive(:default_locales_path).at_least(:once).and_return(default_locales_path)
38
+ Ember::I18n.export!
39
+ Rails.root.join(Ember::I18n.export_dir, "translations.js").should be_file
40
+ end
41
+
42
+ it "updates the javascript library" do
43
+ FakeWeb.register_uri(:get, "https://raw.github.com/jamesarosen/ember-i18n/master/lib/i18n.js", :body => "UPDATED")
44
+
45
+ Ember::I18n.setup!
46
+ Ember::I18n.update!
47
+ File.read(Ember::I18n.javascript_file).should == "UPDATED"
48
+ end
49
+
50
+ describe "#export_dir" do
51
+ it "detects asset pipeline support" do
52
+ Ember::I18n.stub :has_asset_pipeline? => true
53
+ Ember::I18n.export_dir == "vendor/assets/javascripts"
54
+ end
55
+
56
+ it "detects older Rails" do
57
+ Ember::I18n.stub :has_asset_pipeline? => false
58
+ Ember::I18n.export_dir.to_s.should == "public/javascripts"
59
+ end
60
+ end
61
+
62
+ describe "#has_asset_pipeline?" do
63
+ it "detects support" do
64
+ Rails.stub_chain(:configuration, :assets, :enabled => true)
65
+ Ember::I18n.should have_asset_pipeline
66
+ end
67
+
68
+ it "skips support" do
69
+ Ember::I18n.should_not have_asset_pipeline
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ # Shortcut to SimplesIdeias::I18n.translations
76
+ def translations
77
+ Ember::I18n.translations
78
+ end
79
+ end
80
+
@@ -0,0 +1,7 @@
1
+ en:
2
+ admin:
3
+ show:
4
+ title: "Visualiser"
5
+ note: "plus de détails"
6
+ edit:
7
+ title: "Editer"
@@ -0,0 +1,19 @@
1
+ require "active_support/all"
2
+ require "active_support/version"
3
+ require "active_support/test_case"
4
+ require "ostruct"
5
+ require "pathname"
6
+ require "i18n"
7
+ require "json"
8
+ require "fakeweb"
9
+
10
+ FakeWeb.allow_net_connect = false
11
+
12
+ # Stub Rails.root, so we don"t need to load the whole Rails environment.
13
+ # Be careful! The specified folder will be removed!
14
+ Rails = OpenStruct.new({
15
+ :root => Pathname.new(File.dirname(__FILE__) + "/tmp"),
16
+ :version => "0"
17
+ })
18
+
19
+ require "ember-i18n-rails"
@@ -0,0 +1,155 @@
1
+ (function(window) {
2
+ var I18n, assert, findTemplate, get, isBinding, isTranslatedAttribute, lookupKey, pluralForm;
3
+
4
+ isTranslatedAttribute = /(.+)Translation$/;
5
+
6
+ get = Ember.Handlebars.get || Ember.Handlebars.getPath || Ember.getPath;
7
+
8
+ if (typeof CLDR !== "undefined" && CLDR !== null) pluralForm = CLDR.pluralForm;
9
+
10
+ if (pluralForm == null) {
11
+ Ember.Logger.warn("CLDR.pluralForm not found. Em.I18n will not support count-based inflection.");
12
+ }
13
+
14
+ lookupKey = function(key, hash) {
15
+ var firstKey, idx, remainingKeys, result;
16
+ result = hash[key];
17
+ idx = key.indexOf('.');
18
+
19
+ if (!result && idx !== -1) {
20
+ firstKey = key.substr(0, idx);
21
+ remainingKeys = key.substr(idx + 1);
22
+ hash = hash[firstKey];
23
+ if (hash) result = lookupKey(remainingKeys, hash);
24
+ }
25
+
26
+ return result;
27
+ };
28
+
29
+ assert = Ember.assert != null ? Ember.assert : window.ember_assert;
30
+
31
+ findTemplate = function(key, setOnMissing) {
32
+ assert("You must provide a translation key string, not %@".fmt(key), typeof key === 'string');
33
+ var result = lookupKey(key, I18n.translations);
34
+
35
+ if (setOnMissing) {
36
+ if (result == null) {
37
+ result = I18n.translations[key] = I18n.compile("Missing translation: " + key);
38
+ }
39
+ }
40
+
41
+ if ((result != null) && !jQuery.isFunction(result)) {
42
+ result = I18n.translations[key] = I18n.compile(result);
43
+ }
44
+
45
+ return result;
46
+ };
47
+
48
+ I18n = {
49
+ compile: Handlebars.compile,
50
+
51
+ translations: {},
52
+
53
+ template: function(key, count) {
54
+ var interpolatedKey, result, suffix;
55
+ if ((count != null) && (pluralForm != null)) {
56
+ suffix = pluralForm(count);
57
+ interpolatedKey = "%@.%@".fmt(key, suffix);
58
+ result = findTemplate(interpolatedKey, false);
59
+ }
60
+ return result != null ? result : result = findTemplate(key, true);
61
+ },
62
+
63
+ t: function(key, context) {
64
+ var template;
65
+ if (context == null) context = {};
66
+ template = I18n.template(key, context.count);
67
+ return template(context);
68
+ },
69
+
70
+ TranslateableAttributes: Em.Mixin.create({
71
+ didInsertElement: function() {
72
+ var attribute, isTranslatedAttributeMatch, key, path, result, translatedValue;
73
+ result = this._super.apply(this, arguments);
74
+
75
+ for (key in this) {
76
+ path = this[key];
77
+ isTranslatedAttributeMatch = key.match(isTranslatedAttribute);
78
+ if (isTranslatedAttributeMatch) {
79
+ attribute = isTranslatedAttributeMatch[1];
80
+ translatedValue = I18n.t(path);
81
+ this.$().attr(attribute, translatedValue);
82
+ }
83
+ }
84
+
85
+ return result;
86
+ }
87
+ })
88
+ };
89
+
90
+ Ember.I18n = I18n;
91
+
92
+ isBinding = /(.+)Binding$/;
93
+
94
+ Handlebars.registerHelper('t', function(key, options) {
95
+ var attrs, context, data, elementID, result, tagName, view;
96
+ context = this;
97
+ attrs = options.hash;
98
+ data = options.data;
99
+ view = data.view;
100
+ tagName = attrs.tagName || 'span';
101
+ delete attrs.tagName;
102
+ elementID = "i18n-" + (Ember.uuid++);
103
+
104
+ Em.keys(attrs).forEach(function(property) {
105
+ var bindPath, currentValue, invoker, isBindingMatch, normalized, normalizedPath, observer, propertyName, root, _ref;
106
+ isBindingMatch = property.match(isBinding);
107
+
108
+ if (isBindingMatch) {
109
+ propertyName = isBindingMatch[1];
110
+ bindPath = attrs[property];
111
+ currentValue = get(context, bindPath, options);
112
+ attrs[propertyName] = currentValue;
113
+ invoker = null;
114
+ normalized = Ember.Handlebars.normalizePath(context, bindPath, data);
115
+ _ref = [normalized.root, normalized.path], root = _ref[0], normalizedPath = _ref[1];
116
+
117
+ observer = function() {
118
+ var elem, newValue;
119
+ if (view.get('state') !== 'inDOM') {
120
+ Em.removeObserver(root, normalizedPath, invoker);
121
+ return;
122
+ }
123
+ newValue = get(context, bindPath, options);
124
+ elem = view.$("#" + elementID);
125
+ attrs[propertyName] = newValue;
126
+ return elem.html(I18n.t(key, attrs));
127
+ };
128
+
129
+ invoker = function() {
130
+ return Em.run.once(observer);
131
+ };
132
+
133
+ return Em.addObserver(root, normalizedPath, invoker);
134
+ }
135
+ });
136
+
137
+ result = '<%@ id="%@">%@</%@>'.fmt(tagName, elementID, I18n.t(key, attrs), tagName);
138
+ return new Handlebars.SafeString(result);
139
+ });
140
+
141
+ Handlebars.registerHelper('translateAttr', function(options) {
142
+ var attrs, result;
143
+ attrs = options.hash;
144
+ result = [];
145
+
146
+ Em.keys(attrs).forEach(function(property) {
147
+ var translatedValue;
148
+ translatedValue = I18n.t(attrs[property]);
149
+ return result.push('%@="%@"'.fmt(property, translatedValue));
150
+ });
151
+
152
+ return new Handlebars.SafeString(result.join(' '));
153
+ });
154
+
155
+ }).call(undefined, this);
@@ -0,0 +1,9 @@
1
+ <%# encoding: utf-8%>
2
+
3
+ <% Ember::I18n.assert_usable_configuration! %>
4
+ var I18n = I18n || {};
5
+ I18n.translations = <%=
6
+ Ember::I18n.translation_segments.each_with_object({}) do |(name, segment),translations|
7
+ translations.merge!(segment)
8
+ end.to_json
9
+ %>;
metadata ADDED
@@ -0,0 +1,169 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ember-i18n-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nando Vieira
9
+ - Andrzej Sliwa
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-02-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: i18n
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: fakeweb
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: activesupport
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 3.0.0
63
+ - !ruby/object:Gem::Dependency
64
+ name: rspec
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '2.6'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '2.6'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rake
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: pry
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: ''
112
+ email:
113
+ - andrzej.sliwa@i-tool.eu
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - .gitignore
119
+ - .rspec
120
+ - Gemfile
121
+ - Gemfile.lock
122
+ - README.md
123
+ - Rakefile
124
+ - config/ember-i18n.yml
125
+ - ember-i18n-rails.gemspec
126
+ - lib/ember-i18n-rails.rb
127
+ - lib/ember/i18n/engine.rb
128
+ - lib/ember/i18n/railtie.rb
129
+ - lib/ember/i18n/rake.rb
130
+ - lib/ember/i18n/version.rb
131
+ - spec/ember_i18n_rails_spec.rb
132
+ - spec/resources/en.yml
133
+ - spec/spec_helper.rb
134
+ - vendor/assets/javascripts/ember-i18n.js
135
+ - vendor/assets/javascripts/i18n/translations.js.erb
136
+ homepage: http://rubygems.org/gems/ember-i18n-rails
137
+ licenses: []
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ segments:
149
+ - 0
150
+ hash: -3474424650723491457
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ segments:
158
+ - 0
159
+ hash: -3474424650723491457
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 1.8.23
163
+ signing_key:
164
+ specification_version: 3
165
+ summary: ''
166
+ test_files:
167
+ - spec/ember_i18n_rails_spec.rb
168
+ - spec/resources/en.yml
169
+ - spec/spec_helper.rb