# LinePutScript **Repository Path**: LorisYounger/LinePutScript ## Basic Information - **Project Name**: LinePutScript - **Description**: LinePutScript是一种数据交换格式定义行读取结构和描述其内容的标准语言 本库为github镜像, 如需PR请前往github - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://github.com/LorisYounger/LinePutScript - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-07 - **Last Updated**: 2025-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README LinePutScript === Lineput LinePutScript是一种数据交换格式定义行读取结构和描述其内容的标准语言 可以应用于 保存 设置,资源,模板文件 等各种场景 类似于XML或Json但是比XML和Json更易于使用(理论上) 本类库可以更轻松的创建,修改,保存LinePutScript 提供开源源代码 可以自行修改支持更多功能 ## 项目文件解释 ### LinePutScript 一个LPS基本操作类,是所有LPS的根引用 如需操作lps文件,请使用这个文件 *'LinePutScript.Core'* 为.net Core版本 ## 如何使用: ### 安装 1. 通过Parckage Manager LinePutScript ``` Install-Package LinePutScript ``` 2. 通过nuget.org [LinePutScript](https://www.nuget.org/packages/LinePutScript/) 3. 下载nuget包 [Nuget文件夹](https://github.com/LorisYounger/LinePutScript/tree/master/nuget) ## 关于LinePutScript语言 LinePutScript是一个最高4层*的数据储存语言 *最新1.4版本支持第四层,更多层次也可以使用套娃添加,但是较为繁琐 LineputScript由Line组成, Line由sub组成 sub为 `subname#subinfo` 这是一个基础的LineputScript文件 ``` line1name#line1info:|sub1name#sub1info:|sub2name#sub2info:|text line2name#line2info:|money#100:|goods#item1,item2,item3:| ``` 通过C# 读取信息如下 ```C# LpsDocument tmp = new LpsDocument("line1...item3:|"); tmp.First().ToString(); //line1name#line1info:|sub1name#sub1info:|sub2name#sub2info:|text tmp.First().First().ToString();//line1name#line1info:| tmp["line1name"]["sub1name"].Info; //sub1info tmp[0].Text;//text tmp[1][(gint)"money"];//100 tmp[1]["good"].GetInfos()[1];//item2 ``` ### 符号定义 #### \# `#`分隔名称`Name`和信息`Info`, ~~或者说分割键与值.~~ #### :| `:|`分隔 `Sub` 与 `Sub` 或 `Line` 与 `Sub` #### :\n| lps文件支持多行并插入换行, 例如 ``` 详细文档:| 这是一份文件: | 文件内容为空 ``` ``` 详细文档:| 这是一份文件\n 文件内容为空 ``` 上方两者表达效果相同 #### :\n: lps文件支持多行, 例如 ``` 详细文档:| 这是一份文件: : 文件内容为空 ``` ``` 详细文档:| 这是一份文件 文件内容为空 ``` 上方两者表达效果相同 ### 使用方法 #### 案例:储存游戏设置 ##### 读取LPS文件 ```c# //读取LPS文件 LpsDocument Save = new LpsDocument(File.ReadAllText("GAMEPATH\\save1.lps")); //或创建新LPS文件 Save = new LpsDocument(); ``` ##### 获取和修改数据 案例要求: * 储存金钱值为10000 * 添加类型电脑并储存电脑名字为 "我的电脑" * 读取金钱值并加上500 *方法1 (lps1.0) -- 早期版本lps 繁琐操作* ```C# Save.AddLine(new Line("money","10000"));//添加行 money 10000 Save.AddLine(new Line("computer",""));//添加行 compuer Save.FindLine("computer").Add(new Sub("name","我的电脑")); //在computer行下面添加子类name和信息我的电脑 int Money = Convert.ToInt32((Save.FindLine("money").info)); //获得money储存的值 Save.FindLine("money").info = (Money + 500).ToString();//储存 money+500 ``` *方法2 (lps1.1) -- 上上版本lps 半繁琐操作* ```c# Save.AddLine("money").InfoToInt = 10000; //添加行 money 10000 Save.FindorAddLine("computer").FindorAddLine("name").Info = "我的电脑";//查找行computer, 如果没找到,则创建一个新的. 在该computer行下查找或创建子类name,并修改其信息为 我的电脑 Save.FindorAddLine("money").InfoToInt += 500;//给money+500 ``` *方法3 (lps1.2) -- 上版本lps 半繁琐操作* ```c# Save.AddLine("money").InfoToInt = 10000; Save.FindorAddLine("computer").FindorAddLine("name").Info = "我的电脑"; Save["money"].InfoToInt += 500;//给money+500 ``` *方法4 (lps1.2+) -- 上版本lps后期 普通操作* ```c# Save.SetInt("money",10000);//设置 money 行 值(int)为10000 Save["computer"].SetString("name","我的电脑"); // 或这样 (对于string来说更方便) Save["computer"]["name"].Info = "我的电脑"; Save.SetInt("money",Save.GetInt("money")+500);//给money+500 ``` *方法5 (lps1.3) -- 最新版本lps 高级操作* ```c# Save[(gint)"money"] = 10000; //设置 money 行 值(int)为10000 Save["computer"][(gstr)"name"] = "我的电脑"; Save[(gint)"money"] += 500; ``` *方法6 (lps1.8) -- 最新版本lps 无需操作* ```C# //储存数据的类 public class SaveData{ [Line] public int money = 10000;//设置 money 值(int)为10000 public class Computer{ [Line] public string name = "电脑默认名字"; } [Line] public Computer computer = new Computer(){name = "我的电脑"}; } //读取游戏数据 SaveData data = LPSConvert.DeserializeObject(Save); data.money += 500; //储存游戏数据 Save = LPSConvert.SerializeObject(data); ``` ##### 储存LPS文件 ```c# //写入LPS源文件 File.WriteAllText("GAMEPATH\\save1.lps",Save.ToString()); ``` ##### 储存的LPS文件样式如下 ```lps money#10500:| computer:|name#我的电脑:| ``` ### 其他 更多用法及参数参见对象管理器