Skip to content

Commit

Permalink
feat(blocks): Add Word Character Count Block (#8781)
Browse files Browse the repository at this point in the history
* Adds Word Character Count Block

Co-Authored-By: SerchioSD <[email protected]>

* update test_output

---------

Co-authored-by: SerchioSD <[email protected]>
  • Loading branch information
Bentlybro and SerchioSD authored Nov 26, 2024
1 parent f62fa3e commit 4aae15d
Showing 1 changed file with 43 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from backend.data.block import Block, BlockCategory, BlockOutput, BlockSchema
from backend.data.model import SchemaField


class WordCharacterCountBlock(Block):
class Input(BlockSchema):
text: str = SchemaField(
description="Input text to count words and characters",
placeholder="Enter your text here",
advanced=False,
)

class Output(BlockSchema):
word_count: int = SchemaField(description="Number of words in the input text")
character_count: int = SchemaField(
description="Number of characters in the input text"
)
error: str = SchemaField(
description="Error message if the counting operation failed"
)

def __init__(self):
super().__init__(
id="ab2a782d-22cf-4587-8a70-55b59b3f9f90",
description="Counts the number of words and characters in a given text.",
categories={BlockCategory.TEXT},
input_schema=WordCharacterCountBlock.Input,
output_schema=WordCharacterCountBlock.Output,
test_input={"text": "Hello, how are you?"},
test_output=[("word_count", 4), ("character_count", 19)],
)

def run(self, input_data: Input, **kwargs) -> BlockOutput:
try:
text = input_data.text
word_count = len(text.split())
character_count = len(text)

yield "word_count", word_count
yield "character_count", character_count

except Exception as e:
yield "error", str(e)

0 comments on commit 4aae15d

Please sign in to comment.