跳过正文
  1. Lumesh 文档/
  2. 内置模块函数/

Lumesh Into 模块

1612 字·4 分钟
目录

Into 模块提供了全面的数据类型转换功能,支持在不同数据类型之间进行转换,包括基础类型转换、时间解析、数据序列化和第三方命令输出解析等。所有转换函数都提供详细的错误处理和类型验证。

功能概览
#

功能类别主要函数用途
基础类型转换str, int, float, boolean, filesize基本数据类型转换
时间转换time字符串到日期时间转换
表格转换table命令输出到表格转换
序列化toml, json, csv数据序列化为不同格式
语法高亮highlightedANSI语法高亮

基础类型转换函数
#

str <value> - 将表达式格式化为字符串

  • 参数value (必需): Any - 要转换的值
  • 返回String - 格式化后的字符串表示
  • 示例Into.str(123) 返回 "123"

int <value> - 将浮点数或字符串转换为整数

  • 参数value (必需): Float|String - 要转换的值
  • 返回Integer - 转换后的整数
  • 错误:无法转换时抛出错误
  • 示例
    • Into.int("123") 返回 123
    • Into.int(3.14) 返回 3

float <value> - 将整数或字符串转换为浮点数

  • 参数value (必需): Integer|String - 要转换的值
  • 返回Float - 转换后的浮点数
  • 错误:无法转换时抛出错误
  • 示例
    • Into.float("3.14") 返回 3.14
    • Into.float(123) 返回 123.0

boolean <value> - 将值转换为布尔值

  • 参数value (必需): Any - 要转换的值
  • 返回Boolean - 转换后的布尔值
  • 逻辑:使用 Lumesh 的真值判断规则

filesize <size_str> - 解析文件大小字符串为字节数

  • 参数size_str (必需): String - 文件大小字符串(如 "1KB", "2MB", "3GB")
  • 返回Integer - 对应的字节数
  • 支持单位:B, KB, MB, GB, TB, PB
  • 示例
    • Into.filesize("1KB") 返回 1024
    • Into.filesize("2.5MB") 返回 2621440

时间转换函数
#

time <datetime_str> [datetime_template] - 将字符串转换为日期时间

  • 参数
    • datetime_str (必需): String - 日期时间字符串
    • datetime_template (可选): String - 日期时间格式模板
  • 返回DateTime - 解析后的日期时间对象
  • 示例
    • Into.time("2023-12-25") - 解析 ISO 格式日期
    • Into.time("25/12/2023", "%d/%m/%Y") - 使用自定义格式

表格转换函数
#

table [headers|header...] <command_output> - 将第三方命令输出转换为表格

  • 参数
    • headers (可选): List[String]|String... - 表格头部定义
    • command_output (必需): String - 命令输出字符串
  • 返回List[Map] - 结构化的表格数据
  • 用途:解析 ps, ls, df 等命令的输出为结构化数据
  • 示例
    1ps aux | Into.table()
    2ls -l | Into.table("mode", "links", "owner", "group", "size", "date", "name")

序列化函数
#

toml <expr> - 将 Lumesh 表达式序列化为 TOML

  • 参数expr (必需): Any - 要序列化的表达式
  • 返回String - TOML 格式字符串
  • 支持类型:映射、列表、基础类型
  • 示例Into.toml({"name": "Alice", "age": 30})

json <expr> - 将 Lumesh 表达式序列化为 JSON

  • 参数expr (必需): Any - 要序列化的表达式
  • 返回String - JSON 格式字符串
  • 支持类型:映射、列表、基础类型
  • 示例Into.json([1, 2, 3]) 返回 "[1,2,3]"

csv <expr> - 将 Lumesh 表达式序列化为 CSV

  • 参数expr (必需): List[Map] - 要序列化的表格数据
  • 返回String - CSV 格式字符串
  • 要求:输入必须是映射列表(表格格式)
  • 示例
    1[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}] | Into.csv()

高亮
#

highlighted <script_string> - 对脚本字符串进行语法高亮

  • 参数script_string (必需): String - 要高亮的脚本字符串
  • 返回String - 带高亮的字符串
  • 示例
    1Into.highlighted "let x = 10; print x"
    2# 返回带有 ANSI 颜色代码的高亮字符串
    3
    4Fs.read "script.lm" | Into.highlighted() | print
    5# 高亮显示脚本文件内容

striped <string> - 移除所有 ANSI 转义码

  • 参数string (必需): String - 包含 ANSI 转义码的字符串
  • 返回String - 移除转义码后的纯文本

使用示例
#

基础类型转换
#

1# 数字转换
2Into.int("42")        # 返回 42
3Into.float("3.14")    # 返回 3.14
4Into.str(123)         # 返回 "123"
5
6# 布尔转换
7Into.boolean(1)       # 返回 true
8Into.boolean("")      # 返回 false

文件大小转换
#

1# 解析文件大小
2Into.filesize("1KB")    # 返回 1024
3Into.filesize("2.5MB")  # 返回 2621440
4Into.filesize("1GB")    # 返回 1073741824

数据序列化
#

 1# JSON 序列化
 2let data = {"users": [{"name": "Alice"}, {"name": "Bob"}]}
 3Into.json(data)
 4
 5# TOML 序列化
 6let config = {"database": {"host": "localhost", "port": 5432}}
 7Into.toml(config)
 8
 9# CSV 序列化
10Fs.ls("-l") | Into.csv()

命令输出解析
#

1# 解析系统命令输出
2ps aux | Into.table() | where(cpu > 5.0)
3df -h | Into.table() | select("filesystem", "used", "available")

管道操作示例
#

 1# 数据处理管道
 2"123.45" | Into.float() | Math.round() | Into.str()
 3# 结果: "123"
 4
 5# 文件大小处理
 6Fs.ls("-l") | List.map((f) -> Into.filesize(f.size)) | List.sum()
 7# 计算目录总大小
 8
 9# 配置文件生成
10{"server": {"port": 8080, "host": "0.0.0.0"}} | Into.toml() | Fs.write("config.toml")

Notes
#

Into 模块是 Lumesh 中重要的数据转换工具,提供了类型安全的转换机制。所有转换函数都包含详细的错误处理,确保转换失败时能提供清晰的错误信息。参数类型说明中,<> 表示必需参数,[] 表示可选参数。特别注意文件大小转换支持常见的存储单位,时间转换支持多种日期格式。

多数函数已经连接到对应类型,可以通过链式调用使用,如:

1"36".to_int()
2'2000K'.to_filesize()

相关文章