From bf0d20dde816f2a8b7c3b5052b8958f1fc8c9f53 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Wed, 23 Apr 2025 11:19:56 +0200 Subject: [PATCH] lib/_data_ingestion: remove invalid use of `findAllElements` --- lib/_data_ingestion/jmdict/parser.dart | 6 +- lib/_data_ingestion/kanjidic/parser.dart | 117 +++++++++++++---------- 2 files changed, 68 insertions(+), 55 deletions(-) diff --git a/lib/_data_ingestion/jmdict/parser.dart b/lib/_data_ingestion/jmdict/parser.dart index 6d47884..49b385a 100644 --- a/lib/_data_ingestion/jmdict/parser.dart +++ b/lib/_data_ingestion/jmdict/parser.dart @@ -143,7 +143,7 @@ List transformXML(XmlElement root) { final List readingEls = []; final List senses = []; - for (final k_ele in entry.findAllElements('k_ele')) { + for (final k_ele in entry.findElements('k_ele')) { final ke_pri = getPriorityValues(k_ele, 'ke'); kanjiEls.add( KanjiElement( @@ -161,7 +161,7 @@ List transformXML(XmlElement root) { ); } - for (final r_ele in entry.findAllElements('r_ele')) { + for (final r_ele in entry.findElements('r_ele')) { final re_pri = getPriorityValues(r_ele, 're'); readingEls.add( ReadingElement( @@ -182,7 +182,7 @@ List transformXML(XmlElement root) { } int senseNum = 0; - for (final sense in entry.findAllElements('sense')) { + for (final sense in entry.findElements('sense')) { senseId++; senseNum++; senses.add( diff --git a/lib/_data_ingestion/kanjidic/parser.dart b/lib/_data_ingestion/kanjidic/parser.dart index 90d09cc..2fe5b19 100644 --- a/lib/_data_ingestion/kanjidic/parser.dart +++ b/lib/_data_ingestion/kanjidic/parser.dart @@ -15,6 +15,10 @@ List transformXML(XmlElement root) { final radical = c.findElements('radical').firstOrNull; final misc = c.findElements('misc').first; final dic_number = c.findElements('dic_number').firstOrNull; + final query_code = c.findElements('query_code').first; + final reading_meaning = c.findElements('reading_meaning').firstOrNull; + + // TODO: Group readings and meanings by their rmgroup parent node. result.add( Character( @@ -55,13 +59,13 @@ List transformXML(XmlElement root) { ) .toList() ?? [], - strokeMiscounts: c - .findAllElements('stroke_count') + strokeMiscounts: misc + .findElements('stroke_count') .skip(1) .map((e) => int.parse(e.innerText)) .toList(), - variants: c - .findAllElements('variant') + variants: misc + .findElements('variant') .map( (e) => Variant( kanji: kanji, @@ -95,8 +99,8 @@ List transformXML(XmlElement root) { ) .toList() ?? [], - querycodes: c - .findAllElements('q_code') + querycodes: query_code + .findElements('q_code') .map( (e) => QueryCode( kanji: kanji, @@ -106,52 +110,61 @@ List transformXML(XmlElement root) { ), ) .toList(), - readings: c - .findAllElements('reading') - .where( - (e) => !['ja_on', 'ja_kun'].contains(e.getAttribute('r_type')), - ) - .map( - (e) => Reading( - kanji: kanji, - type: e.getAttribute('r_type')!, - reading: e.innerText, - ), - ) - .toList(), - kunyomi: c - .findAllElements('reading') - .where((e) => e.getAttribute('r_type') == 'ja_kun') - .map( - (e) => Kunyomi( - kanji: kanji, - yomi: e.innerText, - isJouyou: e.getAttribute('r_status') == 'jy', - ), - ) - .toList(), - onyomi: c - .findAllElements('reading') - .where((e) => e.getAttribute('r_type') == 'ja_on') - .map( - (e) => Onyomi( - kanji: kanji, - yomi: e.innerText, - isJouyou: e.getAttribute('r_status') == 'jy', - type: e.getAttribute('on_type')), - ) - .toList(), - meanings: c - .findAllElements('meaning') - .map( - (e) => Meaning( - kanji: kanji, - language: e.getAttribute('m_lang') ?? 'eng', - meaning: e.innerText, - ), - ) - .toList(), - nanori: c.findAllElements('nanori').map((e) => e.innerText).toList(), + readings: reading_meaning + ?.findAllElements('reading') + .where( + (e) => + !['ja_on', 'ja_kun'].contains(e.getAttribute('r_type')), + ) + .map( + (e) => Reading( + kanji: kanji, + type: e.getAttribute('r_type')!, + reading: e.innerText, + ), + ) + .toList() ?? + [], + kunyomi: reading_meaning + ?.findAllElements('reading') + .where((e) => e.getAttribute('r_type') == 'ja_kun') + .map( + (e) => Kunyomi( + kanji: kanji, + yomi: e.innerText, + isJouyou: e.getAttribute('r_status') == 'jy', + ), + ) + .toList() ?? + [], + onyomi: reading_meaning + ?.findAllElements('reading') + .where((e) => e.getAttribute('r_type') == 'ja_on') + .map( + (e) => Onyomi( + kanji: kanji, + yomi: e.innerText, + isJouyou: e.getAttribute('r_status') == 'jy', + type: e.getAttribute('on_type')), + ) + .toList() ?? + [], + meanings: reading_meaning + ?.findAllElements('meaning') + .map( + (e) => Meaning( + kanji: kanji, + language: e.getAttribute('m_lang') ?? 'eng', + meaning: e.innerText, + ), + ) + .toList() ?? + [], + nanori: reading_meaning + ?.findElements('nanori') + .map((e) => e.innerText) + .toList() ?? + [], ), ); }