Skip to content

Commit

Permalink
Add row filter text
Browse files Browse the repository at this point in the history
  • Loading branch information
Enkidu93 committed Sep 30, 2024
1 parent 2f55e46 commit e02333a
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/SIL.Machine/Corpora/CorporaExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,11 @@ public static ITextCorpus FilterTexts(this ITextCorpus corpus, Func<IText, bool>
return new TextFilterTextCorpus(corpus, predicate);
}

public static ITextCorpus FilterTextRows(this ITextCorpus corpus, Func<TextRow, bool> predicate)
{
return new RowFilterTextCorpus(corpus, predicate);
}

public static ITextCorpus WhereNonempty(this ITextCorpus corpus)
{
return corpus.Where(r => !r.IsEmpty);
Expand Down Expand Up @@ -442,6 +447,29 @@ public override IEnumerable<TextRow> GetRows(IEnumerable<string> textIds)
}
}

private class RowFilterTextCorpus : TextCorpusBase
{
private readonly ITextCorpus _corpus;
private readonly Func<TextRow, bool> _predicate;

public RowFilterTextCorpus(ITextCorpus corpus, Func<TextRow, bool> predicate)
{
_corpus = corpus;
_predicate = predicate;
}

public override IEnumerable<IText> Texts => _corpus.Texts;

public override bool IsTokenized => _corpus.IsTokenized;

public override ScrVers Versification => _corpus.Versification;

public override IEnumerable<TextRow> GetRows(IEnumerable<string> textIds)
{
return _corpus.GetRows(textIds ?? Texts.Select(t => t.Id)).Where(_predicate);
}
}

private class TakeTextCorpus : TextCorpusBase
{
private readonly ITextCorpus _corpus;
Expand Down

0 comments on commit e02333a

Please sign in to comment.