microscope 0.6.2 → 1.0.0
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 +4 -4
- data/.rubocop.yml +20 -8
- data/.travis.yml +4 -1
- data/README.md +2 -21
- data/lib/microscope.rb +12 -29
- data/lib/microscope/instance_method.rb +1 -1
- data/lib/microscope/instance_method/boolean_instance_method.rb +7 -9
- data/lib/microscope/instance_method/datetime_instance_method.rb +5 -6
- data/lib/microscope/scope.rb +1 -1
- data/lib/microscope/utils.rb +0 -15
- data/lib/microscope/version.rb +1 -1
- data/microscope.gemspec +4 -5
- data/spec/microscope/instance_method/boolean_instance_method_spec.rb +7 -5
- data/spec/microscope/instance_method/date_instance_method_spec.rb +4 -9
- data/spec/microscope/instance_method/datetime_instance_method_spec.rb +7 -9
- data/spec/microscope_spec.rb +3 -3
- data/spec/spec_helper.rb +0 -7
- metadata +12 -27
- data/data/irregular_verbs.yml +0 -155
- data/spec/microscope/utils_spec.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dae239d9a336e0f5dae1eb39800dbf21eecef2d5
|
4
|
+
data.tar.gz: 2afd2fc1a3eaa7dddb9282a1f1a8daee169a8ec9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9348ae5d7f3f2bfd6be7b7f4beebe8f1b82fd052ba0ca56df81c7f66dc81825e6281a8153c0628a501be3d91c29cb0003396c5ecf6b0f6c6b5393e1cbe053316
|
7
|
+
data.tar.gz: cbcf09bb50632e1794b7c6095e03e3ef7bb1e7adc97d7538f906cf4e027a59dd9ce1a3e35e1c70e598d285fb813b22b6e1f6a8dcb9556dd6f5fef6d512fb805e
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
AllCops:
|
2
|
-
|
2
|
+
Exclude:
|
3
3
|
- microscope.gemspec
|
4
4
|
|
5
5
|
Documentation:
|
@@ -11,9 +11,6 @@ Encoding:
|
|
11
11
|
LineLength:
|
12
12
|
Max: 200
|
13
13
|
|
14
|
-
ClassLength:
|
15
|
-
Max: 200
|
16
|
-
|
17
14
|
AccessModifierIndentation:
|
18
15
|
EnforcedStyle: outdent
|
19
16
|
|
@@ -37,14 +34,29 @@ ColonMethodCall:
|
|
37
34
|
AsciiComments:
|
38
35
|
Enabled: false
|
39
36
|
|
40
|
-
Lambda:
|
41
|
-
Enabled: false
|
42
|
-
|
43
37
|
RegexpLiteral:
|
44
38
|
Enabled: false
|
45
39
|
|
46
40
|
AssignmentInCondition:
|
47
41
|
Enabled: false
|
48
42
|
|
49
|
-
|
43
|
+
ParameterLists:
|
44
|
+
CountKeywordArgs: false
|
45
|
+
|
46
|
+
SingleLineBlockParams:
|
47
|
+
Methods:
|
48
|
+
- reduce:
|
49
|
+
- memo
|
50
|
+
- item
|
51
|
+
|
52
|
+
Metrics/AbcSize:
|
50
53
|
Enabled: false
|
54
|
+
|
55
|
+
Style/CollectionMethods:
|
56
|
+
Enabled: true
|
57
|
+
|
58
|
+
Style/SymbolArray:
|
59
|
+
Enabled: true
|
60
|
+
|
61
|
+
Style/ExtraSpacing:
|
62
|
+
Enabled: true
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -7,7 +7,6 @@
|
|
7
7
|
<br /><br />
|
8
8
|
<a href="https://rubygems.org/gems/microscope"><img src="http://img.shields.io/gem/v/microscope.svg" /></a>
|
9
9
|
<a href="https://codeclimate.com/github/mirego/microscope"><img src="http://img.shields.io/codeclimate/github/mirego/microscope.svg" /></a>
|
10
|
-
<a href='https://coveralls.io/r/mirego/microscope?branch=master'><img src="http://img.shields.io/coveralls/mirego/microscope.svg" /></a>
|
11
10
|
<a href='https://gemnasium.com/mirego/microscope'><img src="http://img.shields.io/gemnasium/mirego/microscope.svg" /></a>
|
12
11
|
<a href="https://travis-ci.org/mirego/microscope"><img src="http://img.shields.io/travis/mirego/microscope.svg" /></a>
|
13
12
|
</p>
|
@@ -73,7 +72,7 @@ Event.not_archived
|
|
73
72
|
# SELECT * FROM `events` where `events`.`archived_on` IS NULL OR `events`.`archived_on` > '2013-07-05 15:43:42'
|
74
73
|
```
|
75
74
|
|
76
|
-
Microscope also adds
|
75
|
+
Microscope also adds a few instance methods to the model per scope.
|
77
76
|
|
78
77
|
```ruby
|
79
78
|
event = Event.archived.first
|
@@ -92,7 +91,7 @@ event.reload
|
|
92
91
|
event.archived? # => false
|
93
92
|
event.archived_at # => nil
|
94
93
|
|
95
|
-
event.
|
94
|
+
event.mark_as_archived! # (same as #mark_as_archived but save the record immediately)
|
96
95
|
event.archived? # => true
|
97
96
|
event.archived_at # => 2013-07-05 15:43:42
|
98
97
|
event.reload
|
@@ -102,24 +101,6 @@ event.archived_at # => 2013-07-05 15:43:42
|
|
102
101
|
|
103
102
|
### Options
|
104
103
|
|
105
|
-
#### Special verbs
|
106
|
-
|
107
|
-
Microscope uses a rather simple process to convert field names to infinitive
|
108
|
-
verbs. It just removes the `d` if there’s one at the end of the verb. It also
|
109
|
-
has its own irregular verbs list.
|
110
|
-
|
111
|
-
For example, a `liked_at` field name will give `like!` and `unlike!` instance
|
112
|
-
methods to records.
|
113
|
-
|
114
|
-
But you can configure Microscope to use your own special verbs. For example:
|
115
|
-
|
116
|
-
```ruby
|
117
|
-
# config/initializers/microscope.rb
|
118
|
-
Microscope.configure do |config|
|
119
|
-
config.special_verbs = { 'extracted' => 'extract', 'started' => 'start' }
|
120
|
-
end
|
121
|
-
```
|
122
|
-
|
123
104
|
#### On `acts_as_microscope`
|
124
105
|
|
125
106
|
You can also use a few options when calling `acts_as_microscope`:
|
data/lib/microscope.rb
CHANGED
@@ -17,39 +17,22 @@ require 'microscope/instance_method/datetime_instance_method'
|
|
17
17
|
require 'microscope/instance_method/date_instance_method'
|
18
18
|
|
19
19
|
module Microscope
|
20
|
-
IRREGULAR_VERBS_FILE = File.expand_path('../../data/irregular_verbs.yml', __FILE__)
|
21
|
-
|
22
|
-
def self.special_verbs
|
23
|
-
irregular_verbs_from_yaml ||= YAML.load_file(IRREGULAR_VERBS_FILE)
|
24
|
-
special_verbs_from_configuration ||= configuration.special_verbs
|
25
|
-
|
26
|
-
@special_verbs ||= begin
|
27
|
-
irregular_verbs_from_yaml.merge(special_verbs_from_configuration)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.configure
|
32
|
-
@configuration = configuration
|
33
|
-
yield(@configuration)
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.configuration
|
37
|
-
@configuration ||= OpenStruct.new(special_verbs: {})
|
38
|
-
end
|
39
20
|
end
|
40
21
|
|
41
|
-
|
42
|
-
|
43
|
-
|
22
|
+
module ActiveRecord
|
23
|
+
class Base
|
24
|
+
def self.acts_as_microscope(options = {})
|
25
|
+
return unless table_exists?
|
44
26
|
|
45
|
-
|
46
|
-
|
27
|
+
except = options[:except] || []
|
28
|
+
model_columns = columns.dup.reject { |c| except.include?(c.name.to_sym) }
|
47
29
|
|
48
|
-
|
49
|
-
|
50
|
-
|
30
|
+
if only = options[:only]
|
31
|
+
model_columns = model_columns.select { |c| only.include?(c.name.to_sym) }
|
32
|
+
end
|
51
33
|
|
52
|
-
|
53
|
-
|
34
|
+
Microscope::Scope.inject_scopes(self, model_columns, options)
|
35
|
+
Microscope::InstanceMethod.inject_instance_methods(self, model_columns, options)
|
36
|
+
end
|
54
37
|
end
|
55
38
|
end
|
@@ -10,7 +10,7 @@ module Microscope
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# Inject ActiveRecord scopes into a model
|
13
|
-
def self.inject_instance_methods(model, fields,
|
13
|
+
def self.inject_instance_methods(model, fields, _options)
|
14
14
|
fields.each do |field|
|
15
15
|
scope = "#{field.type.to_s.camelize}InstanceMethod"
|
16
16
|
"Microscope::InstanceMethod::#{scope}".constantize.new(model, field).apply if const_defined?(scope)
|
@@ -2,25 +2,23 @@ module Microscope
|
|
2
2
|
class InstanceMethod
|
3
3
|
class BooleanInstanceMethod < InstanceMethod
|
4
4
|
def apply
|
5
|
-
infinitive_verb = Microscope::Utils.past_participle_to_infinitive(field.name)
|
6
|
-
|
7
5
|
model.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
8
|
-
define_method
|
9
|
-
|
6
|
+
define_method 'mark_as_#{field.name}!' do
|
7
|
+
mark_as_#{field.name}
|
10
8
|
save!
|
11
9
|
end
|
12
10
|
|
13
|
-
define_method
|
14
|
-
|
11
|
+
define_method 'mark_as_not_#{field.name}!' do
|
12
|
+
mark_as_not_#{field.name}
|
15
13
|
save!
|
16
14
|
end
|
17
|
-
alias_method '
|
15
|
+
alias_method 'mark_as_un#{field.name}!', 'mark_as_not_#{field.name}!'
|
18
16
|
|
19
|
-
define_method
|
17
|
+
define_method 'mark_as_#{field.name}' do
|
20
18
|
send("#{field.name}=", true)
|
21
19
|
end
|
22
20
|
|
23
|
-
define_method
|
21
|
+
define_method 'mark_as_not_#{field.name}' do
|
24
22
|
send("#{field.name}=", false)
|
25
23
|
end
|
26
24
|
alias_method 'mark_as_un#{field.name}', 'mark_as_not_#{field.name}'
|
@@ -10,7 +10,6 @@ module Microscope
|
|
10
10
|
|
11
11
|
def apply
|
12
12
|
@cropped_field = field.name.gsub(@cropped_field_regex, '')
|
13
|
-
@infinitive_verb = Microscope::Utils.past_participle_to_infinitive(cropped_field)
|
14
13
|
|
15
14
|
model.class_eval(apply_methods) if @field_name =~ @cropped_field_regex
|
16
15
|
end
|
@@ -38,13 +37,13 @@ module Microscope
|
|
38
37
|
|
39
38
|
def apply_bang_methods
|
40
39
|
<<-RUBY
|
41
|
-
define_method '#{@
|
42
|
-
|
40
|
+
define_method 'mark_as_#{@cropped_field}!' do
|
41
|
+
mark_as_#{@cropped_field}
|
43
42
|
save!
|
44
43
|
end
|
45
44
|
|
46
|
-
define_method '
|
47
|
-
|
45
|
+
define_method 'mark_as_not_#{@cropped_field}!' do
|
46
|
+
mark_as_not_#{@cropped_field}
|
48
47
|
save!
|
49
48
|
end
|
50
49
|
RUBY
|
@@ -63,7 +62,7 @@ module Microscope
|
|
63
62
|
|
64
63
|
def apply_aliases
|
65
64
|
<<-RUBY
|
66
|
-
alias_method '
|
65
|
+
alias_method 'mark_as_un#{@cropped_field}!', 'mark_as_not_#{@cropped_field}!'
|
67
66
|
alias_method 'mark_as_un#{@cropped_field}', 'mark_as_not_#{@cropped_field}'
|
68
67
|
alias_method 'un#{@cropped_field}?', 'not_#{@cropped_field}?'
|
69
68
|
RUBY
|
data/lib/microscope/scope.rb
CHANGED
@@ -16,7 +16,7 @@ module Microscope
|
|
16
16
|
end
|
17
17
|
|
18
18
|
# Inject ActiveRecord scopes into a model
|
19
|
-
def self.inject_scopes(model, fields,
|
19
|
+
def self.inject_scopes(model, fields, _options)
|
20
20
|
fields.each do |field|
|
21
21
|
scope = "#{field.type.to_s.camelize}Scope"
|
22
22
|
"Microscope::Scope::#{scope}".constantize.new(model, field).apply if const_defined?(scope)
|
data/lib/microscope/utils.rb
CHANGED
@@ -1,20 +1,5 @@
|
|
1
1
|
module Microscope
|
2
2
|
module Utils
|
3
|
-
# Convert a past participle to its infinitive form
|
4
|
-
def self.past_participle_to_infinitive(key)
|
5
|
-
*key, participle = key.split('_')
|
6
|
-
|
7
|
-
infinitive = participle
|
8
|
-
|
9
|
-
if Microscope.special_verbs.include?(participle)
|
10
|
-
infinitive = Microscope.special_verbs[participle]
|
11
|
-
elsif participle =~ /ed$/
|
12
|
-
infinitive = participle.sub(/d$/, '')
|
13
|
-
end
|
14
|
-
|
15
|
-
(key << infinitive).join('_')
|
16
|
-
end
|
17
|
-
|
18
3
|
# Convert a value to its boolean representation
|
19
4
|
def self.value_to_boolean(value)
|
20
5
|
![nil, false, 0, '0', 'f', 'F', 'false', 'FALSE'].include?(value.presence)
|
data/lib/microscope/version.rb
CHANGED
data/microscope.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'microscope/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'microscope'
|
8
8
|
spec.version = Microscope::VERSION
|
9
|
-
spec.authors = ['Simon Prévost', 'Rémi Prévost']
|
10
|
-
spec.email = ['sprevost@mirego.com', 'rprevost@mirego.com']
|
9
|
+
spec.authors = ['Simon Prévost', 'Rémi Prévost', 'Samuel Garneau']
|
10
|
+
spec.email = ['sprevost@mirego.com', 'rprevost@mirego.com', 'sgarneau@mirego.com']
|
11
11
|
spec.description = 'Microscope adds useful scopes targeting ActiveRecord boolean and datetime fields.'
|
12
12
|
spec.summary = spec.description
|
13
13
|
spec.homepage = 'https://github.com/mirego/microscope'
|
@@ -23,11 +23,10 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
25
25
|
spec.add_development_dependency 'rake'
|
26
|
-
spec.add_development_dependency 'rspec', '3.
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.1'
|
27
27
|
spec.add_development_dependency 'sqlite3'
|
28
28
|
spec.add_development_dependency 'pg'
|
29
29
|
spec.add_development_dependency 'mysql2', '~> 0.3.13'
|
30
|
-
spec.add_development_dependency '
|
31
|
-
spec.add_development_dependency 'rubocop', '0.20.1'
|
30
|
+
spec.add_development_dependency 'rubocop', '~> 0.28'
|
32
31
|
spec.add_development_dependency 'phare'
|
33
32
|
end
|
@@ -11,15 +11,17 @@ describe Microscope::InstanceMethod::BooleanInstanceMethod do
|
|
11
11
|
microscope 'Animal'
|
12
12
|
end
|
13
13
|
|
14
|
-
describe '#
|
14
|
+
describe '#mark_as_fed!' do
|
15
15
|
let(:animal) { Animal.create(fed: false) }
|
16
|
-
it { expect { animal.
|
16
|
+
it { expect { animal.mark_as_fed! }.to change { animal.reload.fed? }.from(false).to(true) }
|
17
|
+
it { expect(animal).to respond_to(:mark_as_fed!) }
|
17
18
|
end
|
18
19
|
|
19
|
-
describe '#
|
20
|
+
describe '#mark_as_not_fed!' do
|
20
21
|
let(:animal) { Animal.create(fed: true) }
|
21
|
-
it { expect { animal.
|
22
|
-
it { expect(animal).to respond_to(:
|
22
|
+
it { expect { animal.mark_as_not_fed! }.to change { animal.reload.fed? }.from(true).to(false) }
|
23
|
+
it { expect(animal).to respond_to(:mark_as_unfed!) }
|
24
|
+
it { expect(animal).to respond_to(:mark_as_not_fed!) }
|
23
25
|
end
|
24
26
|
|
25
27
|
describe '#mark_as_fed' do
|
@@ -2,10 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Microscope::InstanceMethod::DateInstanceMethod do
|
4
4
|
before do
|
5
|
-
Microscope.configure do |config|
|
6
|
-
config.special_verbs = { 'started' => 'start' }
|
7
|
-
end
|
8
|
-
|
9
5
|
run_migration do
|
10
6
|
create_table(:events, force: true) do |t|
|
11
7
|
t.date :start_date, default: nil
|
@@ -77,20 +73,19 @@ describe Microscope::InstanceMethod::DateInstanceMethod do
|
|
77
73
|
end
|
78
74
|
end
|
79
75
|
|
80
|
-
describe '#
|
76
|
+
describe '#mark_as_started!' do
|
81
77
|
let(:stubbed_date) { Date.parse('2020-03-18 08:00:00') }
|
82
78
|
before { allow(Date).to receive(:today).and_return(stubbed_date) }
|
83
79
|
|
84
80
|
let(:event) { Event.create(started_on: nil) }
|
85
|
-
it { expect { event.
|
81
|
+
it { expect { event.mark_as_started! }.to change { event.reload.started_on }.from(nil).to(stubbed_date) }
|
86
82
|
end
|
87
83
|
|
88
|
-
describe '#
|
84
|
+
describe '#mark_as_not_started!' do
|
89
85
|
let(:stubbed_date) { Date.parse('2020-03-18 08:00:00') }
|
90
86
|
|
91
87
|
let(:event) { Event.create(started_on: stubbed_date) }
|
92
|
-
it { expect { event.
|
93
|
-
it { expect(event).to respond_to(:unstart!) }
|
88
|
+
it { expect { event.mark_as_not_started! }.to change { event.reload.started_on }.from(stubbed_date).to(nil) }
|
94
89
|
end
|
95
90
|
|
96
91
|
describe '#mark_as_started' do
|
@@ -2,10 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Microscope::InstanceMethod::DatetimeInstanceMethod do
|
4
4
|
before do
|
5
|
-
Microscope.configure do |config|
|
6
|
-
config.special_verbs = { 'started' => 'start' }
|
7
|
-
end
|
8
|
-
|
9
5
|
run_migration do
|
10
6
|
create_table(:events, force: true) do |t|
|
11
7
|
t.datetime :started_at, default: nil
|
@@ -66,20 +62,22 @@ describe Microscope::InstanceMethod::DatetimeInstanceMethod do
|
|
66
62
|
end
|
67
63
|
end
|
68
64
|
|
69
|
-
describe '#
|
65
|
+
describe '#mark_as_started!' do
|
70
66
|
let(:stubbed_date) { Time.parse('2020-03-18 08:00:00') }
|
71
67
|
before { allow(Time).to receive(:now).and_return(stubbed_date) }
|
72
68
|
|
73
69
|
let(:event) { Event.create(started_at: nil) }
|
74
|
-
it { expect { event.
|
70
|
+
it { expect { event.mark_as_started! }.to change { event.reload.started_at }.from(nil).to(stubbed_date) }
|
71
|
+
it { expect(event).to respond_to(:mark_as_started!) }
|
75
72
|
end
|
76
73
|
|
77
|
-
describe '#
|
74
|
+
describe '#mark_as_not_started!' do
|
78
75
|
let(:stubbed_date) { Time.parse('2020-03-18 08:00:00') }
|
79
76
|
|
80
77
|
let(:event) { Event.create(started_at: stubbed_date) }
|
81
|
-
it { expect { event.
|
82
|
-
it { expect(event).to respond_to(:
|
78
|
+
it { expect { event.mark_as_not_started! }.to change { event.reload.started_at }.from(stubbed_date).to(nil) }
|
79
|
+
it { expect(event).to respond_to(:mark_as_unstarted!) }
|
80
|
+
it { expect(event).to respond_to(:mark_as_not_started!) }
|
83
81
|
end
|
84
82
|
|
85
83
|
describe '#mark_as_started' do
|
data/spec/microscope_spec.rb
CHANGED
@@ -23,7 +23,7 @@ describe Microscope do
|
|
23
23
|
|
24
24
|
describe :except do
|
25
25
|
before do
|
26
|
-
microscope 'User', except:
|
26
|
+
microscope 'User', except: %i(admin removed_at ended_on)
|
27
27
|
end
|
28
28
|
|
29
29
|
it { expect(User).to respond_to :active }
|
@@ -57,7 +57,7 @@ describe Microscope do
|
|
57
57
|
|
58
58
|
describe :only do
|
59
59
|
before do
|
60
|
-
microscope 'User', only:
|
60
|
+
microscope 'User', only: %i(admin removed_at ended_on)
|
61
61
|
end
|
62
62
|
|
63
63
|
it { expect(User).to_not respond_to :active }
|
@@ -91,7 +91,7 @@ describe Microscope do
|
|
91
91
|
|
92
92
|
describe 'except and only' do
|
93
93
|
before do
|
94
|
-
microscope 'User', only:
|
94
|
+
microscope 'User', only: %i(admin started_on), except: %i(active)
|
95
95
|
end
|
96
96
|
|
97
97
|
it { expect(User).to_not respond_to :active }
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
2
2
|
|
3
|
-
require 'coveralls'
|
4
|
-
Coveralls.wear!
|
5
|
-
|
6
3
|
require 'rspec'
|
7
4
|
require 'sqlite3'
|
8
5
|
require 'mysql2'
|
@@ -27,9 +24,5 @@ RSpec.configure do |config|
|
|
27
24
|
# Establish ActiveRecord database connection
|
28
25
|
adapter = ENV['DB_ADAPTER'] || 'sqlite3'
|
29
26
|
setup_database(adapter: adapter, database: 'microscope_test')
|
30
|
-
|
31
|
-
# Reset internal variables
|
32
|
-
Microscope.instance_variable_set(:@configuration, nil)
|
33
|
-
Microscope.instance_variable_set(:@special_verbs, nil)
|
34
27
|
end
|
35
28
|
end
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: microscope
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Prévost
|
8
8
|
- Rémi Prévost
|
9
|
+
- Samuel Garneau
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: activesupport
|
@@ -71,16 +72,16 @@ dependencies:
|
|
71
72
|
name: rspec
|
72
73
|
requirement: !ruby/object:Gem::Requirement
|
73
74
|
requirements:
|
74
|
-
- -
|
75
|
+
- - "~>"
|
75
76
|
- !ruby/object:Gem::Version
|
76
|
-
version: 3.
|
77
|
+
version: '3.1'
|
77
78
|
type: :development
|
78
79
|
prerelease: false
|
79
80
|
version_requirements: !ruby/object:Gem::Requirement
|
80
81
|
requirements:
|
81
|
-
- -
|
82
|
+
- - "~>"
|
82
83
|
- !ruby/object:Gem::Version
|
83
|
-
version: 3.
|
84
|
+
version: '3.1'
|
84
85
|
- !ruby/object:Gem::Dependency
|
85
86
|
name: sqlite3
|
86
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,34 +124,20 @@ dependencies:
|
|
123
124
|
- - "~>"
|
124
125
|
- !ruby/object:Gem::Version
|
125
126
|
version: 0.3.13
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: coveralls
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
133
|
-
type: :development
|
134
|
-
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
140
127
|
- !ruby/object:Gem::Dependency
|
141
128
|
name: rubocop
|
142
129
|
requirement: !ruby/object:Gem::Requirement
|
143
130
|
requirements:
|
144
|
-
- -
|
131
|
+
- - "~>"
|
145
132
|
- !ruby/object:Gem::Version
|
146
|
-
version: 0.
|
133
|
+
version: '0.28'
|
147
134
|
type: :development
|
148
135
|
prerelease: false
|
149
136
|
version_requirements: !ruby/object:Gem::Requirement
|
150
137
|
requirements:
|
151
|
-
- -
|
138
|
+
- - "~>"
|
152
139
|
- !ruby/object:Gem::Version
|
153
|
-
version: 0.
|
140
|
+
version: '0.28'
|
154
141
|
- !ruby/object:Gem::Dependency
|
155
142
|
name: phare
|
156
143
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,6 +157,7 @@ description: Microscope adds useful scopes targeting ActiveRecord boolean and da
|
|
170
157
|
email:
|
171
158
|
- sprevost@mirego.com
|
172
159
|
- rprevost@mirego.com
|
160
|
+
- sgarneau@mirego.com
|
173
161
|
executables: []
|
174
162
|
extensions: []
|
175
163
|
extra_rdoc_files: []
|
@@ -182,7 +170,6 @@ files:
|
|
182
170
|
- LICENSE.md
|
183
171
|
- README.md
|
184
172
|
- Rakefile
|
185
|
-
- data/irregular_verbs.yml
|
186
173
|
- gemfiles/Gemfile.activerecord-4.1
|
187
174
|
- lib/microscope.rb
|
188
175
|
- lib/microscope/instance_method.rb
|
@@ -202,7 +189,6 @@ files:
|
|
202
189
|
- spec/microscope/scope/boolean_scope_spec.rb
|
203
190
|
- spec/microscope/scope/date_scope_spec.rb
|
204
191
|
- spec/microscope/scope/datetime_scope_spec.rb
|
205
|
-
- spec/microscope/utils_spec.rb
|
206
192
|
- spec/microscope_spec.rb
|
207
193
|
- spec/spec_helper.rb
|
208
194
|
- spec/support/macros/database/database_adapter.rb
|
@@ -243,7 +229,6 @@ test_files:
|
|
243
229
|
- spec/microscope/scope/boolean_scope_spec.rb
|
244
230
|
- spec/microscope/scope/date_scope_spec.rb
|
245
231
|
- spec/microscope/scope/datetime_scope_spec.rb
|
246
|
-
- spec/microscope/utils_spec.rb
|
247
232
|
- spec/microscope_spec.rb
|
248
233
|
- spec/spec_helper.rb
|
249
234
|
- spec/support/macros/database/database_adapter.rb
|
data/data/irregular_verbs.yml
DELETED
@@ -1,155 +0,0 @@
|
|
1
|
-
arisen: arise
|
2
|
-
awoken: awake
|
3
|
-
been: be
|
4
|
-
borne: bear
|
5
|
-
beaten: beat
|
6
|
-
beat: beat
|
7
|
-
become: become
|
8
|
-
begun: begin
|
9
|
-
bent: bend
|
10
|
-
bet: bet
|
11
|
-
bitten: bite
|
12
|
-
bled: bleed
|
13
|
-
blown: blow
|
14
|
-
broken: break
|
15
|
-
brought: bring
|
16
|
-
built: build
|
17
|
-
burnt: burn
|
18
|
-
burst: burst
|
19
|
-
bought: buy
|
20
|
-
caught: catch
|
21
|
-
cancelled: cancel
|
22
|
-
chosen: choose
|
23
|
-
clung: cling
|
24
|
-
come: come
|
25
|
-
cost: cost
|
26
|
-
crept: creep
|
27
|
-
cut: cut
|
28
|
-
dealt: deal
|
29
|
-
dug: dig
|
30
|
-
dived: dive
|
31
|
-
done: do
|
32
|
-
drawn: draw
|
33
|
-
dreamt: dream
|
34
|
-
drunk: drink
|
35
|
-
driven: drive
|
36
|
-
eaten: eat
|
37
|
-
fallen: fall
|
38
|
-
fed: feed
|
39
|
-
felt: feel
|
40
|
-
fought: fight
|
41
|
-
found: find
|
42
|
-
fit: fit
|
43
|
-
fled: flee
|
44
|
-
flung: fling
|
45
|
-
flown: fly
|
46
|
-
forbidden: forbid
|
47
|
-
forbade: forbid
|
48
|
-
forgotten: forget
|
49
|
-
forgiven: forgive
|
50
|
-
forgone: forgo
|
51
|
-
frozen: freeze
|
52
|
-
gotten: get
|
53
|
-
got: get
|
54
|
-
given: give
|
55
|
-
gone: go
|
56
|
-
ground: grind
|
57
|
-
grown: grow
|
58
|
-
hung: hang
|
59
|
-
had: have
|
60
|
-
heard: hear
|
61
|
-
hidden: hide
|
62
|
-
hit: hit
|
63
|
-
held: hold
|
64
|
-
hurt: hurt
|
65
|
-
kept: keep
|
66
|
-
knelt: kneel
|
67
|
-
knit: knit
|
68
|
-
known: know
|
69
|
-
laid: lay
|
70
|
-
led: lead
|
71
|
-
leapt: leap
|
72
|
-
left: leave
|
73
|
-
lent: lend
|
74
|
-
let: let
|
75
|
-
lain: lie
|
76
|
-
lit: light
|
77
|
-
lost: lose
|
78
|
-
made: make
|
79
|
-
meant: mean
|
80
|
-
met: meet
|
81
|
-
paid: pay
|
82
|
-
proven: prove
|
83
|
-
put: put
|
84
|
-
quit: quit
|
85
|
-
read: read
|
86
|
-
ridden: ride
|
87
|
-
rung: ring
|
88
|
-
risen: rise
|
89
|
-
run: run
|
90
|
-
sawn: saw
|
91
|
-
said: say
|
92
|
-
seen: see
|
93
|
-
sought: seek
|
94
|
-
sold: sell
|
95
|
-
sent: send
|
96
|
-
set: set
|
97
|
-
sewn: sew
|
98
|
-
shaken: shake
|
99
|
-
shaven: shave
|
100
|
-
shorn: shear
|
101
|
-
shone: shine
|
102
|
-
shot: shoot
|
103
|
-
shown: show
|
104
|
-
shrunken: shrink
|
105
|
-
shrunk: shrink
|
106
|
-
shut: shut
|
107
|
-
sung: sing
|
108
|
-
sunk: sink
|
109
|
-
sat: sit
|
110
|
-
slain: slay
|
111
|
-
slept: sleep
|
112
|
-
slid: slide
|
113
|
-
snuck: sneak
|
114
|
-
spoken: speak
|
115
|
-
sped: speed
|
116
|
-
spent: spend
|
117
|
-
spilt: spill
|
118
|
-
spun: spin
|
119
|
-
spit: spit
|
120
|
-
spat: spit
|
121
|
-
split: split
|
122
|
-
spread: spread
|
123
|
-
sprung: spring
|
124
|
-
stood: stand
|
125
|
-
stolen: steal
|
126
|
-
stuck: stick
|
127
|
-
stung: sting
|
128
|
-
stunk: stink
|
129
|
-
strewn: strew
|
130
|
-
struck: strike
|
131
|
-
stricken: strike
|
132
|
-
striven: strive
|
133
|
-
sworn: swear
|
134
|
-
swept: sweep
|
135
|
-
swum: swim
|
136
|
-
swung: swing
|
137
|
-
taken: take
|
138
|
-
taught: teach
|
139
|
-
torn: tear
|
140
|
-
told: tell
|
141
|
-
thought: think
|
142
|
-
thriven: thrive
|
143
|
-
thrown: throw
|
144
|
-
undergone: undergo
|
145
|
-
understood: understand
|
146
|
-
upset: upset
|
147
|
-
woken: wake
|
148
|
-
worn: wear
|
149
|
-
woven: weave
|
150
|
-
wept: weep
|
151
|
-
won: win
|
152
|
-
wound: wind
|
153
|
-
withdrawn: withdraw
|
154
|
-
wrung: wring
|
155
|
-
written: write
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Microscope::Utils do
|
4
|
-
describe :ClassMethods do
|
5
|
-
describe :past_participle_to_infinitive do
|
6
|
-
before do
|
7
|
-
Microscope.configure do |config|
|
8
|
-
config.special_verbs = { 'started' => 'start', 'foo' => 'bar', 'canceled' => 'cancel' }
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:past_participles) { %w(liked loved gateway_canceled started fed foo) }
|
13
|
-
let(:infinitives) { %w(like love gateway_cancel start feed bar) }
|
14
|
-
let(:mapped_past_participles) { past_participles.map { |v| Microscope::Utils.past_participle_to_infinitive(v) } }
|
15
|
-
|
16
|
-
specify do
|
17
|
-
expect(mapped_past_participles).to eql infinitives
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|