From 5d7b7696d75fc036982461d9e248102ece0cfe59 Mon Sep 17 00:00:00 2001 From: h7x4abk3g Date: Mon, 22 Jun 2020 23:07:23 +0200 Subject: [PATCH] Fix example sentence symbols --- lib/src/exampleSearch.dart | 37 ++++++++++++++++++-------- lib/src/unofficial_jisho_api_base.dart | 2 +- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/lib/src/exampleSearch.dart b/lib/src/exampleSearch.dart index dacbd4b..b0b8a11 100644 --- a/lib/src/exampleSearch.dart +++ b/lib/src/exampleSearch.dart @@ -10,19 +10,37 @@ String uriForExampleSearch(String phrase) { return '${SCRAPE_BASE_URI}${Uri.encodeComponent(phrase)}%23sentences'; } -/* TODO: This is the wrong approach. - * Symbols such as 、「」。 are missing in mid sentence - * Maybe also JP fullwidth numbers? - */ +List getChildrenAndSymbols(Element ul) { + final ulText = ul.text; + final ulCharArray = ulText.split(''); + final ulChildren = ul.children; + var offsetPointer = 0; + List result = []; -String getEndSymbolsOfExampleSentence(Element ul) { - final endSymbols = RegExp(r'<\/li>([^<>]+)$'); - return endSymbols.firstMatch(ul.innerHtml).group(1); + for (var element in ulChildren) { + if (element.text != ulText.substring(offsetPointer, offsetPointer + element.text.length)){ + var symbols = ''; + while (element.text.substring(0,1) != ulCharArray[offsetPointer]) { + symbols += ulCharArray[offsetPointer]; + offsetPointer++; + } + final symbolElement = Element.html('' + symbols + ''); + result.add(symbolElement); + } + offsetPointer += element.text.length; + result.add(element); + } + if (offsetPointer + 1 != ulText.length){ + final symbols = ulText.substring(offsetPointer, ulText.length-1); + final symbolElement = Element.html('' + symbols + ''); + result.add(symbolElement); + } + return result; } ExampleResultData getKanjiAndKana(Element div) { final ul = div.querySelector('ul'); - final contents = ul.children; + final contents = getChildrenAndSymbols(ul); var kanji = ''; var kana = ''; @@ -60,9 +78,6 @@ ExampleResultData getKanjiAndKana(Element div) { } } } - final endSymbols = getEndSymbolsOfExampleSentence(ul).trim(); - kanji+= endSymbols; - kana += endSymbols; return ExampleResultData( kanji: kanji, diff --git a/lib/src/unofficial_jisho_api_base.dart b/lib/src/unofficial_jisho_api_base.dart index a964493..233af1f 100644 --- a/lib/src/unofficial_jisho_api_base.dart +++ b/lib/src/unofficial_jisho_api_base.dart @@ -1,4 +1,4 @@ -import 'package:unofficial_jisho_api/src/objects.dart'; +import './objects.dart'; import 'package:http/http.dart' as http; import 'dart:convert';