Skip to content

Commit

Permalink
Merge pull request #579 from YuukiToriyama/release/v0.2.2
Browse files Browse the repository at this point in the history
release/v0.2.2をmainブランチにマージ
  • Loading branch information
YuukiToriyama authored Jan 17, 2025
2 parents 1a37b5e + 259e8db commit 34e8fdb
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 6 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ members = [
resolver = "2"

[workspace.package]
version = "0.2.1"
version = "0.2.2"
edition = "2021"
description = "A library for processing addresses of Japan"
repository = "https://github.com/YuukiToriyama/japanese-address-parser"
Expand Down
2 changes: 2 additions & 0 deletions core/src/adapter/orthographical_variant_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ pub enum OrthographicalVariant {
,
,
,
,
}

impl OrthographicalVariant {
Expand Down Expand Up @@ -82,6 +83,7 @@ impl OrthographicalVariant {
冨 => &['冨', '富'],
諫 => &['諫', '諌'],
驒 => &['驒', '騨'],
鶯 => &['鶯', '鴬'],
}
}

Expand Down
32 changes: 29 additions & 3 deletions core/src/tokenizer/read_town.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,11 @@ impl Tokenizer<CityNameFound> {
})
.or_else(|| {
// ここまでで町名の検出に成功しない場合は、「大字」の省略の可能性を検討する
rest = format!("大字{}", rest);
find_town(&rest, &candidates)
find_town(&format!("大字{}", rest), &candidates)
})
.or_else(|| {
// ここまでで町名の検出に成功しない場合は、「字」の省略の可能性を検討する
find_town(&format!("字{}", rest), &candidates)
})
.ok_or_else(|| self.finish())?;
Ok((
Expand Down Expand Up @@ -60,7 +63,7 @@ fn find_town(input: &str, candidates: &Vec<String>) -> Option<(String, String)>
let adapter = OrthographicalVariantAdapter {
variant_list: vec![
,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,,
],
};
if let Some(result) = adapter.apply(input, candidate) {
Expand Down Expand Up @@ -167,6 +170,29 @@ mod tests {
assert_eq!(tokenizer.rest, "2780番地");
}

#[test]
fn read_town_字が省略されている場合() {
let tokenizer = Tokenizer {
tokens: vec![
Token::Prefecture("埼玉県".to_string()),
Token::City("南埼玉郡宮代町".to_string()),
],
rest: "東粂原111".to_string(),
_state: PhantomData::<CityNameFound>,
};
let result = tokenizer.read_town(vec![
"東姫宮一丁目".to_string(),
"字東".to_string(),
"字宮東".to_string(),
"大字東粂原".to_string(),
]);
assert!(result.is_ok());
let (town_name, tokenizer) = result.unwrap();
assert_eq!(town_name, "大字東粂原");
assert_eq!(tokenizer.tokens.len(), 3);
assert_eq!(tokenizer.rest, "111");
}

#[test]
fn read_town_失敗() {
let tokenizer = Tokenizer {
Expand Down
4 changes: 2 additions & 2 deletions tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ async fn 住居表示実施済みの住所において正式でない表記へ
}

#[tokio::test]
async fn 大字表記省略への対応テスト() {
run_data_driven_tests("./test_data/大字表記省略への対応.csv").await
async fn 字大字表記省略への対応テスト() {
run_data_driven_tests("./test_data/字・大字表記省略への対応.csv").await
}

#[tokio::test]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
address,prefecture,city,town,rest
# 「字」が省略されている場合
京都府与謝郡伊根町字日出651,京都府,与謝郡伊根町,字日出,651
京都府与謝郡伊根町日出651,京都府,与謝郡伊根町,字日出,651
京都府与謝郡与謝野町字岩滝1798番地1,京都府,与謝郡与謝野町,字岩滝,1798番地1
京都府与謝郡与謝野町岩滝1798番地1,京都府,与謝郡与謝野町,字岩滝,1798番地1
京都府舞鶴市字北吸1044番地,京都府,舞鶴市,字北吸,1044番地
京都府舞鶴市北吸1044番地,京都府,舞鶴市,字北吸,1044番地
# 「大字」が省略されている場合
東京都西多摩郡日の出町大字平井2780番地,東京都,西多摩郡日の出町,大字平井,2780番地
東京都西多摩郡日の出町平井2780番地,東京都,西多摩郡日の出町,大字平井,2780番地
埼玉県南埼玉郡宮代町大字東粂原110,埼玉県,南埼玉郡宮代町,大字東粂原,110
Expand Down
3 changes: 3 additions & 0 deletions tests/test_data/異字体旧字体への対応.csv
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,6 @@ address,prefecture,city,town,rest
# 「鰺」と「鯵」の表記ゆれへの対応
新潟県新潟市南区鯵潟423,新潟県,新潟市南区,鯵潟,423
新潟県新潟市南区鰺潟423,新潟県,新潟市南区,鯵潟,423
# 「鶯」と「鴬」の表記ゆれへの対応
山梨県笛吹市芦川町鶯宿466,山梨県,笛吹市,芦川町鶯宿,466
山梨県笛吹市芦川町鴬宿466,山梨県,笛吹市,芦川町鶯宿,466

0 comments on commit 34e8fdb

Please sign in to comment.