Fix a few lints

This commit is contained in:
2026-02-28 18:25:37 +09:00
parent 8fb6baa03f
commit 7731a4a599
17 changed files with 59 additions and 60 deletions

View File

@@ -10,14 +10,15 @@ List<int?> getPriorityValues(XmlElement e, String prefix) {
final txt = pri.innerText;
if (txt.startsWith('news')) {
news = int.parse(txt.substring(4));
} else if (txt.startsWith('ichi'))
} else if (txt.startsWith('ichi')) {
ichi = int.parse(txt.substring(4));
else if (txt.startsWith('spec'))
} else if (txt.startsWith('spec')) {
spec = int.parse(txt.substring(4));
else if (txt.startsWith('gai'))
} else if (txt.startsWith('gai')) {
gai = int.parse(txt.substring(3));
else if (txt.startsWith('nf'))
} else if (txt.startsWith('nf')) {
nf = int.parse(txt.substring(2));
}
}
return [news, ichi, spec, gai, nf];
}
@@ -79,16 +80,16 @@ List<Entry> parseJMDictData(XmlElement root) {
final List<ReadingElement> readingEls = [];
final List<Sense> senses = [];
for (final (kanjiNum, k_ele) in entry.findElements('k_ele').indexed) {
final kePri = getPriorityValues(k_ele, 'ke');
for (final (kanjiNum, kEle) in entry.findElements('k_ele').indexed) {
final kePri = getPriorityValues(kEle, 'ke');
kanjiEls.add(
KanjiElement(
orderNum: kanjiNum + 1,
info: k_ele
info: kEle
.findElements('ke_inf')
.map((e) => e.innerText.substring(1, e.innerText.length - 1))
.toList(),
reading: k_ele.findElements('keb').first.innerText,
reading: kEle.findElements('keb').first.innerText,
news: kePri[0],
ichi: kePri[1],
spec: kePri[2],
@@ -98,24 +99,24 @@ List<Entry> parseJMDictData(XmlElement root) {
);
}
for (final (orderNum, r_ele) in entry.findElements('r_ele').indexed) {
final rePri = getPriorityValues(r_ele, 're');
final readingDoesNotMatchKanji = r_ele
for (final (orderNum, rEle) in entry.findElements('r_ele').indexed) {
final rePri = getPriorityValues(rEle, 're');
final readingDoesNotMatchKanji = rEle
.findElements('re_nokanji')
.isNotEmpty;
readingEls.add(
ReadingElement(
orderNum: orderNum + 1,
readingDoesNotMatchKanji: readingDoesNotMatchKanji,
info: r_ele
info: rEle
.findElements('re_inf')
.map((e) => e.innerText.substring(1, e.innerText.length - 1))
.toList(),
restrictions: r_ele
restrictions: rEle
.findElements('re_restr')
.map((e) => e.innerText)
.toList(),
reading: r_ele.findElements('reb').first.innerText,
reading: rEle.findElements('reb').first.innerText,
news: rePri[0],
ichi: rePri[1],
spec: rePri[2],

View File

@@ -1,4 +1,4 @@
const Map<(String?, String), int?> TANOS_JLPT_OVERRIDES = {
const Map<(String?, String), int?> tanosJLPTOverrides = {
// N5:
(null, 'あなた'): 1223615,
(null, 'あの'): 1000430,

View File

@@ -76,7 +76,7 @@ Future<int?> findEntry(
if ((entryIds.isEmpty || entryIds.length > 1) && useOverrides) {
print('No entry found, trying to fetch from overrides');
final overrideEntries = word.readings
.map((reading) => TANOS_JLPT_OVERRIDES[(word.kanji, reading)])
.map((reading) => tanosJLPTOverrides[(word.kanji, reading)])
.whereType<int>()
.toSet();
@@ -86,7 +86,7 @@ Future<int?> findEntry(
);
} else if (overrideEntries.isEmpty &&
!word.readings.any(
(reading) => TANOS_JLPT_OVERRIDES.containsKey((word.kanji, reading)),
(reading) => tanosJLPTOverrides.containsKey((word.kanji, reading)),
)) {
throw Exception(
'No override entry found for ${word.toString()}: $entryIds',

View File

@@ -1,6 +1,5 @@
/// Jouyou kanji sorted primarily by grades and secondarily by strokes.
const Map<int, Map<int, List<String>>>
JOUYOU_KANJI_BY_GRADE_AND_STROKE_COUNT = {
const Map<int, Map<int, List<String>>> jouyouKanjiByGradeAndStrokeCount = {
1: {
1: [''],
2: ['', '', '', '', '', '', '', ''],
@@ -1861,8 +1860,8 @@ JOUYOU_KANJI_BY_GRADE_AND_STROKE_COUNT = {
},
};
final Map<int, List<String>> JOUYOU_KANJI_BY_GRADES =
JOUYOU_KANJI_BY_GRADE_AND_STROKE_COUNT.entries
final Map<int, List<String>> jouyouKanjiByGrades =
jouyouKanjiByGradeAndStrokeCount.entries
.expand((entry) => entry.value.entries)
.map((entry) => MapEntry(entry.key, entry.value))
.fold<Map<int, List<String>>>(

View File

@@ -1,4 +1,4 @@
const Map<int, List<String>> RADICALS = {
const Map<int, List<String>> radicals = {
1: ['', '', '', '', '', ''],
2: [
'',

View File

@@ -54,7 +54,7 @@ List<WordSearchResult> regroupWordSearchResults({
.where((element) => element['entryId'] == scoredEntryId.entryId)
.toList();
final GroupedWordResult entryReadingElementsGrouped = _regroup_words(
final GroupedWordResult entryReadingElementsGrouped = _regroupWords(
entryId: scoredEntryId.entryId,
readingElements: entryReadingElements,
kanjiElements: entryKanjiElements,
@@ -64,7 +64,7 @@ List<WordSearchResult> regroupWordSearchResults({
kanjiElementInfos: linearWordQueryData.kanjiElementInfos,
);
final List<WordSearchSense> entrySensesGrouped = _regroup_senses(
final List<WordSearchSense> entrySensesGrouped = _regroupSenses(
senses: entrySenses,
senseAntonyms: linearWordQueryData.senseAntonyms,
senseDialects: linearWordQueryData.senseDialects,
@@ -112,7 +112,7 @@ class GroupedWordResult {
});
}
GroupedWordResult _regroup_words({
GroupedWordResult _regroupWords({
required int entryId,
required List<Map<String, Object?>> kanjiElements,
required List<Map<String, Object?>> kanjiElementInfos,
@@ -195,7 +195,7 @@ GroupedWordResult _regroup_words({
);
}
List<WordSearchSense> _regroup_senses({
List<WordSearchSense> _regroupSenses({
required List<Map<String, Object?>> senses,
required List<Map<String, Object?>> senseAntonyms,
required List<Map<String, Object?>> senseDialects,

View File

@@ -1,7 +1,7 @@
import 'package:jadb/util/lemmatizer/lemmatizer.dart';
import 'package:jadb/util/lemmatizer/rules/godan-verbs.dart';
import 'package:jadb/util/lemmatizer/rules/i-adjectives.dart';
import 'package:jadb/util/lemmatizer/rules/ichidan-verbs.dart';
import 'package:jadb/util/lemmatizer/rules/godan_verbs.dart';
import 'package:jadb/util/lemmatizer/rules/i_adjectives.dart';
import 'package:jadb/util/lemmatizer/rules/ichidan_verbs.dart';
List<LemmatizationRule> lemmatizationRules = [
...ichidanVerbLemmatizationRules,

View File

@@ -1,9 +1,9 @@
// Source: https://github.com/Kimtaro/ve/blob/master/lib/providers/japanese_transliterators.rb
const hiragana_syllabic_n = '';
const hiragana_small_tsu = '';
const hiraganaSyllabicN = '';
const hiraganaSmallTsu = '';
const Map<String, String> hiragana_to_latin = {
const Map<String, String> hiraganaToLatin = {
'': 'a',
'': 'i',
'': 'u',
@@ -209,7 +209,7 @@ const Map<String, String> hiragana_to_latin = {
'': 'yori',
};
const Map<String, String> latin_to_hiragana = {
const Map<String, String> latinToHiragana = {
'a': '',
'i': '',
'u': '',
@@ -481,9 +481,9 @@ const Map<String, String> latin_to_hiragana = {
'#~': '',
};
bool _smallTsu(String forConversion) => forConversion == hiragana_small_tsu;
bool _smallTsu(String forConversion) => forConversion == hiraganaSmallTsu;
bool _nFollowedByYuYeYo(String forConversion, String kana) =>
forConversion == hiragana_syllabic_n &&
forConversion == hiraganaSyllabicN &&
kana.length > 1 &&
'やゆよ'.contains(kana.substring(1, 2));
@@ -505,7 +505,7 @@ String transliterateHiraganaToLatin(String hiragana) {
} else if (_nFollowedByYuYeYo(forConversion, kana)) {
mora = "n'";
}
mora ??= hiragana_to_latin[forConversion];
mora ??= hiraganaToLatin[forConversion];
if (mora != null) {
if (geminate) {
@@ -527,7 +527,7 @@ String transliterateHiraganaToLatin(String hiragana) {
bool _doubleNFollowedByAIUEO(String forConversion) =>
RegExp(r'^nn[aiueo]$').hasMatch(forConversion);
bool _hasTableMatch(String forConversion) =>
latin_to_hiragana[forConversion] != null;
latinToHiragana[forConversion] != null;
bool _hasDoubleConsonant(String forConversion, int length) =>
forConversion == 'tch' ||
(length == 2 &&
@@ -549,12 +549,12 @@ String transliterateLatinToHiragana(String latin) {
final String forConversion = romaji.substring(0, length);
if (_doubleNFollowedByAIUEO(forConversion)) {
mora = hiragana_syllabic_n;
mora = hiraganaSyllabicN;
forRemoval = 1;
} else if (_hasTableMatch(forConversion)) {
mora = latin_to_hiragana[forConversion];
mora = latinToHiragana[forConversion];
} else if (_hasDoubleConsonant(forConversion, length)) {
mora = hiragana_small_tsu;
mora = hiraganaSmallTsu;
forRemoval = 1;
}

View File

@@ -4,6 +4,6 @@ import 'package:test/test.dart';
void main() {
test('Assert 2136 kanji in jouyou set', () {
expect(JOUYOU_KANJI_BY_GRADES.values.flattenedToSet.length, 2136);
expect(jouyouKanjiByGrades.values.flattenedToSet.length, 2136);
});
}

View File

@@ -1,21 +1,20 @@
import 'dart:ffi';
import 'dart:io';
import 'package:jadb/models/create_empty_db.dart';
import 'package:jadb/search.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
// import 'package:sqlite3/open.dart';
import 'package:test/test.dart';
Future<DatabaseExecutor> setup_inmemory_database() async {
final dbConnection = await createDatabaseFactoryFfi().openDatabase(':memory:');
Future<DatabaseExecutor> setupInMemoryDatabase() async {
final dbConnection = await createDatabaseFactoryFfi().openDatabase(
':memory:',
);
return dbConnection;
}
void main() {
test('Create empty db', () async {
final db = await setup_inmemory_database();
final db = await setupInMemoryDatabase();
await createEmptyDb(db);

View File

@@ -5,7 +5,7 @@ import 'setup_database_connection.dart';
void main() {
test('Filter kanji', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.filterKanji([
'a',

View File

@@ -6,16 +6,16 @@ import 'setup_database_connection.dart';
void main() {
test('Search a kanji', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbSearchKanji('');
expect(result, isNotNull);
});
group('Search all jouyou kanji', () {
JOUYOU_KANJI_BY_GRADES.forEach((grade, characters) {
jouyouKanjiByGrades.forEach((grade, characters) {
test('Search all kanji in grade $grade', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
for (final character in characters) {
final result = await connection.jadbSearchKanji(character);

View File

@@ -3,7 +3,7 @@ import 'dart:io';
import 'package:jadb/_data_ingestion/open_local_db.dart';
import 'package:sqflite_common/sqlite_api.dart';
Future<Database> setup_database_connection() async {
Future<Database> setupDatabaseConnection() async {
final libSqlitePath = Platform.environment['LIBSQLITE_PATH'];
final jadbPath = Platform.environment['JADB_PATH'];

View File

@@ -5,43 +5,43 @@ import 'setup_database_connection.dart';
void main() {
test('Search a word - english - auto', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbSearchWord('kana');
expect(result, isNotNull);
});
test('Get word search count - english - auto', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbSearchWordCount('kana');
expect(result, isNotNull);
});
test('Search a word - japanese kana - auto', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbSearchWord('かな');
expect(result, isNotNull);
});
test('Get word search count - japanese kana - auto', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbSearchWordCount('かな');
expect(result, isNotNull);
});
test('Search a word - japanese kanji - auto', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbSearchWord('仮名');
expect(result, isNotNull);
});
test('Get word search count - japanese kanji - auto', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbSearchWordCount('仮名');
expect(result, isNotNull);
});
test('Get a word by id', () async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
final result = await connection.jadbGetWordById(1577090);
expect(result, isNotNull);
});
@@ -49,7 +49,7 @@ void main() {
test(
'Serialize all words',
() async {
final connection = await setup_database_connection();
final connection = await setupDatabaseConnection();
// Test serializing all words
for (final letter in 'aiueoksthnmyrw'.split('')) {