1 个不稳定版本

0.0.1 2021年5月23日

#36 in #iterate

AGPL-3.0

22KB
172

迭代文本

迭代文本和文件的辅助函数和结构体的库

Byte size of Iterate Text Open Issues Open Pull Requests Latest commits Build Status



要求

此仓库需要 Rust 语言/编译器从源代码构建

截至本 ReadMe 文件的最后更新,推荐安装 Rust 的方法是使用安装脚本...

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

快速开始

此仓库是一个 Rust 库,在项目 Cargo.toml 文件中将它定义为一个依赖项...

Cargo.toml (省略)

[dependencies]
iterate-text = "0.0.1"

有关定义依赖项的详细信息,请参阅 Rust -- 文档 -- 定义依赖项

然后通过 src/main.rs 中的 use 语句包含在源文件中...

src/main.rs (省略)

extern crate iterate_text;

use iterate_text::file::characters::IterateFileCharacters;
use iterate_text::file::lines::IterateFileLines;

use iterate_text::string::characters::IterateStringCharacters;
use iterate_text::string::lines::IterateStringLines;

使用方法

请查看此项目的 examples/ 目录以获取详细的用法示例。

src/main.rs

#!/usr/bin/env rust

use std::env;

extern crate iterate_text;
use iterate_text::file::lines::IterateFileLines;


fn main() {
    let args: Vec<String> = env::args().collect();

    let path = &args[1];
    let iter = IterateFileLines::new(path.into());

    let mut count = 0;
    for line in iter {
        count += 1;
        print!("{}: {}", count, line);
    }
}

API

类、方法、参数和自定义类型/数据结构的文档


文件::字符::IterateFileCharacters

从路径、缓冲区或描述符读取,直到遇到文件结束符EOF

示例

use iterate_text::file::characters::IterateFileCharacters;

let p = "tests/file/characters/file.txt";
let mut c = IterateFileCharacters::new(p);

assert_eq!(c.next(), Some('T'));
assert_eq!(c.next(), Some('h'));
assert_eq!(c.next(), Some('i'));
assert_eq!(c.next(), Some('s'));

文件::::IterateFileLines

从文件路径、缓冲区或描述符读取,直到遇到文件结束符EOF

use iterate_text::file::lines::IterateFileLines;

let p = "tests/file/lines/file.txt";
let mut l = IterateFileLines::new(p);

assert_eq!(l.next(), Some("First line\n".to_string()));
assert_eq!(l.next(), Some("Second line\n".to_string()));
assert_eq!(l.next(), Some("Third line\n".to_string()));
assert_eq!(l.next(), None);

字符串::字符::IterateStringCharacters

迭代字符串中的字符

示例

use iterate_text::string::characters::IterateStringCharacters;

let s = String::from("test!");
let mut c = IterateStringCharacters::new(s);

assert_eq!(c.next(), Some('t'));
assert_eq!(c.next(), Some('e'));
assert_eq!(c.next(), Some('s'));
assert_eq!(c.next(), Some('t'));
assert_eq!(c.next(), Some('!'));
assert_eq!(c.next(), None);

字符串::::IterateStringLines

迭代字符串中的行并包括换行分隔符

示例

use iterate_text::string::lines::IterateStringLines;

let s = String::from("This is\na \\n test string\n");
let mut l = IterateStringLines::new(s);

assert_eq!(l.next(), Some("This is\n".to_string()));
assert_eq!(l.next(), Some("a \\n test string\n".to_string()));
assert_eq!(l.next(), None);

注意事项

当前的 characters 迭代器使用 String.char_indices(),这可能会以意想不到的方式分割某些Unicode字符。

此仓库可能功能不完全且/或无法完全运行,欢迎提交添加功能或修复错误的Pull Requests。


贡献

为iterate-text和rust-utilities做出贡献的选项


分支

将此仓库分支到一个你有写权限的账户中,开始创建一个Fork

mkdir -p ~/git/hub/rust-utilities

cd ~/git/hub/rust-utilities/iterate-text

git remote add fork git@github.com:<NAME>/iterate-text.git
  • 确保所有测试通过
cargo test
  • 按名称运行任何示例
cargo run --example file-reader -- --file .github/README.md -c 10
  • 提交您的更改并将它们推送到您的分支以修复问题或添加功能...
cd ~/git/hub/rust-utilities/iterate-text


git commit -F- <<'EOF'
:bug: Fixes #42 Issue


**Edits**


- `<SCRIPT-NAME>` script, fixes some bug reported in issue
EOF


git push fork main

注意,可以使用 -u 选项将 fork 设置为默认远程,例如 git push -u fork main。然而,这也会将 fork 远程默认为从 origin 拉取!这意味着必须显式地从 origin 拉取更新,例如 git pull origin main

  • 然后在GitHub通过Web-UI提交Pull Request,URL语法是 https://github.com/<NAME>/<REPO>/pull/new/<BRANCH>

注意;为了降低您的Pull Request在接受前需要修改的可能性,请查阅dot-github仓库中的详细贡献指南。


赞助

感谢您考虑!

通过Liberapay,您可以定期sponsor__shields_io__liberapay进行赞助。

无论您是否能够从经济上支持iterate-text等rust-utilities维护的项目,请考虑与他人分享有用的项目,因为维护开源仓库的一个目标是为社区提供价值。


归属


许可证

Library of helper functions and structures for iterating over text and files
Copyright (C) 2021 S0AndS0

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, version 3 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

有关更多详细信息,请查阅AGPL-3.0许可证的完整版本。

无运行时依赖