yerba 0.9.2-arm-linux-gnu → 0.10.1-arm-linux-gnu

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +53 -17
  3. data/exe/arm-linux-gnu/yerba +0 -0
  4. data/ext/yerba/include/yerba.h +58 -35
  5. data/ext/yerba/yerba.c +281 -187
  6. data/lib/yerba/3.2/yerba.so +0 -0
  7. data/lib/yerba/3.3/yerba.so +0 -0
  8. data/lib/yerba/3.4/yerba.so +0 -0
  9. data/lib/yerba/4.0/yerba.so +0 -0
  10. data/lib/yerba/collection.rb +4 -4
  11. data/lib/yerba/document.rb +134 -0
  12. data/lib/yerba/formatting.rb +1 -0
  13. data/lib/yerba/location.rb +8 -1
  14. data/lib/yerba/map.rb +16 -6
  15. data/lib/yerba/node.rb +41 -0
  16. data/lib/yerba/query_result.rb +33 -10
  17. data/lib/yerba/scalar.rb +29 -0
  18. data/lib/yerba/selector.rb +3 -1
  19. data/lib/yerba/sequence.rb +38 -33
  20. data/lib/yerba/version.rb +1 -1
  21. data/rust/Cargo.lock +1 -1
  22. data/rust/Cargo.toml +1 -1
  23. data/rust/src/commands/get.rs +12 -12
  24. data/rust/src/commands/init.rs +8 -8
  25. data/rust/src/commands/insert.rs +4 -18
  26. data/rust/src/commands/location.rs +2 -0
  27. data/rust/src/commands/mod.rs +34 -6
  28. data/rust/src/commands/move_item.rs +1 -1
  29. data/rust/src/commands/move_key.rs +8 -8
  30. data/rust/src/commands/rename.rs +1 -1
  31. data/rust/src/commands/selectors.rs +1 -1
  32. data/rust/src/commands/set.rs +14 -6
  33. data/rust/src/commands/sort.rs +5 -1
  34. data/rust/src/document/condition.rs +25 -25
  35. data/rust/src/document/delete.rs +57 -43
  36. data/rust/src/document/get.rs +91 -82
  37. data/rust/src/document/insert.rs +77 -77
  38. data/rust/src/document/mod.rs +202 -76
  39. data/rust/src/document/nodes.rs +162 -0
  40. data/rust/src/document/schema.rs +8 -8
  41. data/rust/src/document/set.rs +49 -26
  42. data/rust/src/document/sort.rs +105 -60
  43. data/rust/src/document/style.rs +50 -49
  44. data/rust/src/document/unique.rs +5 -5
  45. data/rust/src/error.rs +8 -4
  46. data/rust/src/ffi.rs +234 -107
  47. data/rust/src/json.rs +62 -2
  48. data/rust/src/lib.rs +4 -2
  49. data/rust/src/main.rs +2 -1
  50. data/rust/src/selector.rs +48 -7
  51. data/rust/src/syntax.rs +449 -56
  52. data/rust/src/validation.rs +5 -3
  53. data/rust/src/yerbafile.rs +168 -94
  54. metadata +3 -2
@@ -1,15 +1,15 @@
1
1
  use super::*;
2
2
 
3
3
  impl Document {
4
- pub fn append(&mut self, dot_path: &str, value: &str) -> Result<(), YerbaError> {
5
- self.insert_into(dot_path, value, InsertPosition::Last)
4
+ pub fn append(&mut self, selector: &str, value: &str) -> Result<(), YerbaError> {
5
+ self.insert_into(selector, value, InsertPosition::Last)
6
6
  }
7
7
 
8
- pub fn detect_sequence_quote_style(&self, dot_path: &str) -> QuoteStyle {
9
- let try_paths = if dot_path.is_empty() {
8
+ pub fn detect_sequence_quote_style(&self, selector: &str) -> QuoteStyle {
9
+ let try_paths = if selector.is_empty() {
10
10
  vec!["[]".to_string(), "[0]".to_string()]
11
11
  } else {
12
- vec![format!("{}[]", dot_path), format!("{}[0]", dot_path)]
12
+ vec![format!("{}[]", selector), format!("{}[0]", selector)]
13
13
  };
14
14
 
15
15
  for try_path in &try_paths {
@@ -22,16 +22,16 @@ impl Document {
22
22
  }
23
23
  }
24
24
 
25
- if let Some(yaml_serde::Value::Sequence(sequence)) = self.get_value(dot_path).as_ref() {
25
+ if let Some(yaml_serde::Value::Sequence(sequence)) = self.get_value(selector).as_ref() {
26
26
  if let Some(yaml_serde::Value::Mapping(map)) = sequence.first() {
27
27
  if let Some((yaml_serde::Value::String(key_name), _)) = map.iter().next() {
28
- let deep_path = if dot_path.is_empty() {
28
+ let deep_selector = if selector.is_empty() {
29
29
  format!("[].{}", key_name)
30
30
  } else {
31
- format!("{}[].{}", dot_path, key_name)
31
+ format!("{}[].{}", selector, key_name)
32
32
  };
33
33
 
34
- for scalar in self.get_all_typed(&deep_path) {
34
+ for scalar in self.get_all_typed(&deep_selector) {
35
35
  if scalar.kind == SyntaxKind::DOUBLE_QUOTED_SCALAR {
36
36
  return QuoteStyle::Double;
37
37
  } else if scalar.kind == SyntaxKind::SINGLE_QUOTED_SCALAR {
@@ -45,27 +45,27 @@ impl Document {
45
45
  QuoteStyle::Plain
46
46
  }
47
47
 
48
- pub fn insert_object(&mut self, dot_path: &str, json_value: &serde_json::Value, position: InsertPosition) -> Result<(), YerbaError> {
49
- let quote_style = self.detect_sequence_quote_style(dot_path);
48
+ pub fn insert_object(&mut self, selector: &str, json_value: &serde_json::Value, position: InsertPosition) -> Result<(), YerbaError> {
49
+ let quote_style = self.detect_sequence_quote_style(selector);
50
50
  let yaml_text = crate::yaml_writer::json_to_yaml_text(json_value, &quote_style, 0);
51
51
 
52
- self.insert_into(dot_path, &yaml_text, position)
52
+ self.insert_into(selector, &yaml_text, position)
53
53
  }
54
54
 
55
- pub fn insert_objects(&mut self, dot_path: &str, json_values: &[serde_json::Value]) -> Result<(), YerbaError> {
55
+ pub fn insert_objects(&mut self, selector: &str, json_values: &[serde_json::Value]) -> Result<(), YerbaError> {
56
56
  if json_values.is_empty() {
57
57
  return Ok(());
58
58
  }
59
59
 
60
- let quote_style = self.detect_sequence_quote_style(dot_path);
61
- let current_node = self.navigate(dot_path)?;
60
+ let quote_style = self.detect_sequence_quote_style(selector);
61
+ let current_node = self.navigate(selector)?;
62
62
 
63
- let sequence = find_block_sequence(&current_node).ok_or_else(|| YerbaError::NotASequence(dot_path.to_string()))?;
63
+ let sequence = find_block_sequence(&current_node).ok_or_else(|| YerbaError::NotASequence(selector.to_string()))?;
64
64
 
65
65
  let entries: Vec<_> = sequence.entries().collect();
66
66
 
67
67
  if entries.is_empty() {
68
- return Err(YerbaError::SelectorNotFound(dot_path.to_string()));
68
+ return Err(YerbaError::SelectorNotFound(selector.to_string()));
69
69
  }
70
70
 
71
71
  let indent = entries
@@ -88,60 +88,60 @@ impl Document {
88
88
  self.insert_after_node(last_entry.syntax(), &new_text)
89
89
  }
90
90
 
91
- pub fn insert_into(&mut self, dot_path: &str, value: &str, position: InsertPosition) -> Result<(), YerbaError> {
92
- self.insert_with(dot_path, value, position, false)
91
+ pub fn insert_into(&mut self, selector: &str, value: &str, position: InsertPosition) -> Result<(), YerbaError> {
92
+ self.insert_with(selector, value, position, false)
93
93
  }
94
94
 
95
- pub fn insert_fragment_into(&mut self, dot_path: &str, value: &str, position: InsertPosition) -> Result<(), YerbaError> {
96
- self.insert_with(dot_path, value, position, true)
95
+ pub fn insert_fragment_into(&mut self, selector: &str, value: &str, position: InsertPosition) -> Result<(), YerbaError> {
96
+ self.insert_with(selector, value, position, true)
97
97
  }
98
98
 
99
- fn insert_with(&mut self, dot_path: &str, value: &str, position: InsertPosition, fragment: bool) -> Result<(), YerbaError> {
100
- Self::validate_path(dot_path)?;
101
- self.refuse_flow_target(dot_path)?;
99
+ fn insert_with(&mut self, selector: &str, value: &str, position: InsertPosition, fragment: bool) -> Result<(), YerbaError> {
100
+ Self::validate_selector(selector)?;
101
+ self.refuse_flow_target(selector)?;
102
102
 
103
- if let Some((parent_path, _)) = dot_path.rsplit_once('.') {
104
- if let Ok(parent) = self.navigate(parent_path) {
103
+ if let Some((parent_selector, _)) = selector.rsplit_once('.') {
104
+ if let Ok(parent) = self.navigate(parent_selector) {
105
105
  let occupied_flow = find_flow_map(&parent).map(|map| !flow_map_entries(&map).is_empty()).unwrap_or(false)
106
106
  || find_flow_sequence(&parent)
107
107
  .map(|sequence| !flow_sequence_entries(&sequence).is_empty())
108
108
  .unwrap_or(false);
109
109
 
110
110
  if occupied_flow {
111
- return Err(YerbaError::FlowCollectionNotWritable(dot_path.to_string()));
111
+ return Err(YerbaError::FlowCollectionNotWritable(selector.to_string()));
112
112
  }
113
113
  }
114
114
  }
115
115
 
116
- if crate::selector::Selector::parse(dot_path)
116
+ if crate::selector::Selector::parse(selector)
117
117
  .segments()
118
118
  .iter()
119
119
  .any(|segment| matches!(segment, crate::selector::SelectorSegment::AllKeys))
120
120
  {
121
- return Err(YerbaError::SelectorNotFound(dot_path.to_string()));
121
+ return Err(YerbaError::SelectorNotFound(selector.to_string()));
122
122
  }
123
123
 
124
- if let Ok(current_node) = self.navigate(dot_path) {
124
+ if let Ok(current_node) = self.navigate(selector) {
125
125
  if find_block_sequence(&current_node).is_some()
126
- || matches!(self.get_value(dot_path).as_ref(), Some(yaml_serde::Value::Sequence(sequence)) if sequence.is_empty())
126
+ || matches!(self.get_value(selector).as_ref(), Some(yaml_serde::Value::Sequence(sequence)) if sequence.is_empty())
127
127
  {
128
- return self.insert_sequence_item(dot_path, value, position);
128
+ return self.insert_sequence_item(selector, value, position);
129
129
  }
130
130
  }
131
131
 
132
- let selector = crate::selector::Selector::parse(dot_path);
133
- let has_wildcard = selector.has_wildcard() || selector.has_brackets();
134
- let (parent_path, key) = dot_path.rsplit_once('.').unwrap_or(("", dot_path));
132
+ let parsed = crate::selector::Selector::parse(selector);
133
+ let has_wildcard = parsed.has_wildcard() || parsed.has_brackets();
134
+ let (parent_selector, key) = selector.rsplit_once('.').unwrap_or(("", selector));
135
135
 
136
136
  if has_wildcard {
137
- let count = self.navigate_all_compact(parent_path).len();
137
+ let count = self.navigate_all_compact(parent_selector).len();
138
138
 
139
139
  if count == 0 {
140
140
  return Ok(());
141
141
  }
142
142
 
143
143
  for i in (0..count).rev() {
144
- let nodes = self.navigate_all_compact(parent_path);
144
+ let nodes = self.navigate_all_compact(parent_selector);
145
145
 
146
146
  let node = match nodes.get(i) {
147
147
  Some(node) => node.clone(),
@@ -156,10 +156,10 @@ impl Document {
156
156
  .any(|descendant| descendant.kind() == SyntaxKind::FLOW_MAP && !descendant.descendants().any(|child| child.kind() == SyntaxKind::FLOW_MAP_ENTRY));
157
157
 
158
158
  if has_empty_flow_map {
159
- let selectors = self.resolve_selectors(parent_path);
159
+ let selectors = self.resolve_selectors(parent_selector);
160
160
 
161
- if let Some(selector) = selectors.get(i) {
162
- self.replace_empty_inline_map(selector, key, value)?;
161
+ if let Some(item_selector) = selectors.get(i) {
162
+ self.replace_empty_inline_map(item_selector, key, value)?;
163
163
  continue;
164
164
  }
165
165
  }
@@ -226,24 +226,24 @@ impl Document {
226
226
  return Ok(());
227
227
  }
228
228
 
229
- self.insert_map_key(parent_path, key, value, position, fragment)
229
+ self.insert_map_key(parent_selector, key, value, position, fragment)
230
230
  }
231
231
 
232
- fn insert_sequence_item(&mut self, dot_path: &str, value: &str, position: InsertPosition) -> Result<(), YerbaError> {
233
- let current_node = self.navigate(dot_path)?;
232
+ fn insert_sequence_item(&mut self, selector: &str, value: &str, position: InsertPosition) -> Result<(), YerbaError> {
233
+ let current_node = self.navigate(selector)?;
234
234
 
235
235
  let Some(sequence) = find_block_sequence(&current_node) else {
236
- if matches!(self.get_value(dot_path).as_ref(), Some(yaml_serde::Value::Sequence(sequence)) if sequence.is_empty()) {
237
- return self.replace_empty_inline_sequence(dot_path, value);
236
+ if matches!(self.get_value(selector).as_ref(), Some(yaml_serde::Value::Sequence(sequence)) if sequence.is_empty()) {
237
+ return self.replace_empty_inline_sequence(selector, value);
238
238
  }
239
239
 
240
- return Err(YerbaError::NotASequence(dot_path.to_string()));
240
+ return Err(YerbaError::NotASequence(selector.to_string()));
241
241
  };
242
242
 
243
243
  let entries: Vec<_> = sequence.entries().collect();
244
244
 
245
245
  if entries.is_empty() {
246
- return Err(YerbaError::SelectorNotFound(dot_path.to_string()));
246
+ return Err(YerbaError::SelectorNotFound(selector.to_string()));
247
247
  }
248
248
 
249
249
  let indent = entries
@@ -288,7 +288,7 @@ impl Document {
288
288
  .map(|text| text == target_value)
289
289
  .unwrap_or(false)
290
290
  })
291
- .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} item '{}'", dot_path, target_value)))?;
291
+ .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} item '{}'", selector, target_value)))?;
292
292
 
293
293
  let target_range = target_entry.syntax().text_range();
294
294
  let replacement = format!("{}\n{}", new_item, indent);
@@ -307,7 +307,7 @@ impl Document {
307
307
  .map(|text| text == target_value)
308
308
  .unwrap_or(false)
309
309
  })
310
- .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} item '{}'", dot_path, target_value)))?;
310
+ .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} item '{}'", selector, target_value)))?;
311
311
 
312
312
  let new_text = format!("\n{}{}", indent, new_item);
313
313
 
@@ -318,7 +318,7 @@ impl Document {
318
318
  let target_entry = entries
319
319
  .iter()
320
320
  .find(|entry| self.evaluate_condition_on_node(entry.syntax(), &condition))
321
- .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} condition '{}'", dot_path, condition)))?;
321
+ .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} condition '{}'", selector, condition)))?;
322
322
 
323
323
  let target_range = target_entry.syntax().text_range();
324
324
  let replacement = format!("{}\n{}", new_item, indent);
@@ -331,7 +331,7 @@ impl Document {
331
331
  let target_entry = entries
332
332
  .iter()
333
333
  .find(|entry| self.evaluate_condition_on_node(entry.syntax(), &condition))
334
- .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} condition '{}'", dot_path, condition)))?;
334
+ .ok_or_else(|| YerbaError::SelectorNotFound(format!("{} condition '{}'", selector, condition)))?;
335
335
 
336
336
  let new_text = format!("\n{}{}", indent, new_item);
337
337
 
@@ -347,8 +347,8 @@ impl Document {
347
347
  }
348
348
  }
349
349
 
350
- fn insert_map_key(&mut self, dot_path: &str, key: &str, value: &str, position: InsertPosition, fragment: bool) -> Result<(), YerbaError> {
351
- let current_node = self.navigate(dot_path)?;
350
+ fn insert_map_key(&mut self, selector: &str, key: &str, value: &str, position: InsertPosition, fragment: bool) -> Result<(), YerbaError> {
351
+ let current_node = self.navigate(selector)?;
352
352
 
353
353
  let map = match find_block_map(&current_node) {
354
354
  Some(map) => map,
@@ -359,11 +359,11 @@ impl Document {
359
359
  let is_empty = !flow_map_node.descendants().any(|descendant| descendant.kind() == SyntaxKind::FLOW_MAP_ENTRY);
360
360
 
361
361
  if is_empty {
362
- return self.replace_empty_inline_map(dot_path, key, value);
362
+ return self.replace_empty_inline_map(selector, key, value);
363
363
  }
364
364
  }
365
365
 
366
- return Err(YerbaError::SelectorNotFound(dot_path.to_string()));
366
+ return Err(YerbaError::SelectorNotFound(selector.to_string()));
367
367
  }
368
368
  };
369
369
 
@@ -377,7 +377,7 @@ impl Document {
377
377
  }
378
378
 
379
379
  if find_entry_by_key(&map, key).is_some() {
380
- return Err(YerbaError::ParseError(format!("key '{}' already exists at '{}'", key, dot_path)));
380
+ return Err(YerbaError::ParseError(format!("key '{}' already exists at '{}'", key, selector)));
381
381
  }
382
382
 
383
383
  let indent = entries
@@ -413,7 +413,7 @@ impl Document {
413
413
  }
414
414
 
415
415
  InsertPosition::Before(target_key) => {
416
- let target_entry = find_entry_by_key(&map, &target_key).ok_or_else(|| YerbaError::SelectorNotFound(format!("{}.{}", dot_path, target_key)))?;
416
+ let target_entry = find_entry_by_key(&map, &target_key).ok_or_else(|| YerbaError::SelectorNotFound(format!("{}.{}", selector, target_key)))?;
417
417
 
418
418
  let target_range = target_entry.syntax().text_range();
419
419
  let replacement = format!("{}\n{}", new_entry_text, indent);
@@ -423,14 +423,14 @@ impl Document {
423
423
  }
424
424
 
425
425
  InsertPosition::After(target_key) => {
426
- let target_entry = find_entry_by_key(&map, &target_key).ok_or_else(|| YerbaError::SelectorNotFound(format!("{}.{}", dot_path, target_key)))?;
426
+ let target_entry = find_entry_by_key(&map, &target_key).ok_or_else(|| YerbaError::SelectorNotFound(format!("{}.{}", selector, target_key)))?;
427
427
 
428
428
  let new_text = format!("\n{}{}", indent, new_entry_text);
429
429
 
430
430
  self.insert_after_node(target_entry.syntax(), &new_text)
431
431
  }
432
432
 
433
- InsertPosition::BeforeCondition(_) | InsertPosition::AfterCondition(_) => self.insert_map_key(dot_path, key, value, InsertPosition::Last, fragment),
433
+ InsertPosition::BeforeCondition(_) | InsertPosition::AfterCondition(_) => self.insert_map_key(selector, key, value, InsertPosition::Last, fragment),
434
434
 
435
435
  InsertPosition::FromSortOrder(order) => {
436
436
  let new_key_position = order.iter().position(|ordered_key| ordered_key == key);
@@ -455,19 +455,19 @@ impl Document {
455
455
  None => InsertPosition::Last,
456
456
  };
457
457
 
458
- self.insert_map_key(dot_path, key, value, resolved, fragment)
458
+ self.insert_map_key(selector, key, value, resolved, fragment)
459
459
  }
460
460
  }
461
461
  }
462
462
 
463
- fn replace_empty_inline_map(&mut self, dot_path: &str, key: &str, value: &str) -> Result<(), YerbaError> {
464
- let current_node = self.navigate(dot_path)?;
463
+ fn replace_empty_inline_map(&mut self, selector: &str, key: &str, value: &str) -> Result<(), YerbaError> {
464
+ let current_node = self.navigate(selector)?;
465
465
 
466
- if dot_path.is_empty() {
466
+ if selector.is_empty() {
467
467
  let flow_map = current_node
468
468
  .descendants()
469
469
  .find(|descendant| descendant.kind() == SyntaxKind::FLOW_MAP)
470
- .ok_or_else(|| YerbaError::SelectorNotFound(dot_path.to_string()))?;
470
+ .ok_or_else(|| YerbaError::SelectorNotFound(selector.to_string()))?;
471
471
 
472
472
  let range = flow_map.text_range();
473
473
 
@@ -482,12 +482,12 @@ impl Document {
482
482
  return self.apply_edit(adjusted_range, &replacement);
483
483
  }
484
484
 
485
- let (parent_path, map_key) = dot_path.rsplit_once('.').unwrap_or(("", dot_path));
486
- let parent_node = self.navigate(parent_path)?;
485
+ let (parent_selector, map_key) = selector.rsplit_once('.').unwrap_or(("", selector));
486
+ let parent_node = self.navigate(parent_selector)?;
487
487
 
488
- let map = find_block_map(&parent_node).ok_or_else(|| YerbaError::SelectorNotFound(dot_path.to_string()))?;
488
+ let map = find_block_map(&parent_node).ok_or_else(|| YerbaError::SelectorNotFound(selector.to_string()))?;
489
489
 
490
- let entry = find_entry_by_key(&map, map_key).ok_or_else(|| YerbaError::SelectorNotFound(dot_path.to_string()))?;
490
+ let entry = find_entry_by_key(&map, map_key).ok_or_else(|| YerbaError::SelectorNotFound(selector.to_string()))?;
491
491
  let entry_indent = preceding_whitespace_indent(entry.syntax());
492
492
  let child_indent = format!("{} ", entry_indent);
493
493
  let new_entry_text = format!("{}{}: {}", child_indent, key, value);
@@ -505,13 +505,13 @@ impl Document {
505
505
  self.apply_edit(range, &replacement)
506
506
  }
507
507
 
508
- fn replace_empty_inline_sequence(&mut self, dot_path: &str, value: &str) -> Result<(), YerbaError> {
509
- if dot_path.is_empty() {
510
- let current_node = self.navigate(dot_path)?;
508
+ fn replace_empty_inline_sequence(&mut self, selector: &str, value: &str) -> Result<(), YerbaError> {
509
+ if selector.is_empty() {
510
+ let current_node = self.navigate(selector)?;
511
511
  let flow_sequence = current_node
512
512
  .descendants()
513
513
  .find(|descendant| descendant.kind() == SyntaxKind::FLOW_SEQ)
514
- .ok_or_else(|| YerbaError::NotASequence(dot_path.to_string()))?;
514
+ .ok_or_else(|| YerbaError::NotASequence(selector.to_string()))?;
515
515
 
516
516
  let new_item = Self::format_sequence_item(value, "");
517
517
  let range = flow_sequence.text_range();
@@ -528,15 +528,15 @@ impl Document {
528
528
  return self.apply_edit(adjusted_range, &replacement);
529
529
  }
530
530
 
531
- let (parent_path, key) = dot_path.rsplit_once('.').unwrap_or(("", dot_path));
532
- let parent_node = self.navigate(parent_path)?;
531
+ let (parent_selector, key) = selector.rsplit_once('.').unwrap_or(("", selector));
532
+ let parent_node = self.navigate(parent_selector)?;
533
533
 
534
- let map = find_block_map(&parent_node).ok_or_else(|| YerbaError::NotASequence(dot_path.to_string()))?;
534
+ let map = find_block_map(&parent_node).ok_or_else(|| YerbaError::NotASequence(selector.to_string()))?;
535
535
 
536
- let entry = find_entry_by_key(&map, key).ok_or_else(|| YerbaError::SelectorNotFound(dot_path.to_string()))?;
536
+ let entry = find_entry_by_key(&map, key).ok_or_else(|| YerbaError::SelectorNotFound(selector.to_string()))?;
537
537
  let item_indent = format!("{} ", preceding_whitespace_indent(entry.syntax()));
538
538
  let new_item = Self::format_sequence_item(value, &item_indent);
539
- let current_node = self.navigate(dot_path)?;
539
+ let current_node = self.navigate(selector)?;
540
540
  let inline_comment = self.trailing_inline_comment(&current_node);
541
541
 
542
542
  let mut range = current_node.text_range();