diff --git a/refilc/lib/helpers/dirtywords_helper.dart b/refilc/lib/helpers/dirtywords_helper.dart new file mode 100644 index 0000000..5b785fe --- /dev/null +++ b/refilc/lib/helpers/dirtywords_helper.dart @@ -0,0 +1,35 @@ +import 'dart:math'; +import 'package:flutter/services.dart' show rootBundle; +import 'package:xml/xml.dart'; + +Future dirtyString() async { + final file = await rootBundle.loadString('assets/other/dirtywords.xml'); + final document = XmlDocument.parse(file); + + // Extract words and their types + final words = document.findAllElements('Word').map((element) { + return { + 'word': element.text.trim(), + 'type': element.getAttribute('type')!, + }; + }).toList(); + + // Separate words by type + final mWords = words.where((word) => word['type'] == 'm').toList(); + final fWords = words.where((word) => word['type'] == 'f').toList(); + + // Shuffle words to randomize selection + mWords.shuffle(); + fWords.shuffle(); + + // Generate randomized string with alternating types + String randomizedString = ''; + final minWordsLength = min(mWords.length, fWords.length); + var mNumber = Random().nextInt(193); + var secondMnumber = Random().nextInt(193); //Amount of occurences of the types + var fNumber = Random().nextInt(169); + randomizedString = + '${mWords[mNumber]['word']}, ${mWords[secondMnumber]['word']!.toLowerCase()} ${fWords[fNumber]['word']!.toLowerCase()}!'; + + return randomizedString; +}