MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / globalize_insert

Function globalize_insert

atomic-core/src/record/workflow/globalize/hunk.rs:181–229  ·  view source on GitHub ↗
(
    ctx: &mut GlobalizeContext<'_, T>,
    built: &BuiltHunk,
    inode: Inode,
    inode_pos: Position<NodeId>,
    content: &[u8],
    old_line_count: Option<usize>,
    local: Local,
    encoding

Source from the content-addressed store, hash-verified

179/// caller (`globalize_hunk`) falls back to a whole-file Replace.
180#[allow(clippy::too_many_arguments)]
181fn globalize_insert<T>(
182 ctx: &mut GlobalizeContext<'_, T>,
183 built: &BuiltHunk,
184 inode: Inode,
185 inode_pos: Position<NodeId>,
186 content: &[u8],
187 old_line_count: Option<usize>,
188 local: Local,
189 encoding: Option<Encoding>,
190) -> GlobalizeResult<Vec<GraphOp<Option<Hash>>>>
191where
192 T: GraphTxnT + TreeTxnT + InodeGraphOps,
193{
194 let vertices = collect_sorted_content_vertices_cached(ctx, inode, inode_pos)?;
195 let position = classify_insert(&vertices, inode_pos, built.old_start, old_line_count)?;
196
197 let (predecessors, successors) = match position {
198 InsertPosition::Prepend { first_content } => (vec![inode_pos], vec![first_content]),
199 InsertPosition::Append { last_content_end } => (vec![last_content_end], vec![]),
200 InsertPosition::Middle {
201 predecessor_end,
202 successor_start,
203 } => (vec![predecessor_end], vec![successor_start]),
204 };
205
206 if should_use_opaque_generated_vertices(&local.path) {
207 let insertion =
208 create_content_vertex(ctx, inode, inode_pos, predecessors, successors, content)?;
209 return Ok(vec![GraphOp::Edit {
210 change: Atom::Insertion(insertion),
211 local,
212 encoding,
213 }]);
214 }
215
216 let insertions =
217 create_content_vertices_per_line(ctx, inode, inode_pos, predecessors, successors, content)?;
218
219 let ops = insertions
220 .into_iter()
221 .map(|vertex| GraphOp::Edit {
222 change: Atom::Insertion(vertex),
223 local: local.clone(),
224 encoding,
225 })
226 .collect();
227
228 Ok(ops)
229}
230
231// ───────────────────────────────────────────────────────────────────────────
232// Replace: delete all old content, insert full new content

Callers 1

globalize_hunkFunction · 0.85

Calls 8

classify_insertFunction · 0.85
create_content_vertexFunction · 0.85
InsertionClass · 0.85
into_iterMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected