Skip to content

Commit e1772cf

Browse files
committed
Make Credo happy
Credo complained that the `slice/1` implementation was getting a little complex, and I tend to agree. Let's factory some code out into a separate helper function.
1 parent a938643 commit e1772cf

1 file changed

Lines changed: 29 additions & 29 deletions

File tree

lib/pg_large_objects/large_object.ex

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -430,38 +430,38 @@ defimpl Enumerable, for: PgLargeObjects.LargeObject do
430430
def slice(lob) do
431431
case count(lob) do
432432
{:ok, size} ->
433-
slicing_fun = fn
434-
start, length, 1 ->
435-
case PgLargeObjects.LargeObject.seek(lob, start * lob.bufsize) do
436-
{:ok, _} -> :ok
437-
{:error, reason} -> raise "failed to seek in large object: #{inspect(reason)}"
438-
end
439-
440-
for _ <- 0..(length - 1) do
441-
case PgLargeObjects.LargeObject.read(lob, lob.bufsize) do
442-
{:ok, data} -> data
443-
{:error, reason} -> raise "failed to read from large object: #{inspect(reason)}"
444-
end
445-
end
446-
447-
start, length, step ->
448-
for i <- 0..(length - 1)//step do
449-
case PgLargeObjects.LargeObject.seek(lob, (start + i) * lob.bufsize) do
450-
{:ok, _} -> :ok
451-
{:error, reason} -> raise "failed to seek in large object: #{inspect(reason)}"
452-
end
453-
454-
case PgLargeObjects.LargeObject.read(lob, lob.bufsize) do
455-
{:ok, data} -> data
456-
{:error, reason} -> raise "failed to read from large object: #{inspect(reason)}"
457-
end
458-
end
459-
end
460-
461-
{:ok, size, slicing_fun}
433+
{:ok, size, fn start, length, step -> slicing_fun(lob, start, length, step) end}
462434

463435
{:error, _} ->
464436
{:error, __MODULE__}
465437
end
466438
end
439+
440+
defp slicing_fun(lob, start, length, 1) do
441+
case PgLargeObjects.LargeObject.seek(lob, start * lob.bufsize) do
442+
{:ok, _} -> :ok
443+
{:error, reason} -> raise "failed to seek in large object: #{inspect(reason)}"
444+
end
445+
446+
for _ <- 0..(length - 1) do
447+
case PgLargeObjects.LargeObject.read(lob, lob.bufsize) do
448+
{:ok, data} -> data
449+
{:error, reason} -> raise "failed to read from large object: #{inspect(reason)}"
450+
end
451+
end
452+
end
453+
454+
defp slicing_fun(lob, start, length, step) do
455+
for i <- 0..(length - 1)//step do
456+
case PgLargeObjects.LargeObject.seek(lob, (start + i) * lob.bufsize) do
457+
{:ok, _} -> :ok
458+
{:error, reason} -> raise "failed to seek in large object: #{inspect(reason)}"
459+
end
460+
461+
case PgLargeObjects.LargeObject.read(lob, lob.bufsize) do
462+
{:ok, data} -> data
463+
{:error, reason} -> raise "failed to read from large object: #{inspect(reason)}"
464+
end
465+
end
466+
end
467467
end

0 commit comments

Comments
 (0)