syto 0.1.1 → 0.2.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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/syto/version.rb +1 -1
  4. data/lib/syto.rb +21 -11
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6afed86906556c9b2b7c0ca426763ab01d7c704863c3e1c33e5d73c5750643b1
4
- data.tar.gz: 3590d320491b80c9d6d9828f5da5286fa2bc756ec891880a262167e9eb8ce610
3
+ metadata.gz: af0ab05e31639381af798d997f30b3ae2a9501eedea8e4dd957664470f220b34
4
+ data.tar.gz: 306a9a88c49031e7b7c51c35f3ad6be9cfa4db3ac2596b01d33a65380ad98893
5
5
  SHA512:
6
- metadata.gz: 6dd6297c0f8554b70600dc17a6e9acb2879b4af14563e886dd21b0883a991cd03931c2376e67c2a9de8dd3187f6b4aeaeb9e51f0dfe17bbdb1ea1505e99a7be9
7
- data.tar.gz: 82391c9e0819b8cc177cc8f595455cfc8df20f131be8662877f384446d4d8a0e1334dd9a13a857dc900245f2711b2614d7c6c85a58915a9eeab480b3024c5af6
6
+ metadata.gz: edb0033f9f3757b4269d0dd0b3ffdb638748c565c01727784df40041e6defa07658c3766ea98078233d8f32bdea6f9d2a5f88d1739bbea7d59f346c7411d842f
7
+ data.tar.gz: ad7e6e1dc71ff96a682c1196e4eb41bd18756b5e0e8b5c7961ad55eff53f36b897bf46939830f30a66d96f3a20aa91fba70c7a4aa99d1d44864d6b43285f969a
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Syto
2
2
 
3
- Simple gem to filter data for ruby on rails models
3
+ Simple and lightweight library to filter data for Ruby on Rails models
4
4
 
5
5
  ## Installation
6
6
 
data/lib/syto/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Syto
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
data/lib/syto.rb CHANGED
@@ -54,10 +54,16 @@ module Syto
54
54
  #
55
55
  # @param [Array] attrs_map
56
56
  #
57
- def syto_attrs_map(*attrs_map)
57
+ def syto_filters_attrs_map(*attrs_map)
58
58
  @syto_attrs_map = attrs_map
59
59
  end
60
60
 
61
+ # Getter for @syto_attrs_map
62
+ #
63
+ def attrs_map
64
+ @syto_attrs_map
65
+ end
66
+
61
67
  # Filtering method
62
68
  #
63
69
  # @param [Hash] params
@@ -68,7 +74,7 @@ module Syto
68
74
  return all if params.blank? || params.empty?
69
75
 
70
76
  @filter_klass ||= Syto::Base
71
- @filter_klass.new(self, all, params.symbolize_keys, @syto_attrs_map).perform
77
+ @filter_klass.new(self, all, params.symbolize_keys).perform
72
78
  end
73
79
  end
74
80
 
@@ -80,13 +86,12 @@ module Syto
80
86
  # @param [Class] base_class
81
87
  # @param [ActiveRecord::Relation] result
82
88
  # @param [Hash] params
83
- # @param [Array] attrs_map
84
89
  #
85
- def initialize(base_class, result, params, attrs_map)
90
+ def initialize(base_class, result, params)
86
91
  @base_class = base_class
87
92
  @result = result
88
93
  @params = params
89
- @attrs_map = attrs_map
94
+ @attrs_map = (base_class.attrs_map || []) + (self.class.attrs_map || [])
90
95
  end
91
96
 
92
97
  def perform
@@ -98,7 +103,15 @@ module Syto
98
103
  end
99
104
 
100
105
  def extended_filters
101
- puts '[WARNING] Filters not defined'
106
+ puts "[WARNING] Syto filters not defined for #{self.class.name}"
107
+ end
108
+
109
+ class << self
110
+ attr_reader :attrs_map
111
+
112
+ def filters_attrs_map(*attrs)
113
+ @attrs_map = attrs
114
+ end
102
115
  end
103
116
 
104
117
  private
@@ -145,11 +158,8 @@ module Syto
145
158
  end
146
159
 
147
160
  def filter_hash_options(attr, options)
148
- if options.key?(:key)
149
- filter_by_value attr, options
150
- else
151
- filter_by_range attr, options
152
- end
161
+ filter_by_value attr, options if options.key?(:key)
162
+ filter_by_range attr, options if options.key?(:key_from) && options.key?(:key_to)
153
163
  end
154
164
 
155
165
  # Filter by single value
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vadym Lukavyi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-07 00:00:00.000000000 Z
11
+ date: 2022-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord