traceable 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 701e20470efc6bb3a6ab73e0a9217c69129b24b0
4
- data.tar.gz: 49d17cde8d18fd698daacc5a2d7d7101c7fd754d
3
+ metadata.gz: 3b33985a7f1cd981ee07372be082ea2686776086
4
+ data.tar.gz: 956815bb6c9baa2fb5d141497169aed860186b94
5
5
  SHA512:
6
- metadata.gz: 47a92e063559c21bbdd79eb7113467d13acdabfb27b54b86e6b52e75818cfe16c6b394e20e727d804dee51c5b83435435697208989565ddb2b3385926f02b45b
7
- data.tar.gz: 93f470b025fc52d3fccd6c5a9e6add3c593b2f6a00d1b4af85f18d1734fcad8f58772a1847fcf3fc471f1d5b995534dc5a9b9c3fe2996c7b7a9bd207665a047c
6
+ metadata.gz: a69ca83d50eafe13fea34bc927c5d41e5f5a46ead4b2b4ed438150f9f66a0edf80a86600e31934d7319e862ad4043a38a407237584be1c326351dd15c2fb3249
7
+ data.tar.gz: c8209b9f31551240e07ecc14dff517da72acaca75a6b6a76a83ede43252ee47c5d265bb910b2448761622d136e0223e279aa0e84d9fbd80a298031a444e9e5be
@@ -19,6 +19,15 @@ module Traceable
19
19
  return val.to_trace if val.respond_to? :to_trace
20
20
  return format_array_of_values(val) if val.is_a? Array
21
21
  return format_hash_of_values(val) if val.is_a? Hash
22
+ return format_string(val) if val.is_a? String
23
+ val
24
+ end
25
+
26
+ MAX_STRING_LENGTH = 5000
27
+ TRUNC_STRING_LENGTH = MAX_STRING_LENGTH - 3
28
+
29
+ def self.format_string(val)
30
+ return val[0..TRUNC_STRING_LENGTH] + '...' if val.size > MAX_STRING_LENGTH
22
31
  val
23
32
  end
24
33
 
@@ -40,7 +40,11 @@ module Traceable
40
40
  end
41
41
 
42
42
  def make_tags(**tags)
43
- @tags.merge(tags)
43
+ format_tags(@tags.merge(tags))
44
+ end
45
+
46
+ def format_tags(tags)
47
+ tags.each_with_object(tags) { |(k, v), t| t[k] = Args.format_value(v) }
44
48
  end
45
49
 
46
50
  def emit_tags(method, tags)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Traceable
4
- VERSION = '1.3.2'
4
+ VERSION = '1.4.0'
5
5
  end
@@ -28,6 +28,23 @@ RSpec.describe Traceable::Args do
28
28
 
29
29
  let(:letters) { %w[a b c d e f g h i j k l m n o p q r s t u v w x y z] }
30
30
 
31
+ describe '#format_value' do
32
+ let(:long_string) { 'abcdefghijklmnopqrstuvwxyz'. * 1000 }
33
+ let(:number) { 1 }
34
+
35
+ it 'truncates long strings' do
36
+ expect(Traceable::Args.format_value(long_string))
37
+ .to eq(long_string[0..4997] + '...')
38
+ end
39
+
40
+ it 'returns simple values un-modified' do
41
+ expect(Traceable::Args.format_value(number)). to be number
42
+ expect(Traceable::Args.format_value(nil)). to be nil
43
+ expect(Traceable::Args.format_value(true)). to be true
44
+ expect(Traceable::Args.format_value(false)). to be false
45
+ end
46
+ end
47
+
31
48
  describe '#format_array_of_values' do
32
49
  it 'truncates long arrays' do
33
50
  expect(Traceable::Args.format_array_of_values(letters))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traceable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Slade
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-25 00:00:00.000000000 Z
11
+ date: 2018-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler