bms_utils/lib.rs
1//! BMSのライブラリです。
2//!
3//! BMSファイルの読み書きが出来ます
4//!
5//! # 拡張子がbms,bme,bml,pmsのファイル
6//! ```
7//! // 読み込み
8//!
9//! let bms_str = r"
10//! #PLAYER 1
11//! #GENRE ジャンル
12//! #TITLE タイトル
13//! #ARTIST 制作者
14//! #BPM 180
15//! #PLAYLEVEL 12
16//! #RANK 3
17//!
18//! #SUBTITLE サブタイトル
19//! #SUBARTIST サブ制作者
20//! #STAGEFILE ステージ画像
21//! #BANNER バナー画像
22//! #BACKBMP タイトル文字画像
23//!
24//! #DIFFICULTY 4
25//! #TOTAL 400
26//! #LNOBJ ZZ
27//! #PREVIEW preview.wav
28//! #LNMODE 2
29//! ";
30//! // ランダム要素を確定していない状態のBMSを作成
31//! let rawbms = RawBms::parse(bms_str);
32//! // ランダム要素を確定させる
33//! // この時、疑似乱数生成器を渡す
34//! let bms = rawbms.make_bms(rng);
35//!
36//! // 書き込み
37//!
38//! // !!!開発中!!!
39//! ```
40//! # Bmsonファイル
41//! ```
42//! // 読み込み
43//!
44//! let bmson = Bmson::parse(&bmson_string).unwrap();
45//!
46//! // 書き込み
47//!
48//! // 改行が無く、小さい長さの文字列へ
49//! let bmson_string = bmson.to_string().unwrap();
50//!
51//! // 改行やインデントがなされ、読みやすい文字列へ
52//! let bmson_string = bmson.to_string_pretty().unwrap();
53//! ```
54
55/// 拡張子がbms,bme,bml,pmsのファイル
56///
57/// 参考URL
58/// * <https://hitkey.nekokan.dyndns.info/cmdsJP.htm>
59/// * <https://bemuse.ninja/project/docs/bms-extensions/>
60/// * <https://github.com/exch-bms2/beatoraja/wiki/楽曲製作者向け資料>
61/// * <https://docs.google.com/document/u/0/d/e/2PACX-1vTl8zOS3ukl5HpuNsBUlN8rn_ZaNdJSHb8a4se3Z3ap9Y6UJ1nB8LA3HnxWAk9kMTDp0j9orpg43-tl/pub>
62/// * <https://hitkey.nekokan.dyndns.info/bmse_help_full/beat.html>
63pub mod bms;
64pub use bms::Bms;
65pub use bms::RawBms;
66
67/// 拡張子がbmsonのファイル
68///
69/// 参考URL
70/// * <https://bmson-spec.readthedocs.io/en/master/doc/index.html>
71/// * <https://github.com/exch-bms2/beatoraja/wiki/楽曲製作者向け資料>
72pub mod bmson;
73pub use bmson::Bmson;