memory_dictionary 1.0.0

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: 3dcd05232a97846c235a328f82a0bb93f10ccffb
4
+ data.tar.gz: 75165a219e877e80fb46961785d19a6f5070b925
5
+ SHA512:
6
+ metadata.gz: e7d51e55d9112e91e4b96dd7386000f79d0591aa360de1e27f8f1080d110719e9632613dbdc8c67e877175b4bc3790ecb2300d5929946d1a6a850574ad85ef4d
7
+ data.tar.gz: 1135c862bab53be2c573acc8918297676c1617b46b0e64e59dec3e60a60800737601cb1861a7bfb107023413b45900f113f259d68d50546ec520b99931686fc5
data/.env.sample ADDED
@@ -0,0 +1,3 @@
1
+ REDIS_URL='redis://localhost:6379'
2
+ MONGODB_URL=mongodb://localhost:27017:memory_dictionary_development
3
+ MONGODB_PORT=27017
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ spec/fixtures/cassettes
2
+ tmp/mongod
3
+ .env
4
+ doc/
5
+ .yardoc/
6
+ pkg/
7
+ Gemfile.lock
8
+ *.DS_Store
9
+ .bundle/
10
+ gem_graph.png
11
+ *.gem
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format documentation
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.2
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 2.1.2
3
+ before_install:
4
+ - gem install bundler
5
+ services:
6
+ - mongodb
7
+ env:
8
+ - CODECLIMATE_REPO_TOKEN=af27d02fda3ad85f536f089905b64ad9685d0b27279d849b90b4b1317ac7679d
data/.yardopts ADDED
@@ -0,0 +1,3 @@
1
+ --no-private
2
+ --title "Memory Dictionary"
3
+ --exclude version --exclude config_generator
data/Gemfile ADDED
@@ -0,0 +1,23 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'mongoid', '~> 5.1'
4
+ gem 'rubysl', platform: :rbx
5
+ gem 'yajl-ruby', :platforms=>[:rbx,:ruby]
6
+
7
+ gem 'dotenv', :groups => [:development, :test]
8
+
9
+ group :development do
10
+ gem 'rake'
11
+ gem 'pry'
12
+ gem 'pry-nav'
13
+ gem 'yard'
14
+ end
15
+
16
+ group :test do
17
+ gem 'rspec'
18
+ gem 'rspec-mocks'
19
+ gem 'rspec-expectations'
20
+ gem 'database_cleaner'
21
+ gem 'factory_girl', github: 'thoughtbot/factory_girl'
22
+ gem 'codeclimate-test-reporter', require: nil
23
+ end
data/LICENSE ADDED
@@ -0,0 +1,5 @@
1
+ Copyright (c) Lucas N Martins
2
+
3
+ Memory Dictionary is an Open Source project licensed under the terms of
4
+ the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
+ for license text.
data/Rakefile ADDED
@@ -0,0 +1,26 @@
1
+ require "bundler"
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rspec/core/rake_task"
5
+ RSpec::Core::RakeTask.new
6
+
7
+ task :default => :travis
8
+
9
+ task :environment do
10
+ require './spec/spec_helper'
11
+ end
12
+
13
+ desc 'Opens a Pry/IRB session with the environment loaded'
14
+ task :console => :environment do
15
+ #gotcha!
16
+ Mongoid.load!("spec/support/mongoid.yml", 'development')
17
+ binding.pry
18
+ end
19
+
20
+ task :travis do
21
+ ["rake spec", "rake build"].each do |cmd|
22
+ puts "Starting to run #{cmd}..."
23
+ system("export DISPLAY=:99.0 && bundle exec #{cmd}")
24
+ raise "#{cmd} failed!" unless $?.exitstatus == 0
25
+ end
26
+ end
data/Readme.md ADDED
@@ -0,0 +1,51 @@
1
+ [![Quality](https://codeclimate.com/github/lucasmartins/memory-dictionary.png)](https://codeclimate.com/github/lucasmartins/memory-dictionary) [![Coverage](https://codeclimate.com/github/lucasmartins/memory-dictionary/coverage.png)](https://codeclimate.com/github/lucasmartins/memory-dictionary) [![Build](https://travis-ci.org/lucasmartins/memory-dictionary.svg)](https://travis-ci.org/lucasmartins/memory-dictionary)
2
+
3
+ Memory Dictionary
4
+ =================
5
+
6
+ **IN PROGRESS**
7
+
8
+ Install
9
+ =======
10
+
11
+ You can:
12
+ ```
13
+ $ gem install memory_dictionary
14
+ ```
15
+
16
+ Or just add it to your Gemfile
17
+ ```ruby
18
+ gem 'memory_dictionary', '~> 1.0'
19
+ ```
20
+
21
+ Use
22
+ ===
23
+
24
+ Check the [specs](https://github.com/ContaBoa/memory_dictionary/tree/master/spec)
25
+
26
+ Docs
27
+ ====
28
+ You should check the [factories](https://github.com/ContaBoa/memory_dictionary/tree/master/spec/factories) to learn what you need to build your objects, and the [tests](https://github.com/ContaBoa/memory_dictionary/tree/master/spec/MemoryDictionary) to learn how to use them. But hey, we have docs [right here](http://rdoc.info/github/ContaBoa/memory_dictionary/master/frames).
29
+
30
+ Roadmap
31
+ =======
32
+
33
+ - Binary search;
34
+ - Redis backend;
35
+ - Postgres backend;
36
+ - HTTP (webservice) interface - so you don't need to be coding Ruby to use it!;
37
+
38
+ Contribute
39
+ ==========
40
+
41
+ Just fork [MemoryDictionary](https://github.com/ContaBoa/memory_dictionary), add your feature+spec, and make a pull request. **DO NOT** mess up with the version file though.
42
+
43
+ Support
44
+ =======
45
+
46
+ This is an opensource project so don't expect premium support, but don't be shy, post any troubles you're having in the [Issues](https://github.com/ContaBoa/memory_dictionary/issues) page and we'll do what we can to help.
47
+
48
+ License
49
+ =======
50
+
51
+ Please see [LICENSE](https://github.com/lucasmartins/memory_dictionary/blob/master/LICENSE) for licensing details.
@@ -0,0 +1,37 @@
1
+ if File.exists?('.env')
2
+ require 'dotenv'
3
+ Dotenv.load
4
+ end
5
+
6
+ require 'yaml'
7
+ require 'bundler'
8
+ require 'json'
9
+ require 'mongoid'
10
+ require 'yajl-ruby' if RUBY_PLATFORM=='ruby'
11
+
12
+ Encoding.default_internal = "utf-8"
13
+ Encoding.default_external = "utf-8"
14
+
15
+ module MemoryDictionary
16
+ require_relative 'memory_dictionary/errors'
17
+ require_relative 'memory_dictionary/word'
18
+ require_relative 'memory_dictionary/dictionary'
19
+ require_relative 'memory_dictionary/translator'
20
+ require_relative 'memory_dictionary/version'
21
+
22
+ # Returns the lib logger object
23
+ def self.logger
24
+ @logger || initialize_logger
25
+ end
26
+
27
+ # Initializes logger with MemoryDictionary setup
28
+ def self.initialize_logger(log_target = STDOUT)
29
+ oldlogger = @logger
30
+ @logger = Logger.new(log_target)
31
+ @logger.level = Logger::INFO
32
+ @logger.progname = 'memory_dictionary'
33
+ oldlogger.close if oldlogger && !$TESTING # don't want to close testing's STDOUT logging
34
+ @logger
35
+ end
36
+
37
+ end
@@ -0,0 +1,23 @@
1
+ class MemoryDictionary::Dictionary
2
+ include Mongoid::Document
3
+ field :name, type: String
4
+
5
+ embeds_many :words, class_name: 'MemoryDictionary::Word'
6
+
7
+ validates :name, uniqueness: true
8
+ index({ name: 1 }, { unique: true, name: 'dictionary_names_index' })
9
+ #index 'words.name' => 1
10
+
11
+ def translations
12
+ words.map(&:translation).uniq
13
+ end
14
+
15
+ def words_by_translation(translation)
16
+ words.where(translation: translation)
17
+ end
18
+
19
+ def append_word(name, translation)
20
+ words << MemoryDictionary::Word.new(name: name, translation: translation)
21
+ end
22
+
23
+ end
@@ -0,0 +1,6 @@
1
+ module MemoryDictionary::Errors
2
+ end
3
+
4
+ require_relative 'errors/dictionary_not_found_exception'
5
+ require_relative 'errors/word_not_found_exception'
6
+ require_relative 'errors/blacklisted_exception'
@@ -0,0 +1,2 @@
1
+ class MemoryDictionary::Errors::BlacklistedException < RuntimeError
2
+ end
@@ -0,0 +1,2 @@
1
+ class MemoryDictionary::Errors::DictionaryNotFoundException < RuntimeError
2
+ end
@@ -0,0 +1,2 @@
1
+ class MemoryDictionary::Errors::WordNotFoundException < RuntimeError
2
+ end
@@ -0,0 +1,31 @@
1
+ class MemoryDictionary::Translator
2
+ def initialize(dictionary_name)
3
+ begin
4
+ @dictionary = MemoryDictionary::Dictionary.find_by(name: dictionary_name)
5
+ rescue Mongoid::Errors::DocumentNotFound => e
6
+ MemoryDictionary.logger.debug e
7
+ raise MemoryDictionary::Errors::DictionaryNotFoundException
8
+ end
9
+ end
10
+
11
+ def translate(word)
12
+ begin
13
+ word = @dictionary.words.find_by(name: word)
14
+ word.translation
15
+ rescue Mongoid::Errors::DocumentNotFound => e
16
+ MemoryDictionary.logger.debug e
17
+ raise MemoryDictionary::Errors::WordNotFoundException
18
+ end
19
+ end
20
+
21
+ def add_word(word, translation, &block)
22
+ @dictionary.words << MemoryDictionary::Word.new(name: word, translation: translation)
23
+ block.call if block_given?
24
+ end
25
+
26
+ def self.add_word(dictionary, word, translation, &block)
27
+ translator = MemoryDictionary::Translator.new(dictionary)
28
+ translator.add_word(word, translation, &block)
29
+ end
30
+
31
+ end
@@ -0,0 +1,10 @@
1
+ # Keeps the versioning clean and simple.
2
+ module MemoryDictionary
3
+ module Version
4
+ MAJOR = 1
5
+ MINOR = 0
6
+ PATCH = 0
7
+ ALPHA = nil # ex: '.pre.1'
8
+ STRING = "#{MAJOR}.#{MINOR}.#{PATCH}#{ALPHA}"
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ class MemoryDictionary::Word
2
+ include Mongoid::Document
3
+ field :name, type: String
4
+ field :translation, type: String
5
+
6
+ embedded_in :dictionary, class_name: 'MemoryDictionary::Dictionary'
7
+
8
+ validates :name, uniqueness: true
9
+ validates :name, :translation, presence: true
10
+ index({ name: 1 }, { unique: true, name: 'dictionary_words_index' })
11
+
12
+ end
@@ -0,0 +1,40 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "memory_dictionary/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "memory_dictionary"
7
+ s.version = MemoryDictionary::Version::STRING
8
+ s.platform = Gem::Platform::RUBY
9
+ s.required_ruby_version = ">= 2.1.0"
10
+ s.authors = ["Lucas Martins"]
11
+ s.email = ["lucasmartins@railsnapraia.com"]
12
+ s.homepage = "http://rubygems.org/gems/memory_dictionary"
13
+ s.summary = "A general purposed memory dictionary for quick and dirty translations."
14
+ s.description = s.summary
15
+ s.license = "LGPL-3.0"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ if RUBY_ENGINE=='rbx'
23
+ s.add_dependency 'rubysl'
24
+ end
25
+ if RUBY_PLATFORM=='ruby'
26
+ s.add_dependency 'yajl-ruby'
27
+ end
28
+
29
+ s.add_dependency 'mongoid', '~> 5.1'
30
+
31
+ s.add_development_dependency "rspec", "~> 2.1"
32
+ s.add_development_dependency "rspec-mocks", "~> 2.1"
33
+ s.add_development_dependency "rspec-expectations", "~> 2.1"
34
+ s.add_development_dependency "database_cleaner", '~> 0'
35
+ s.add_development_dependency "factory_girl", '~> 0'
36
+ s.add_development_dependency "rake", '~> 0'
37
+ s.add_development_dependency "pry", '~> 0'
38
+ s.add_development_dependency "pry-nav", '~> 0'
39
+ s.add_development_dependency "yard", '~> 0'
40
+ end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ factory :dictionary, class: MemoryDictionary::Dictionary do
3
+ name 'rosetta-stone'
4
+
5
+ factory :dictionary_with_words, class: MemoryDictionary::Dictionary do
6
+ words {[MemoryDictionary::Word.new(name: 'ruby', translation: 'is awesome'), MemoryDictionary::Word.new(name: 'rubinius', translation: 'is faster')]}
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ factory :word, class: MemoryDictionary::Word do
3
+ name 'ruby'
4
+ translation 'is awesome'
5
+ factory :word_within_dictionary, class: MemoryDictionary::Word do
6
+ dictionary factory: :dictionary
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+
3
+ describe MemoryDictionary::Dictionary do
4
+ #smoke test
5
+
6
+ let(:dictionary) { create(:dictionary_with_words) }
7
+
8
+ before(:each) { dictionary.save }
9
+
10
+ describe "#words" do
11
+ it "has words" do
12
+ expect(dictionary.reload.words.count).to eq(2)
13
+ end
14
+ end
15
+
16
+ describe "#translations" do
17
+ it "retrieve translations" do
18
+ expect(dictionary.reload.translations).to eq(["is awesome", "is faster"])
19
+ end
20
+ end
21
+
22
+ describe "#words_by_translation" do
23
+ it "search words by translation" do
24
+ words = dictionary.reload.words_by_translation("is faster")
25
+ expect(words.count).to eq(1)
26
+ expect(words.first.name).to eq('rubinius')
27
+ end
28
+ end
29
+
30
+ describe "#append_word" do
31
+ it "appends a new word" do
32
+ expect{ dictionary.reload.append_word('jruby', 'is jruby...') }.to change{ dictionary.reload.words.count}.by 1
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,80 @@
1
+ require "spec_helper"
2
+
3
+ describe MemoryDictionary::Translator do
4
+
5
+ #smoke test
6
+ describe "#initialize" do
7
+
8
+ context 'when theres a dictionary' do
9
+ let(:dictionary) { create(:dictionary) }
10
+ let(:translator) { MemoryDictionary::Translator.new(dictionary.name) }
11
+ it "has a dictionary" do
12
+ expect{translator}.not_to raise_error
13
+ end
14
+ end
15
+
16
+ context 'when there is no dictionary' do
17
+ let(:translator) { MemoryDictionary::Translator.new('wut?') }
18
+ it "does not have a dictionary" do
19
+ expect{translator}.to raise_error(MemoryDictionary::Errors::DictionaryNotFoundException)
20
+ end
21
+ end
22
+
23
+ end
24
+
25
+ describe '#translate_word' do
26
+ let(:dictionary) { create(:dictionary_with_words) }
27
+ let(:translator) { MemoryDictionary::Translator.new(dictionary.name) }
28
+ context 'when word exists' do
29
+ it 'translates the word' do
30
+ expect(translator.translate('ruby')).to eq('is awesome')
31
+ end
32
+ end
33
+ context 'when word do not exist' do
34
+ it 'raises WordNotFoundException' do
35
+ expect{translator.translate('waka waka')}.to raise_error(MemoryDictionary::Errors::WordNotFoundException)
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#add_word' do
41
+ let(:dictionary) { create(:dictionary, name: 'empty-dic') }
42
+ let(:translator) { MemoryDictionary::Translator.new(dictionary.name) }
43
+
44
+ context 'without a block' do
45
+ it 'adds a new word to the dictionary' do
46
+ expect(dictionary.words.count).to eq(0)
47
+ expect{ translator.add_word('new word', 'new translation') }.to change{ dictionary.reload.words.count }.by(1)
48
+ end
49
+ it 'translates a recently added word' do
50
+ translator.add_word('recently added word', 'recently added translation')
51
+ expect(translator.translate('recently added word')).to eq('recently added translation')
52
+ end
53
+ end
54
+
55
+ context 'with a block' do
56
+ it 'translates a word and runs a block' do
57
+ translator.add_word('recently added word', 'recently added translation') do
58
+ expect(translator.translate('recently added word')).to eq('recently added translation')
59
+ end
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ describe '.add_word' do
66
+ let(:dictionary) { create(:dictionary, name: 'instance-dic') }
67
+ let(:translator) { MemoryDictionary::Translator.new(dictionary.name) }
68
+
69
+ it 'calls the instance method with all the params' do
70
+ pending 'unstable travis exec'
71
+ translator
72
+ block = lambda do
73
+ puts "I'm a block"
74
+ end
75
+ MemoryDictionary::Translator.any_instance.should_receive(:add_word).with('new word', 'new translation', &block)
76
+ MemoryDictionary::Translator.add_word('instance-dic', 'new word', 'new translation', &block)
77
+ end
78
+ end
79
+
80
+ end
@@ -0,0 +1,11 @@
1
+ require "spec_helper"
2
+
3
+ describe MemoryDictionary::Word do
4
+ #smoke test
5
+ describe "#dictionary" do
6
+ let(:word) { create(:word_within_dictionary) }
7
+ it "belongs to a dictionary" do
8
+ expect(word.dictionary.id).not_to be_nil
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ require "spec_helper"
2
+
3
+ describe MemoryDictionary, "::version" do
4
+ it "returns a valid version" do
5
+ version = MemoryDictionary::Version::STRING
6
+ expect(version.split('.').size).to be >= 3
7
+ end
8
+ end
@@ -0,0 +1,52 @@
1
+ require 'codeclimate-test-reporter'
2
+ CodeClimate::TestReporter.start
3
+
4
+ require 'pry'
5
+ require 'pry-nav'
6
+ require 'memory_dictionary'
7
+ require 'rspec'
8
+ require 'rspec/mocks'
9
+ require 'rspec/expectations'
10
+ require "pathname"
11
+ require 'database_cleaner'
12
+ require 'factory_girl'
13
+
14
+ MemoryDictionary::logger.level = Logger::ERROR
15
+
16
+ if ENV['TRAVIS']==true
17
+ begin
18
+ require 'coveralls'
19
+ Coveralls.wear!
20
+ rescue Exception => e
21
+ puts "Coveralls not available!"
22
+ end
23
+ end
24
+
25
+ SPECDIR = Pathname.new(File.dirname(__FILE__))
26
+ TMPDIR = SPECDIR.join("tmp")
27
+
28
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|r| require r}
29
+ Dir[File.dirname(__FILE__) + "/factories/**/*.rb"].each {|r| require r}
30
+
31
+ RSpec.configure do |config|
32
+ config.treat_symbols_as_metadata_keys_with_true_values = true
33
+ config.order = :random
34
+ config.include FactoryGirl::Syntax::Methods
35
+ config.before { FileUtils.mkdir_p(TMPDIR) }
36
+ config.mock_with :rspec
37
+
38
+ config.before(:suite) do
39
+ DatabaseCleaner.clean_with(:truncation)
40
+ DatabaseCleaner.strategy = :truncation
41
+ end
42
+
43
+ config.around(:each) do |example|
44
+ DatabaseCleaner[:mongoid].strategy = :truncation
45
+ DatabaseCleaner.strategy = :truncation
46
+ DatabaseCleaner.start
47
+ example.run
48
+ DatabaseCleaner.clean
49
+ end
50
+ end
51
+
52
+ Mongoid.load!("spec/support/mongoid.yml", 'test')
@@ -0,0 +1,23 @@
1
+ development:
2
+ # Configure available database sessions. (required)
3
+ sessions:
4
+ # Defines the default session. (required)
5
+ default:
6
+ # Defines the name of the default database that Mongoid can connect to.
7
+ # (required).
8
+ database: memory_dictionary_development
9
+ # Provides the hosts the default session can connect to. Must be an array
10
+ # of host:port pairs. (required)
11
+ hosts:
12
+ - localhost:<%= ENV['MONGODB_PORT'] || '27017' %>
13
+ test:
14
+ sessions:
15
+ default:
16
+ database: memory_dictionary_test
17
+ hosts:
18
+ - localhost:<%= ENV['MONGODB_PORT'] || '27017' %>
19
+ options:
20
+ # In the test environment we lower the retries and retry interval to
21
+ # low amounts for fast failures.
22
+ max_retries: 1
23
+ retry_interval: 0
data/tmp/.keep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,222 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: memory_dictionary
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Lucas Martins
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mongoid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-mocks
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-expectations
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: database_cleaner
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: factory_girl
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry-nav
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: yard
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: A general purposed memory dictionary for quick and dirty translations.
154
+ email:
155
+ - lucasmartins@railsnapraia.com
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - ".env.sample"
161
+ - ".gitignore"
162
+ - ".rspec"
163
+ - ".ruby-version"
164
+ - ".travis.yml"
165
+ - ".yardopts"
166
+ - Gemfile
167
+ - LICENSE
168
+ - Rakefile
169
+ - Readme.md
170
+ - lib/memory_dictionary.rb
171
+ - lib/memory_dictionary/dictionary.rb
172
+ - lib/memory_dictionary/errors.rb
173
+ - lib/memory_dictionary/errors/blacklisted_exception.rb
174
+ - lib/memory_dictionary/errors/dictionary_not_found_exception.rb
175
+ - lib/memory_dictionary/errors/word_not_found_exception.rb
176
+ - lib/memory_dictionary/translator.rb
177
+ - lib/memory_dictionary/version.rb
178
+ - lib/memory_dictionary/word.rb
179
+ - memory_dictionary.gemspec
180
+ - spec/factories/dictionary.rb
181
+ - spec/factories/word.rb
182
+ - spec/memory_dictionary/dictionary_spec.rb
183
+ - spec/memory_dictionary/translator_spec.rb
184
+ - spec/memory_dictionary/word_spec.rb
185
+ - spec/memory_dictionary_spec.rb
186
+ - spec/spec_helper.rb
187
+ - spec/support/mongoid.yml
188
+ - tmp/.keep
189
+ homepage: http://rubygems.org/gems/memory_dictionary
190
+ licenses:
191
+ - LGPL-3.0
192
+ metadata: {}
193
+ post_install_message:
194
+ rdoc_options: []
195
+ require_paths:
196
+ - lib
197
+ required_ruby_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: 2.1.0
202
+ required_rubygems_version: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ requirements: []
208
+ rubyforge_project:
209
+ rubygems_version: 2.6.4
210
+ signing_key:
211
+ specification_version: 4
212
+ summary: A general purposed memory dictionary for quick and dirty translations.
213
+ test_files:
214
+ - spec/factories/dictionary.rb
215
+ - spec/factories/word.rb
216
+ - spec/memory_dictionary/dictionary_spec.rb
217
+ - spec/memory_dictionary/translator_spec.rb
218
+ - spec/memory_dictionary/word_spec.rb
219
+ - spec/memory_dictionary_spec.rb
220
+ - spec/spec_helper.rb
221
+ - spec/support/mongoid.yml
222
+ has_rdoc: