1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//! BMSのライブラリです。
//!
//! BMSファイルの読み書きが出来ます
//!
//! # 拡張子がbms,bme,bml,pmsのファイル
//! ```
//! # let rng = rand::rngs::StdRng::from_rng(&mut rand::rng());
//! # use rand::SeedableRng;
//! // 読み込み
//!
//! let bms_str = r"
//! #PLAYER 1
//! #GENRE ジャンル
//! #TITLE タイトル
//! #ARTIST 制作者
//! #BPM 180
//! #PLAYLEVEL 12
//! #RANK 3
//!
//! #SUBTITLE サブタイトル
//! #SUBARTIST サブ制作者
//! #STAGEFILE ステージ画像.bmp
//! #BANNER バナー画像.bmp
//! #BACKBMP タイトル文字画像.bmp
//!
//! #DIFFICULTY 4
//! #TOTAL 400
//! #LNOBJ ZZ
//! #PREVIEW preview.wav
//! #LNMODE 2
//! ";
//! // ランダム要素を確定していない状態のBMSを作成
//! let rawbms = bms_utils::RawBms::parse(bms_str);
//! // ランダム要素を確定させる
//! // この時、疑似乱数生成器を渡す
//! let bms = rawbms.make_bms(rng);
//!
//! // 書き込み
//!
//! // !!!開発中!!!
//! ```
//! # Bmsonファイル
//! ```
//! // 読み込み
//!
//! let bmson_string = r#"
//! {
//! "version": "1.0.0",
//! "info": {
//! "title": "タイトル",
//! "subtitle": "サブタイトル",
//! "artist": "制作者",
//! "subartists": [],
//! "genre": "ジャンル",
//! "mode_hint": "beat-7k",
//! "chart_name": "ANOTHER",
//! "level": 12,
//! "init_bpm": 200.0,
//! "judge_rank": 100.0,
//! "total": 400.0,
//! "back_image": "背景画像.bmp",
//! "eyecatch_image": "アイキャッチ画像.bmp",
//! "title_image": "タイトル画像.bmp",
//! "banner_image": "バナー画像.bmp",
//! "preview_music": "preview.wav",
//! "resolution": 240
//! },
//! "lines": [],
//! "bpm_events": [],
//! "stop_events": [],
//! "sound_channels": [],
//! "bga": {
//! "bga_header": [],
//! "bga_events": [],
//! "layer_events": [],
//! "poor_events": []
//! }
//! }
//! "#;
//! let bmson = bms_utils::Bmson::parse(bmson_string).unwrap();
//!
//! // 書き込み
//!
//! // 改行が無く、小さい長さの文字列へ
//! let bmson_string = bmson.to_string().unwrap();
//!
//! // 改行やインデントがなされ、読みやすい文字列へ
//! let bmson_string = bmson.to_string_pretty().unwrap();
//! ```
/// 拡張子がbms,bme,bml,pmsのファイル
///
/// 参考URL
/// * <https://hitkey.nekokan.dyndns.info/cmdsJP.htm>
/// * <https://bemuse.ninja/project/docs/bms-extensions/>
/// * <https://github.com/exch-bms2/beatoraja/wiki/楽曲製作者向け資料>
/// * <https://docs.google.com/document/u/0/d/e/2PACX-1vTl8zOS3ukl5HpuNsBUlN8rn_ZaNdJSHb8a4se3Z3ap9Y6UJ1nB8LA3HnxWAk9kMTDp0j9orpg43-tl/pub>
/// * <https://hitkey.nekokan.dyndns.info/bmse_help_full/beat.html>
pub use Bms;
pub use RawBms;
/// 拡張子がbmsonのファイル
///
/// 参考URL
/// * <https://bmson-spec.readthedocs.io/en/master/doc/index.html>
/// * <https://github.com/exch-bms2/beatoraja/wiki/楽曲製作者向け資料>
pub use Bmson;