Skip to content

Commit 5b84305

Browse files
ono-maxko1
authored andcommitted
Set abbreviated property values in the Chrome DevTools Console
1 parent e5bfa1c commit 5b84305

File tree

1 file changed

+80
-17
lines changed

1 file changed

+80
-17
lines changed

lib/debug/server_cdp.rb

Lines changed: 80 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -861,25 +861,25 @@ def process_cdp args
861861
}
862862
when String
863863
prop = [
864-
property('#length', obj.length),
865-
property('#encoding', obj.encoding)
864+
internalProperty('#length', obj.length),
865+
internalProperty('#encoding', obj.encoding)
866866
]
867867
when Class, Module
868868
result = obj.instance_variables.map{|iv|
869869
variable(iv, obj.instance_variable_get(iv))
870870
}
871-
prop = [property('%ancestors', obj.ancestors[1..])]
871+
prop = [internalProperty('%ancestors', obj.ancestors[1..])]
872872
when Range
873873
prop = [
874-
property('#begin', obj.begin),
875-
property('#end', obj.end),
874+
internalProperty('#begin', obj.begin),
875+
internalProperty('#end', obj.end),
876876
]
877877
end
878878

879879
result += obj.instance_variables.map{|iv|
880880
variable(iv, obj.instance_variable_get(iv))
881881
}
882-
prop += [property('#class', obj.class)]
882+
prop += [internalProperty('#class', obj.class)]
883883
end
884884
event! :cdp_result, :properties, req, result: result, internalProperties: prop
885885
end
@@ -907,15 +907,15 @@ def evaluate_result r
907907
v[:value]
908908
end
909909

910-
def property name, obj
910+
def internalProperty name, obj
911911
v = variable name, obj
912912
v.delete :configurable
913913
v.delete :enumerable
914914
v
915915
end
916916

917-
def variable_ name, obj, type, description: nil, subtype: nil
918-
description = DEBUGGER__.safe_inspect(obj) if description.nil?
917+
def propertyDescriptor_ name, obj, type, description: nil, subtype: nil
918+
description = DEBUGGER__.safe_inspect(obj, short: true) if description.nil?
919919
oid = rand.to_s
920920
@obj_map[oid] = obj
921921
prop = {
@@ -939,28 +939,91 @@ def variable_ name, obj, type, description: nil, subtype: nil
939939
prop
940940
end
941941

942+
def preview_ value, hash, overflow
943+
{
944+
type: value[:type],
945+
subtype: value[:subtype],
946+
description: value[:description],
947+
overflow: overflow,
948+
properties: hash.map{|k, v|
949+
pd = propertyDescriptor k, v
950+
{
951+
name: pd[:name],
952+
type: pd[:value][:type],
953+
value: pd[:value][:description]
954+
}
955+
}
956+
}
957+
end
958+
942959
def variable name, obj
960+
pd = propertyDescriptor name, obj
961+
case obj
962+
when Array
963+
pd[:value][:preview] = preview name, obj
964+
obj.each_with_index{|item, idx|
965+
if valuePreview = preview(idx.to_s, item)
966+
pd[:value][:preview][:properties][idx][:valuePreview] = valuePreview
967+
end
968+
}
969+
when Hash
970+
pd[:value][:preview] = preview name, obj
971+
obj.each_with_index{|item, idx|
972+
key, val = item
973+
if valuePreview = preview(key, val)
974+
pd[:value][:preview][:properties][idx][:valuePreview] = valuePreview
975+
end
976+
}
977+
end
978+
pd
979+
end
980+
981+
def preview name, obj
982+
case obj
983+
when Array
984+
pd = propertyDescriptor name, obj
985+
overflow = false
986+
if obj.size > 100
987+
obj = obj[0..99]
988+
overflow = true
989+
end
990+
hash = obj.each_with_index.to_h{|o, i| [i.to_s, o]}
991+
preview_ pd[:value], hash, overflow
992+
when Hash
993+
pd = propertyDescriptor name, obj
994+
overflow = false
995+
if obj.size > 100
996+
obj = obj.to_a[0..99].to_h
997+
overflow = true
998+
end
999+
preview_ pd[:value], obj, overflow
1000+
else
1001+
nil
1002+
end
1003+
end
1004+
1005+
def propertyDescriptor name, obj
9431006
case obj
9441007
when Array
945-
variable_ name, obj, 'object', description: "Array(#{obj.size})", subtype: 'array'
1008+
propertyDescriptor_ name, obj, 'object', subtype: 'array'
9461009
when Hash
947-
variable_ name, obj, 'object', description: "Hash(#{obj.size})", subtype: 'map'
1010+
propertyDescriptor_ name, obj, 'object', subtype: 'map'
9481011
when String
949-
variable_ name, obj, 'string', description: obj
1012+
propertyDescriptor_ name, obj, 'string', description: obj
9501013
when TrueClass, FalseClass
951-
variable_ name, obj, 'boolean'
1014+
propertyDescriptor_ name, obj, 'boolean'
9521015
when Symbol
953-
variable_ name, obj, 'symbol'
1016+
propertyDescriptor_ name, obj, 'symbol'
9541017
when Integer, Float
955-
variable_ name, obj, 'number'
1018+
propertyDescriptor_ name, obj, 'number'
9561019
when Exception
9571020
bt = nil
9581021
if log = obj.backtrace
9591022
bt = log.map{|e| " #{e}\n"}.join
9601023
end
961-
variable_ name, obj, 'object', description: "#{obj.inspect}\n#{bt}", subtype: 'error'
1024+
propertyDescriptor_ name, obj, 'object', description: "#{obj.inspect}\n#{bt}", subtype: 'error'
9621025
else
963-
variable_ name, obj, 'object'
1026+
propertyDescriptor_ name, obj, 'object'
9641027
end
9651028
end
9661029
end

0 commit comments

Comments
 (0)