dm_filter 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 90ab5d9ebe2c67358478767a7c614b37fc20ac75
4
- data.tar.gz: 3918583edb244d3c32cbdc6dcd79ac228127f22f
2
+ SHA256:
3
+ metadata.gz: 835931d9c805e2313b152a9df5e819a10c876138af37842b16d34d83b1eb8c69
4
+ data.tar.gz: 96399fa5fdb892334422e6a300a976382964db3308ec1ac9b2324e63c7e36005
5
5
  SHA512:
6
- metadata.gz: dde8ac959f61091d559b28f5427247d965ccc5e24160f0ed9dfa7e704c318e1fb89283059275190314c51bab00882aa3d0545616b96a9eb5e7312c93f626b20d
7
- data.tar.gz: 58e51ed17a2e5047d5c69a24438acc8de72fc4c18473565db4c089b5c082b6cdce290b52215012b1e7681a0f4561a73a57649c41dc3376f9ecd89d37b94db7a7
6
+ metadata.gz: fd4604588da1f6e3dd0584ed5dd95af95273c272e30726ff6b81257432bbe229d016f29dc0facb3ea2a0ae82889654535978738dba8594bf77e3b3882859ec54
7
+ data.tar.gz: e7fa5b7934270fb4d9f6eccc1d8ff6c97fdc13a5e1d0513419995253852019af580d3de8387b66745cfc689f7159f6bf66907d150e365a19adff455fd684d783
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .byebug_history
11
+ .rspec_status
@@ -0,0 +1 @@
1
+ inherit_from: .rubocop_todo.yml
@@ -0,0 +1,160 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2018-07-22 17:04:38 +0800 using RuboCop version 0.58.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 2
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: Include, TreatCommentsAsGroupSeparators.
12
+ # Include: **/*.gemfile, **/Gemfile, **/gems.rb
13
+ Bundler/OrderedGems:
14
+ Exclude:
15
+ # - 'Gemfile'
16
+
17
+ # Offense count: 1
18
+ # Cop supports --auto-correct.
19
+ Layout/EmptyLineAfterMagicComment:
20
+ Exclude:
21
+ # - 'dm_filter.gemspec'
22
+
23
+ # Offense count: 1
24
+ # Cop supports --auto-correct.
25
+ # Configuration parameters: EnforcedStyle.
26
+ # SupportedStyles: empty_lines, no_empty_lines
27
+ Layout/EmptyLinesAroundBlockBody:
28
+ Exclude:
29
+ # - 'spec/dm_filter_spec.rb'
30
+
31
+ # Offense count: 22
32
+ # Cop supports --auto-correct.
33
+ # Configuration parameters: Width, IgnoredPatterns.
34
+ Layout/IndentationWidth:
35
+ Exclude:
36
+ # - 'lib/dm_filter.rb'
37
+ # - 'spec/dm_filter_spec.rb'
38
+
39
+ # Offense count: 27
40
+ # Cop supports --auto-correct.
41
+ # Configuration parameters: IndentationWidth.
42
+ Layout/Tab:
43
+ Exclude:
44
+ # - 'lib/dm_filter.rb'
45
+
46
+ # Offense count: 2
47
+ # Cop supports --auto-correct.
48
+ # Configuration parameters: EnforcedStyle.
49
+ # SupportedStyles: final_newline, final_blank_line
50
+ Layout/TrailingBlankLines:
51
+ Exclude:
52
+ # - 'Gemfile'
53
+ # - 'spec/dm_filter_spec.rb'
54
+
55
+ # Offense count: 2
56
+ # Cop supports --auto-correct.
57
+ # Configuration parameters: AllowInHeredoc.
58
+ Layout/TrailingWhitespace:
59
+ Exclude:
60
+ # - 'lib/dm_filter.rb'
61
+ # - 'spec/dm_filter_spec.rb'
62
+
63
+ # Offense count: 1
64
+ Metrics/AbcSize:
65
+ Max: 45
66
+
67
+ # Offense count: 1
68
+ # Configuration parameters: CountComments, ExcludedMethods.
69
+ # ExcludedMethods: refine
70
+ Metrics/BlockLength:
71
+ Max: 29
72
+
73
+ # Offense count: 1
74
+ Metrics/CyclomaticComplexity:
75
+ Max: 11
76
+
77
+ # Offense count: 1
78
+ # Configuration parameters: CountComments.
79
+ Metrics/MethodLength:
80
+ Max: 21
81
+
82
+ # Offense count: 2
83
+ Style/Documentation:
84
+ Exclude:
85
+ # - 'spec/**/*'
86
+ # - 'test/**/*'
87
+ # - 'lib/dm_filter.rb'
88
+
89
+ # Offense count: 1
90
+ # Cop supports --auto-correct.
91
+ Style/Encoding:
92
+ Exclude:
93
+ # - 'dm_filter.gemspec'
94
+
95
+ # Offense count: 1
96
+ # Cop supports --auto-correct.
97
+ Style/ExpandPathArguments:
98
+ Exclude:
99
+ # - 'dm_filter.gemspec'
100
+
101
+ # Offense count: 1
102
+ # Cop supports --auto-correct.
103
+ # Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
104
+ # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
105
+ Style/HashSyntax:
106
+ Exclude:
107
+ # - 'Rakefile'
108
+
109
+ # Offense count: 1
110
+ Style/MixinUsage:
111
+ Exclude:
112
+ - 'spec/db/helper.rb'
113
+
114
+ # Offense count: 1
115
+ # Cop supports --auto-correct.
116
+ Style/MutableConstant:
117
+ Exclude:
118
+ # - 'lib/dm_filter/version.rb'
119
+
120
+ # Offense count: 2
121
+ # Cop supports --auto-correct.
122
+ # Configuration parameters: PreferredDelimiters.
123
+ Style/PercentLiteralDelimiters:
124
+ Exclude:
125
+ # - 'dm_filter.gemspec'
126
+
127
+ # Offense count: 8
128
+ # Cop supports --auto-correct.
129
+ Style/RedundantSelf:
130
+ Exclude:
131
+ # - 'lib/dm_filter.rb'
132
+
133
+ # Offense count: 1
134
+ # Cop supports --auto-correct.
135
+ Style/RescueModifier:
136
+ Exclude:
137
+ - 'spec/db/helper.rb'
138
+
139
+ # Offense count: 12
140
+ # Cop supports --auto-correct.
141
+ # Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
142
+ # SupportedStyles: single_quotes, double_quotes
143
+ Style/StringLiterals:
144
+ Exclude:
145
+ # - 'Rakefile'
146
+ # - 'bin/console'
147
+ # - 'dm_filter.gemspec'
148
+ # - 'lib/dm_filter/version.rb'
149
+
150
+ # Offense count: 2
151
+ # Cop supports --auto-correct.
152
+ Style/UnneededPercentQ:
153
+ Exclude:
154
+ # - 'dm_filter.gemspec'
155
+
156
+ # Offense count: 11
157
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
158
+ # URISchemes: http, https
159
+ Metrics/LineLength:
160
+ Max: 158
@@ -0,0 +1,23 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.1
5
+ services: mysql
6
+ before_install: gem install bundler -v 1.16.1
7
+ notifications: false
8
+
9
+ env:
10
+ global:
11
+ - CC_TEST_REPORTER_ID=e3a1e96d871b3246e51eeeb6d9d3c901b93a445bd1ab710f30aadbdb4ba9ef0a
12
+
13
+ before_script:
14
+ - bundle exec rspec && CODECLIMATE_REPO_TOKEN=e3a1e96d871b3246e51eeeb6d9d3c901b93a445bd1ab710f30aadbdb4ba9ef0a
15
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
16
+ - chmod +x ./cc-test-reporter
17
+ - ./cc-test-reporter before-build
18
+
19
+ scripts:
20
+ - bundle exec rspec spec
21
+
22
+ after_script:
23
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/Gemfile CHANGED
@@ -2,3 +2,10 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in dm_filter.gemspec
4
4
  gemspec
