2023-06-05 16:37:37 +03:00
package OOP.Java.lab_5
2023-06-07 15:38:48 +03:00
/**
* A class representing a single sentence is a text.
*
* @property sentenceArray a [Pair] of [Array]s of [Word] and [Punctuation] objects that make up a sentence.
*
* @constructor a primary constructor accepts a [Pair] of [Array]s of [Word] and [Punctuation] objects, a secondary one accepts a string representing the entire sentence.
*/
class Sentence ( var sentenceArray : Pair < Array < Word > , Array < Punctuation > > ) {
2023-06-05 19:05:22 +03:00
2023-06-07 15:38:48 +03:00
constructor (
sentenceString : String
) : this (
Pair (
sentenceString . split ( " [ \\ p{Punct} \\ s]+ " . toRegex ( ) ) . filter { it . isNotEmpty ( ) } . map { word -> Word ( word ) } . toTypedArray ( ) ,
sentenceString . split ( " " ) . map { word -> Punctuation ( word . last ( ) . toString ( ) ) } . toTypedArray ( )
)
)
2023-06-05 19:05:22 +03:00
2023-06-07 15:38:48 +03:00
/**
* Returns an array of all [Letter] objects in a sentence.
*/
2023-06-06 12:54:17 +03:00
fun getAllLetters ( ) : Array < Letter > {
var allLetters = arrayOf < Letter > ( )
this . sentenceArray . first . forEach { allLetters += it . letters }
return allLetters
}
2023-06-05 19:05:22 +03:00
override fun toString ( ) : String {
var sentence = arrayOf < String > ( )
2023-06-07 15:38:48 +03:00
this . sentenceArray . first . indices . forEach { sentence += this . sentenceArray . first [ it ] . toString ( ) + this . sentenceArray . second [ it ] . toString ( ) }
2023-06-05 19:05:22 +03:00
return sentence . joinToString ( " " )
2023-06-05 17:11:49 +03:00
}
2023-06-05 16:37:37 +03:00
}