truncates 0.0.2 → 0.0.3

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTFkNWJlNzIxYzk3ZGUzMGM3ODNjZDUxNTIxYjE4MTU0OTFhNTBkYw==
4
+ NTg3YTIzMWI5YjVjMDk2NDVkZWQ2NmU3MTU0ZWJkMWU2MWE1N2M3Yg==
5
5
  data.tar.gz: !binary |-
6
- NmMwZjU2MGI0YjRjMWZhYmUzM2U4MWQwYWUwMDYwYzQyMzIzNzE2OA==
6
+ N2UxMzI5ZTBjMGM3YTczM2ZhOTI2NzAyMDUzNWVhMTYwYjMxMjJmOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZmZlMDUwOTMzNTFmOTBmNGI2NDMwMzU1YjhkODVkNjg2NjVkOTJmOTBiY2Zi
10
- NzhlZmY0ODZjNjhhYjMyZjRjZGJjOGNiM2NkOTFhNThhZWNkNzZmYzBmMDQz
11
- NDQ4MTNiMWFhM2U4MDE1Njc3ZGVjYTBlNWNjMWY0OWY2ZDM2MzA=
9
+ ZjdmNDMwZGY3YmUzNDFlYzQxNTgwODI5MTBjNmM1ODk4ZDkzOTc5YzRiMDMy
10
+ ZTM3ZTkxODAzNmQ1ZTU1ZWVhMjAzMjYwOWFlNTQ4OGZmOTBiZTUxZThhZjEw
11
+ YmIxMThlZTljOWI5YmRhZmU5N2U4ODUzMmE0ZjIzZWJhYTgyYzI=
12
12
  data.tar.gz: !binary |-
13
- YTIyYjQ3OGFhOTU1NGUzNDBjMDE0NmMyZDQxYzE2YmYyZjkwZWUwNDMwMmI0
14
- YjA5NDgwNDk4NTMzZDgxN2NmMDUwZThmYzA2Zjg2Mzk4MmQ4MDI0ZGEwY2Zl
15
- NDQ5YWNmMzkzMmYyZDYzZDQ4YWQwMjJiYWQ0ZTA2YTA5ZDQ4YTk=
13
+ YjQxZGQxMjUxYzE4NmIzM2RkODFjYWVhYTAxZmNhYzdiY2RkYmY2Mjc5Mjgz
14
+ MmJiMDljZGY4NjQxMzA3MmRlYzFmYmVkMzQ0ZDFiYjVjYjZjY2YzYzQ1Y2Q3
15
+ MWY4YWIxMTZjODE4M2ZlMmJlNWZjYzk4Yjk0ODk0ZDI5YTIzZGY=
@@ -1,3 +1,3 @@
1
1
  module Truncates
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/truncates.rb CHANGED
@@ -3,20 +3,35 @@ require "truncates/version"
3
3
  module Truncates
4
4
  DEFAULT_MAX_LENGTH = 255
5
5
  DEFAULT_CHARACTER_TRAIL = ""
6
- DEFAULT_STAGE = :before_validation
6
+ DEFAULT_ON = :before_validation
7
7
 
8
8
  def truncates(field_name, options = {})
9
9
  raise("Hash expected, got #{options.class.name}") if !options.is_a?(Hash) && !options.empty?
10
10
  max_length = options[:max_length] || DEFAULT_MAX_LENGTH
11
11
  character_trail = options[:character_trail] || DEFAULT_CHARACTER_TRAIL
12
-
13
- before_validation do
14
- value = eval("self.#{field_name}")
15
-
16
- if(value.present? && value.length > max_length)
17
- new_value = value.slice(0, max_length - character_trail.length) + character_trail
18
- eval("self.#{field_name}=\"#{new_value}\"")
12
+ on = options[:on] || DEFAULT_ON
13
+
14
+ case on.to_s
15
+ when "validation"
16
+ before_validation do
17
+ value = eval("self.#{field_name}")
18
+
19
+ if(value.present? && value.length > max_length)
20
+ new_value = value.slice(0, max_length - character_trail.length) + character_trail
21
+ eval("self.#{field_name}=\"#{new_value}\"")
22
+ end
19
23
  end
24
+ when "set"
25
+ method =
26
+ "def #{field_name}=(value)" +
27
+ " if(value.present? && value.length > max_length)" +
28
+ " new_value = value.slice(0, max_length - character_trail.length) + character_trail" +
29
+ " end" +
30
+ " \n" +
31
+ " super(new_value)" +
32
+ "end"
33
+
34
+ eval(method.to_s)
20
35
  end
21
36
  end
22
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truncates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael DeSanty