InlayHint.fromLsp constructor
Creates an InlayHint from LSP response data
Implementation
factory InlayHint.fromLsp(Map<String, dynamic> data) {
final position = data['position'] as Map<String, dynamic>;
final kind = data['kind'] as int? ?? 1;
final label = data['label'];
final paddingRight = data['paddingRight'] as bool? ?? false;
final paddingLeft = data['paddingLeft'] as bool? ?? false;
String text;
Map<String, dynamic>? location;
if (label is List && label.isNotEmpty) {
final parts = <String>[];
for (final part in label) {
if (part is Map<String, dynamic>) {
parts.add(part['value'] as String? ?? '');
if (part.containsKey('location')) {
location = part['location'] as Map<String, dynamic>?;
}
} else if (part is String) {
parts.add(part);
}
}
text = parts.join();
} else if (label is String) {
text = label;
} else {
text = '';
}
return InlayHint(
line: position['line'] as int,
column: position['character'] as int,
text: text,
kind: kind == 1 ? InlayHintKind.type : InlayHintKind.parameter,
paddingRight: paddingRight,
paddingLeft: paddingLeft,
location: location,
);
}