5
+
6
+ group :test do
7
+ gem 'byebug'
8
+ gem 'rubocop'
9
+ gem 'simplecov'
10
+ gem 'simplecov-console'
11
+ end
data/README.md CHANGED
@@ -1,3 +1,4 @@
1
+ [![Build Status](https://travis-ci.org/denmarkmeralpis/dm_filter.svg?branch=master)](https://travis-ci.org/denmarkmeralpis/dm_filter) [![Maintainability](https://api.codeclimate.com/v1/badges/ce96a303e9f35ee66e05/maintainability)](https://codeclimate.com/github/denmarkmeralpis/dm_filter/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/ce96a303e9f35ee66e05/test_coverage)](https://codeclimate.com/github/denmarkmeralpis/dm_filter/test_coverage) [![Gem Version](https://badge.fury.io/rb/dm_filter.svg)](https://badge.fury.io/rb/dm_filter)
1
2
  # DmFilter
2
3
 
3
4
  DmFilter is a very light weight Rails plugin that makes it easy to fetch your ActiveRecord lists using date or text as a parameter.
@@ -7,7 +8,7 @@ DmFilter is a very light weight Rails plugin that makes it easy to fetch your Ac
7
8
  Add this line to your application's Gemfile:
8
9
 
9
10
  ```ruby
10
- gem 'dm_filter'
11
+ gem 'dm_filter', '~> 0.0.3'
11
12
  ```
12
13
 
13
14
  And then execute:
@@ -16,16 +17,21 @@ And then execute:
16
17
 
17
18
  Or install it yourself as:
18
19
 
19
- $ gem install dm_filter
20
+ $ gem install dm_filter -v 0.0.3
20
21
 
21
- include this into your model(example Invoice)
22
- ##### invoice.rb
22
+ include this into your model
23
23
  ```ruby
24
- include DmFilter::Base
24
+ include DmFilter
25
+ ```
26
+ example
27
+ ```ruby
28
+ class Invoice < ApplicationRecord
29
+ include DmFilter
30
+ end
25
31
  ```
26
32
 
27
33
  ## Usage
28
- #### Values for `day`
34
+ #### Values for `duration`
29
35
  1. `all` (default)
30
36
  2. `today`
31
37
  3. `yesterday`
@@ -35,14 +41,20 @@ include DmFilter::Base
35
41
  7. `period`
36
42
 
37
43
  #### Available options
38
- 1. `day`
44
+ 1. `duration`(default is `all`)
39
45
  2. `from`(if `day` is equal to `period`)
40
46
  3. `to`(if `day` is equal to `period`)
41
- 4. `column_name` (default is `created_at`)
47
+ 4. `column_date` (default is `created_at`)
42
48
 
43
49
  #### Example
44
50
  ```ruby
45
- Invoice.dm_filter({ day: 'today', column_name: 'paid_at' })
51
+ # specifying column_date
52
+ Invoice.dm_get(duration: 'today', column_date: 'paid_at')
53
+ ```
54
+ or simply
55
+ ```ruby
56
+ # default column_date is created_at
57
+ Invoice.dm_get(duration: 'today')
46
58
  ```
47
59
 
48
60
  ## Contributing
data/Rakefile CHANGED
@@ -1,2 +1,2 @@
1
- require "bundler/gem_tasks"
2
- task :default => :spec
1
+ require 'bundler/gem_tasks'
2
+ task default: :spec
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "dm_filter"
3
+ require 'bundler/setup'
4
+ require 'dm_filter'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "dm_filter"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
@@ -1,32 +1,29 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'dm_filter/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "dm_filter"
6
+ spec.name = 'dm_filter'
8
7
  spec.version = DmFilter::VERSION
9
- spec.authors = ["Nujian Den Mark Meralpis"]
10
- spec.email = ["denmarkmeralpis@gmail.com"]
8
+ spec.authors = ['Nujian Den Mark Meralpis']
9
+ spec.email = ['denmarkmeralpis@gmail.com']
11
10
 
12
- spec.summary = %q{Fetch ActiveRecord list using specified period as a parameter}
13
- spec.description = %q{DmFilter is a very light weight Rails plugin that makes it easy to fetch your ActiveRecord lists using date or text as a parameter.}
14
- spec.homepage = "http://www.genmcrg.com/experiment/gems/dm_filter"
15
- spec.license = "MIT"
11
+ spec.summary = 'Fetch ActiveRecord list using specified period as a parameter'
12
+ spec.description = 'DmFilter is a very light weight Rails plugin that makes it easy to fetch your ActiveRecord lists using date or text as a parameter.'
13
+ spec.homepage = 'https://github.com/denmarkmeralpis/dm_filter'
14
+ spec.license = 'MIT'
16
15
 
17
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
- # to allow pushing to a single host or delete this section to allow pushing to any host.
19
- # if spec.respond_to?(:metadata)
20
- # spec.metadata['allowed_push_host'] = "Set to 'http://mygemserver.com'"
21
- # else
22
- # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
- # end
16
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
24
17
 
25
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
- spec.bindir = "exe"
19
+ spec.bindir = 'exe'
27
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
21
+ spec.require_paths = ['lib']
29
22
 
30
- spec.add_development_dependency "bundler", "~> 1.12"
31
- spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_dependency 'activerecord', '>= 4.2'
24
+ spec.add_development_dependency 'activesupport', '~> 4.2'
25
+ spec.add_development_dependency 'bundler', '~> 1.12'
26
+ spec.add_development_dependency 'mysql2', '>= 0.3.13', '< 0.4.0'
27
+ spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'rspec', '~> 3.0'
32
29
  end
@@ -1,6 +1,36 @@
1
- require "dm_filter/version"
2
- require "dm_filter/base"
1
+ require 'active_support/all'
2
+ require 'dm_filter/version'
3
3
 
4
+ # DmFilter
4
5
  module DmFilter
5
- # Your code goes here...
6
+ extend ActiveSupport::Concern
7
+ # Class Method
8
+ module ClassMethods
9
+ def dm_get(options)
10
+ options[:column_date] = 'created_at' unless options[:column_date].present?
11
+
12
+ from = options[:from].blank? ? Time.current : options[:from].to_datetime
13
+ to = options[:to].blank? ? Time.current : options[:to].to_datetime
14
+
15
+ case options[:duration]
16
+ when 'all'
17
+ all
18
+ when 'today'
19
+ where(options[:column_date] => from.beginning_of_day..to.end_of_day)
20
+ when 'yesterday'
21
+ where(options[:column_date] => from.yesterday.beginning_of_day..to.yesterday.end_of_day)
22
+ when 'this_week'
23
+ where(options[:column_date] => from.beginning_of_week..to.end_of_week)
24
+ when 'this_month'
25
+ where(options[:column_date] => from.beginning_of_month..to.end_of_month)
26
+ when 'last_month'
27
+ where(options[:column_date] => from.last_month.beginning_of_month..to.last_month.end_of_month)
28
+ when 'period', 'custom'
29
+ where(options[:column_date] => from.beginning_of_day..to.end_of_day)
30
+ else
31
+ all
32
+ end
33
+ end
34
+ extend ClassMethods
35
+ end
6
36
  end
@@ -1,3 +1,3 @@
1
1
  module DmFilter
2
- VERSION = "0.0.3"
2
+ VERSION = '0.0.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nujian Den Mark Meralpis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-05 00:00:00.000000000 Z
11
+ date: 2018-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +52,26 @@ dependencies:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
54
  version: '1.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.3.13
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: 0.4.0
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 0.3.13
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.4.0
27
75
  - !ruby/object:Gem::Dependency
28
76
  name: rake
29
77
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +86,20 @@ dependencies:
38
86
  - - "~>"
39
87
  - !ruby/object:Gem::Version
40
88
  version: '10.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rspec
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.0'
41
103
  description: DmFilter is a very light weight Rails plugin that makes it easy to fetch
42
104
  your ActiveRecord lists using date or text as a parameter.
43
105
  email:
@@ -47,6 +109,9 @@ extensions: []
47
109
  extra_rdoc_files: []
48
110
  files:
49
111
  - ".gitignore"
112
+ - ".rubocop.yml"
113
+ - ".rubocop_todo.yml"
114
+ - ".travis.yml"
50
115
  - CODE_OF_CONDUCT.md
51
116
  - Gemfile
52
117
  - LICENSE.txt
@@ -56,9 +121,8 @@ files:
56
121
  - bin/setup
57
122
  - dm_filter.gemspec
58
123
  - lib/dm_filter.rb
59
- - lib/dm_filter/base.rb
60
124
  - lib/dm_filter/version.rb
61
- homepage: http://www.genmcrg.com/experiment/gems/dm_filter
125
+ homepage: https://github.com/denmarkmeralpis/dm_filter
62
126
  licenses:
63
127
  - MIT
64
128
  metadata: {}
@@ -78,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
142
  version: '0'
79
143
  requirements: []
80
144
  rubyforge_project:
81
- rubygems_version: 2.4.8
145
+ rubygems_version: 2.7.6
82
146
  signing_key:
83
147
  specification_version: 4
84
148
  summary: Fetch ActiveRecord list using specified period as a parameter
@@ -1,38 +0,0 @@
1
- module DmFilter
2
- module Base
3
- extend ActiveSupport::Concern
4
- module ClassMethods
5
-
6
- def dm_get(options)
7
- d = options[:from]
8
- t = options[:to]
9
- column_date = options[:column_date]
10
- day = options[:duration]
11
-
12
- column_date = column_date.blank? ? 'created_at' : column_date
13
- d = d.blank? ? Time.zone.now : d.to_date
14
- t = t.blank? ? Time.zone.now : t.to_date
15
-
16
- case day
17
- when "all"
18
- self.all
19
- when "today"
20
- self.where(column_date => d.beginning_of_day..t.end_of_day)
21
- when "yesterday"
22
- self.where(column_date => d.yesterday.beginning_of_day..t.yesterday.end_of_day)
23
- when "this_week"
24
- self.where(column_date => d.beginning_of_week..t.end_of_week)
25
- when "this_month"
26
- self.where(column_date => d.beginning_of_month..t.end_of_month)
27
- when "last_month"
28
- self.where(column_date => d.last_month.beginning_of_month..t.last_month.end_of_month)
29
- when "period"
30
- self.where(column_date => d.beginning_of_day..t.end_of_day)
31
- else
32
- self.all
33
- end
34
- end
35
- end
36
- extend ClassMethods
37
- end
38
- end