appmap 0.96.0 → 0.97.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
  SHA256:
3
- metadata.gz: 61981b3f49d81c6fdcda62cf208337616384071296374168ec44cf823bc4fcf1
4
- data.tar.gz: c6d86f477f4dd2dc4832963d84f0985c90d474b2428a5a511e5726ba34d7b0bc
3
+ metadata.gz: d8f61995f7dd2cfd9ac33245e4248b4e3fb54f3063eacee3070da171ef852847
4
+ data.tar.gz: ff3648db694330d2d8242601fc6380320fa49252f68065fa1a7e1f416e96fbe2
5
5
  SHA512:
6
- metadata.gz: c5f54cd66a79510f13e1cbf1ed8db3b634bac1b15b5bfd371433caa3cf7b1bcbe46e4ee9d18b38823596cddd754f461c0db88b18978e5a1410f37fdea5a460d0
7
- data.tar.gz: 5cc2ec60a06b35f34e72ca19aba2fe34e0a89727aed0acb167d04c22d2a98f73787ccbb089bff76bc4439fcfef94b3e3ef508e73c459350797aee7f7fea8df14
6
+ metadata.gz: da483d2262fa5f9691bb59293f5ec5d7a0a5b3910b68db99171e7d9b4b398e3203f8cbbe614407e91bc4d82e50c2bbf35a62562b1e31a2f59820ef893e0e7506
7
+ data.tar.gz: f7e30a0d17c134e5dd2f261707a8b4594c39ec795bbef8ef35af71e26c51b70ebd500cfe020b2f736be0b0bd1afb84baeff49d36624233234e07a936eb467ce4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [0.97.0](https://github.com/getappmap/appmap-ruby/compare/v0.96.0...v0.97.0) (2023-02-10)
2
+
3
+
4
+ ### Features
5
+
6
+ * Implement `items` Parameter object format (AppMap v1.10.0) ([9a28773](https://github.com/getappmap/appmap-ruby/commit/9a2877396187393adfe6e4379f0d6a735d5678b4))
7
+
1
8
  # [0.96.0](https://github.com/getappmap/appmap-ruby/compare/v0.95.2...v0.96.0) (2023-02-01)
2
9
 
3
10
 
@@ -3,6 +3,7 @@ module AppMap
3
3
  extend self
4
4
 
5
5
  MAX_DEPTH = 3
6
+ MAX_ARRAY_ELEMENTS = 5
6
7
 
7
8
  def detect_size(value)
8
9
  # Don't risk calling #size on things like data-access objects, which can and will issue queries for this information.
@@ -11,10 +12,17 @@ module AppMap
11
12
  end
12
13
  end
13
14
 
14
- def detect_schema(value, max_depth: MAX_DEPTH, type_info: {}, observed_values: Set.new(), depth: 0)
15
- return type_info if depth == max_depth
15
+ def detect_schema(
16
+ value,
17
+ max_depth: MAX_DEPTH,
18
+ max_array_elements: MAX_ARRAY_ELEMENTS,
19
+ type_info: { class: best_class_name(value) },
20
+ observed_values: Set.new,
21
+ depth: 0
22
+ )
23
+ return type_info if depth >= max_depth && !array_like?(value)
16
24
 
17
- if value.respond_to?(:keys)
25
+ if hash_like?(value)
18
26
  return if observed_values.include?(value.object_id)
19
27
 
20
28
  observed_values << value.object_id
@@ -23,17 +31,22 @@ module AppMap
23
31
  next_value = value[key]
24
32
 
25
33
  value_schema = begin
26
- { name: key, class: best_class_name(next_value) }
27
- rescue
28
- warn "Error in add_schema(#{next_value.class})", $!
29
- raise
30
- end
34
+ { name: key, class: best_class_name(next_value) }
35
+ rescue
36
+ warn "Error in add_schema(#{next_value.class})", $!
37
+ raise
38
+ end
31
39
 
32
40
  detect_schema(next_value, **{ max_depth: max_depth, type_info: value_schema, observed_values: observed_values, depth: depth + 1 })
33
41
  end.compact
34
42
  type_info[:properties] = properties unless properties.empty?
35
- elsif value.respond_to?(:first)
36
- detect_schema(value.first, **{ max_depth: max_depth, type_info: type_info, observed_values: observed_values, depth: depth + 1 })
43
+ elsif array_like?(value)
44
+ type_info[:items] = value.take(max_array_elements).map do |next_value|
45
+ value_schema = { class: best_class_name(next_value) }
46
+ detect_schema(next_value, **{ max_depth: max_depth, type_info: value_schema, observed_values: observed_values, depth: depth + 1 })
47
+ end
48
+
49
+ type_info[:items] = type_info[:items].compact.uniq(&:hash)
37
50
  end
38
51
  type_info
39
52
  end
@@ -46,5 +59,15 @@ module AppMap
46
59
  end
47
60
  value_cls&.name || "unknown"
48
61
  end
62
+
63
+ private
64
+
65
+ def array_like?(value)
66
+ value.is_a?(Enumerable) && !hash_like?(value)
67
+ end
68
+
69
+ def hash_like?(value)
70
+ value.respond_to?(:keys)
71
+ end
49
72
  end
50
73
  end
@@ -3,7 +3,7 @@
3
3
  module AppMap
4
4
  URL = 'https://github.com/applandinc/appmap-ruby'
5
5
 
6
- VERSION = '0.96.0'
6
+ VERSION = '0.97.0'
7
7
 
8
8
  APPMAP_FORMAT_VERSION = '1.10.0'
9
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.96.0
4
+ version: 0.97.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Gilpin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-01 00:00:00.000000000 Z
11
+ date: 2023-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: method_source