traceable 1.3.2 → 1.4.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.
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