microscope 0.5.10 → 0.6
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/README.md +39 -19
- data/data/irregular_verbs.yml +0 -5
- data/lib/microscope.rb +17 -2
- data/lib/microscope/instance_method.rb +2 -2
- data/lib/microscope/version.rb +1 -1
- data/spec/microscope/instance_method/date_instance_method_spec.rb +4 -0
- data/spec/microscope/instance_method/datetime_instance_method_spec.rb +4 -0
- data/spec/microscope/instance_method_spec.rb +8 -2
- data/spec/spec_helper.rb +5 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b92f3130f66038fbee86f9e5adaa467e6800dfe
|
4
|
+
data.tar.gz: 4ee59ea3ff8050b8abd0cc6bb0d9bb668ebaf3ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08464cec95542735521be16501b95f2d0a8d65cdaeb2bb1baa6b172af3f510e9de8847fec80bd57f8d28b6d0828758e50896b0bf5cc033d646503e4238e765fd
|
7
|
+
data.tar.gz: 5aca9e965185926b4c12ba062b828df3de172e07503c53393cddeef4abea512800f088b7c37a96b35501c1e80eeb14d54fd976a623f9af4f8f5cb31dac9c9352
|
data/README.md
CHANGED
@@ -29,7 +29,7 @@ create_table "events" do |t|
|
|
29
29
|
t.string "name"
|
30
30
|
t.boolean "special"
|
31
31
|
t.datetime "expired_at"
|
32
|
-
t.date "
|
32
|
+
t.date "archived_on"
|
33
33
|
end
|
34
34
|
|
35
35
|
class Event < ActiveRecord::Base
|
@@ -57,39 +57,59 @@ Event.expired_after_or_at(2.months.from_now)
|
|
57
57
|
Event.expired_between(2.months.ago..1.month.from_now)
|
58
58
|
# SELECT * FROM `events` where `events`.`expired_at` BETWEEN '2013-05-05 15:43:42' AND '2013-08-05 15:43:42'
|
59
59
|
|
60
|
-
Event.
|
61
|
-
# SELECT * FROM `events` where `events`.`
|
60
|
+
Event.archived_before(2.days.ago)
|
61
|
+
# SELECT * FROM `events` where `events`.`archived_on` < '2013-07-03'
|
62
62
|
|
63
|
-
Event.
|
64
|
-
# SELECT * FROM `events` where `events`.`
|
63
|
+
Event.archived_between(2.days.ago..3.days.from_now)
|
64
|
+
# SELECT * FROM `events` where `events`.`archived_on` BETWEEN '2013-07-03' AND '2013-07-08'
|
65
65
|
|
66
|
-
Event.
|
67
|
-
# SELECT * FROM `events` where `events`.`
|
66
|
+
Event.archived
|
67
|
+
# SELECT * FROM `events` where `events`.`archived_on` IS NOT NULL AND `events`.`archived_on` <= '2013-07-05 15:43:42'
|
68
68
|
|
69
|
-
Event.
|
70
|
-
# SELECT * FROM `events` where `events`.`
|
69
|
+
Event.not_archived
|
70
|
+
# SELECT * FROM `events` where `events`.`archived_on` IS NULL OR `events`.`archived_on` > '2013-07-05 15:43:42'
|
71
71
|
```
|
72
72
|
|
73
73
|
Microscope also adds three instance methods to the model per scope.
|
74
74
|
|
75
75
|
```ruby
|
76
|
-
event = Event.
|
77
|
-
# SELECT * FROM `events` where `events`.`
|
76
|
+
event = Event.archived.first
|
77
|
+
# SELECT * FROM `events` where `events`.`archived_on` IS NOT NULL AND `events`.`archived_on` <= '2013-07-05 15:43:42' LIMIT 1
|
78
78
|
|
79
|
-
event.
|
80
|
-
event.
|
79
|
+
event.archived? # => true
|
80
|
+
event.not_archived? # => false
|
81
81
|
|
82
|
-
event = Event.
|
83
|
-
event.
|
82
|
+
event = Event.unarchived.first
|
83
|
+
event.archived? # => false
|
84
84
|
|
85
|
-
event.
|
86
|
-
event.
|
87
|
-
event.
|
85
|
+
event.archive!
|
86
|
+
event.archived? # => true
|
87
|
+
event.archived_at # => 2013-07-05 15:43:44 (Time.now)
|
88
88
|
```
|
89
89
|
|
90
90
|
### Options
|
91
91
|
|
92
|
-
|
92
|
+
#### Special verbs
|
93
|
+
|
94
|
+
Microscope uses a rather simple process to convert field names to infinitive
|
95
|
+
verbs. It just removes the `d` if there’s one at the end of the verb. It also
|
96
|
+
has its own irregular verbs list.
|
97
|
+
|
98
|
+
For example, a `liked_at` field name will give `like!` and `unlike!` instance
|
99
|
+
methods to records.
|
100
|
+
|
101
|
+
But you can configure Microscope to use your own special verbs. For example:
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
# config/initializers/microscope.rb
|
105
|
+
Microscope.configure do |config|
|
106
|
+
config.special_verbs = { 'extracted' => 'extract', 'started' => 'start' }
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
110
|
+
#### On `acts_as_microscope`
|
111
|
+
|
112
|
+
You can also use a few options when calling `acts_as_microscope`:
|
93
113
|
|
94
114
|
```ruby
|
95
115
|
class Event < ActiveRecord::Base
|
data/data/irregular_verbs.yml
CHANGED
@@ -18,7 +18,6 @@ burnt: burn
|
|
18
18
|
burst: burst
|
19
19
|
bought: buy
|
20
20
|
caught: catch
|
21
|
-
canceled: cancel
|
22
21
|
cancelled: cancel
|
23
22
|
chosen: choose
|
24
23
|
clung: cling
|
@@ -32,17 +31,14 @@ dived: dive
|
|
32
31
|
done: do
|
33
32
|
drawn: draw
|
34
33
|
dreamt: dream
|
35
|
-
dreamed: dream
|
36
34
|
drunk: drink
|
37
35
|
driven: drive
|
38
36
|
eaten: eat
|
39
|
-
extracted: extract
|
40
37
|
fallen: fall
|
41
38
|
fed: feed
|
42
39
|
felt: feel
|
43
40
|
fought: fight
|
44
41
|
found: find
|
45
|
-
filtered: filter
|
46
42
|
fit: fit
|
47
43
|
fled: flee
|
48
44
|
flung: fling
|
@@ -125,7 +121,6 @@ spat: spit
|
|
125
121
|
split: split
|
126
122
|
spread: spread
|
127
123
|
sprung: spring
|
128
|
-
started: start
|
129
124
|
stood: stand
|
130
125
|
stolen: steal
|
131
126
|
stuck: stick
|
data/lib/microscope.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "microscope/version"
|
2
2
|
|
3
|
+
require 'ostruct'
|
3
4
|
require 'active_record'
|
4
5
|
require 'active_support'
|
5
6
|
|
@@ -16,8 +17,22 @@ require "microscope/instance_method/date_instance_method"
|
|
16
17
|
module Microscope
|
17
18
|
IRREGULAR_VERBS_FILE = File.expand_path('../../data/irregular_verbs.yml', __FILE__)
|
18
19
|
|
19
|
-
def self.
|
20
|
-
|
20
|
+
def self.special_verbs
|
21
|
+
irregular_verbs_from_yaml ||= YAML.load_file(IRREGULAR_VERBS_FILE)
|
22
|
+
special_verbs_from_configuration ||= configuration.special_verbs
|
23
|
+
|
24
|
+
@special_verbs ||= begin
|
25
|
+
irregular_verbs_from_yaml.merge(special_verbs_from_configuration)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.configure
|
30
|
+
@configuration = configuration
|
31
|
+
yield(@configuration)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.configuration
|
35
|
+
@configuration ||= OpenStruct.new(special_verbs: {})
|
21
36
|
end
|
22
37
|
end
|
23
38
|
|
@@ -24,8 +24,8 @@ module Microscope
|
|
24
24
|
def self.past_participle_to_infinitive(key)
|
25
25
|
*key, participle = key.split('_')
|
26
26
|
|
27
|
-
infinitive = if Microscope.
|
28
|
-
Microscope.
|
27
|
+
infinitive = if Microscope.special_verbs.include?(participle)
|
28
|
+
Microscope.special_verbs[participle]
|
29
29
|
elsif participle =~ /ed$/
|
30
30
|
participle.sub(/d$/, '')
|
31
31
|
else
|
data/lib/microscope/version.rb
CHANGED
@@ -2,6 +2,10 @@ 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
|
+
|
5
9
|
run_migration do
|
6
10
|
create_table(:events, force: true) do |t|
|
7
11
|
t.date :start_date, default: nil
|
@@ -2,6 +2,10 @@ 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
|
+
|
5
9
|
run_migration do
|
6
10
|
create_table(:events, force: true) do |t|
|
7
11
|
t.datetime :started_at, default: nil
|
@@ -3,8 +3,14 @@ require 'spec_helper'
|
|
3
3
|
describe Microscope::InstanceMethod do
|
4
4
|
describe :ClassMethods do
|
5
5
|
describe :past_participle_to_infinitive do
|
6
|
-
|
7
|
-
|
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) { ['liked', 'loved', 'gateway_canceled', 'started', 'fed', 'foo'] }
|
13
|
+
let(:infinitives) { ['like', 'love', 'gateway_cancel', 'start', 'feed', 'bar'] }
|
8
14
|
let(:mapped_past_participles) { past_participles.map { |v| Microscope::InstanceMethod.past_participle_to_infinitive(v) } }
|
9
15
|
|
10
16
|
specify do
|
data/spec/spec_helper.rb
CHANGED
@@ -19,7 +19,12 @@ RSpec.configure do |config|
|
|
19
19
|
config.include ModelMacros
|
20
20
|
|
21
21
|
config.before :each do
|
22
|
+
# Establish ActiveRecord database connection
|
22
23
|
adapter = ENV['DB_ADAPTER'] || 'sqlite3'
|
23
24
|
setup_database(adapter: adapter, database: 'microscope_test')
|
25
|
+
|
26
|
+
# Reset internal variables
|
27
|
+
Microscope.instance_variable_set(:@configuration, nil)
|
28
|
+
Microscope.instance_variable_set(:@special_verbs, nil)
|
24
29
|
end
|
25
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: microscope
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.6'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Prévost
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
12
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|