Siv3D / OpenSiv3D

C++20 framework for creative coding 🎮🎨🎹 / Cross-platform support (Windows, macOS, Linux, and the Web)
https://siv3d.github.io/
MIT License
1.02k stars 140 forks source link

INI クラスにおける読み書きの不具合 #1267

Open yama-can opened 1 month ago

yama-can commented 1 month ago

予期しない動作の内容 | Describe the unexpected behavior

  1. 読み込みにおいてダブルクオーテーションを認識しない、トリプルクオーテーションを認識しない、バックラッシュを認識しない
  2. 書き込みにおいて同クラスにおいて読み込めないファイルを生成し、複数行のデータは = を区切り、エスケープ処理が行われない

再現方法 | To Reproduce 1番目の問題:以下のファイルを読み込む

[config]
# 問題なし
ok = OK
# 問題あり
data = "DATA"
desc = """desc"""
lines = lines/
lines/
lines

2番目の問題:ファイル 1 を読み込んだうえで write する。

発生環境

備考 | Additional context

yama-can commented 1 month ago

文化祭が終わり次第手を付けようとおもいます。

Reputeless commented 1 month ago

ご提案ありがとうございます。 INI ファイルに標準的な仕様はないので、それら拡張機能の非サポートは不具合ではありません。 一方で、そうした拡張機能のサポートがあってもよいと思います。

どの拡張機能を有効にするかをユーザが選べるオプションを用意して実装すると良さそうです。 まずは拡張機能を分類し、それらの bool をまとめた struct INIOptionINI クラスに渡すようにするとよいでしょう。

Siv3D v0.8 のほうで進めてください。https://github.com/Siv3D/siv8/blob/main/Siv3D/src/Siv3D/INI/SivINI.cpp 上記実装をコピーし、INI2 のような名前で Main.cpp に実装すると進めやすいと思います。