@@ -619,38 +619,31 @@ def initialize(*_)
619
619
o . type :hash , nilable : true
620
620
o . env [ Core ::Environment ::Ext ::ENV_TAGS , Core ::Environment ::Ext ::ENV_OTEL_RESOURCE_ATTRIBUTES ]
621
621
o . env_parser do |env_value |
622
- values = if env_value . include? ( ',' )
623
- env_value . split ( ',' )
624
- else
625
- env_value . split ( ' ' ) # rubocop:disable Style/RedundantArgument
626
- end
627
- values . map! do |v |
628
- v . gsub! ( /\A [\s ,]*|[\s ,]*\Z / , '' )
629
-
630
- v . empty? ? nil : v
631
- end
632
-
633
- values . compact!
634
- values . each_with_object ( { } ) do |tag , tags |
635
- key , value = tag . split ( ':' , 2 )
636
- if value . nil?
637
- # support tags/attributes delimited by the OpenTelemetry separator (`=`)
638
- key , value = tag . split ( '=' , 2 )
639
- end
640
- next if value . nil? || value . empty?
641
-
642
- # maps OpenTelemetry semantic attributes to Datadog tags
643
- case key . downcase
644
- when 'deployment.environment'
645
- tags [ 'env' ] = value
646
- when 'service.version'
647
- tags [ 'version' ] = value
648
- when 'service.name'
649
- tags [ 'service' ] = value
650
- else
651
- tags [ key ] = value
622
+ # Parses a string containing key-value pairs and returns a hash.
623
+ # Key-value pairs are delimited by ':' OR `=`, and pairs are separated by whitespace, comma, OR BOTH.
624
+ result = { }
625
+ unless env_value . nil? || env_value . empty?
626
+ # falling back to comma as separator
627
+ sep = env_value . include? ( ',' ) ? ',' : ' '
628
+ # split by separator
629
+ env_value . split ( sep ) . each do |tag |
630
+ tag . strip!
631
+ next if tag . empty?
632
+
633
+ # tag by : or = (for OpenTelemetry)
634
+ key , val = tag . split ( /[:=]/ , 2 ) . map ( &:strip )
635
+ val ||= ''
636
+ # maps OpenTelemetry semantic attributes to Datadog tags
637
+ key = case key . downcase
638
+ when 'deployment.environment' then 'env'
639
+ when 'service.version' then 'version'
640
+ when 'service.name' then 'service'
641
+ else key
642
+ end
643
+ result [ key ] = val unless key . empty?
652
644
end
653
645
end
646
+ result
654
647
end
655
648
o . setter do |new_value , old_value |
656
649
raw_tags = new_value || { }
0 commit comments