百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

YAMLScript:让YAML文件更具魔力 yaml文件编辑器工具

liebian365 2024-10-31 15:19 21 浏览 0 评论


在当今的软件开发领域,配置文件扮演着至关重要的角色。它们允许开发者在不修改代码的情况下调整应用程序的行为。YAML(YAML Ain’t Markup Language)因其可读性和简洁性而成为了配置文件的热门选择。然而,传统的YAML文件存在一个局限性——它们是静态的。这意味着,一旦配置文件被加载,其内容就无法根据不同的环境或条件进行动态调整。但现在,有了YAMLScript,这一切都将改变。



YAMLScript是一个新的YAML加载器,它为普通的YAML配置文件赋予了“超能力”。通过使用YAMLScript作为YAML加载器,您可以动态地包含来自其他数据文件(如YAML、JSON、XML、CSV等)的数据,从网络或数据库中拉取数据。1您可以过滤、映射、合并、归约、生成、连接、插值和操作数据,实现您所需的任何功能。如果您曾希望YAML文件能做得更多,YAMLScript将满足您的需求。

YAMLScript的一个显著特点是它允许您在数据文件中任何位置轻松混入逻辑。另一方面,如果您只需要一个稳定的YAML 1.2加载器(不包含任何代码评估魔法),那么YAMLScript也值得一试。所有有效的YAML 1.2核心模式文件也都是有效的YAMLScript文件!这意味着,您现有的任何YAML配置文件都可以使用。

下面是一个使用YAMLScript的YAML配置文件db-config.yaml的例子:

!yamlscript/v0
base = : load('./db-defaults.yaml')
# host: localhost
# port: 12345
# user: app
# password: secret

secret = : load('secret.yaml')
# dev: devsecret
# stage: stagesecret
# prod: prodsecret

data = :
  development :
    merge base :
      user : dev
      password : : secret.dev
  staging :
    merge base :
      host : staging-db.myapp.com
  production :
    merge base :
      host : prod-db.myapp.com
      user : prod
      password : : secret.prod

defn main(level='development') :[^2^][2]
  get : data level

从命令行运行:

$ ys --load db-config.yaml production
{
  "host" : "prod-db.myapp.com",
  "port" : 12345,
  "user" : "prod",
  "password" : "prodsecret"
}

默认情况下,YAMLScript输出JSON,但也可以通过运行以下命令输出YAML:

$ ys --load --yaml db-config.yaml
host: localhost
port: 12345
user: dev
password: devsecret

注意,第一次我们运行命令时,我们传入了production级别的键,并且它加载了我们的“生产”数据。第二次我们运行命令时,我们没有传入键,所以它加载了默认的“开发”数据。我们通过main(level='development')指定了默认值。

您可以在像Python这样的编程语言中将YAMLScript用作常规YAML加载器库:

Python

import yamlscript
ys = yamlscript.YAMLScript()
text = open("db-config.yaml").read()[^3^][3]
data = ys.load(text)

AI-generated code. Review and use carefully. More info on FAQ.

它像PyYAML一样加载YAML数据文件,但增加了这些好处:YAMLScript库具有相同的API,并且在任何编程语言中工作方式完全相同。YAMLScript使用最新的YAML 1.2规范,消除了人们经常对YAML的抱怨。4您可以通过在文件开头添加一个!yamlscript/v0标签,为您的YAML文件添加动态操作。

YAMLScript不仅是一个新的、完整的、功能齐全的、通用的、函数式和动态编程语言,其语法编码在YAML中。5YAMLScript可用于编写新的软件应用程序和库。6下面是一个名为hello.ys的YAMLScript程序的例子:

#!/usr/bin/env ys-0
defn main(name='world') :
  greet : name

defn greet(name) :
  say : "Hello, $name!"

您可以从命令行运行此程序:

$ ys hello.ys
Hello, world!

$ ys hello.ys Jack[^7^][7]
Hello, Jack!

YAMLScript可以将程序编译为本地二进制可执行文件。就像这样简单:

$ ys -b hello.ys
$ ./hello Jack
Hello, Jack!

YAMLScript语言拥有您期望的现代编程语言的所有特性,包括使用内置和第三方库、定义自己的命名空间和函数、所有标准数据类型和结构、数百个经过实战测试的标准库函数以及与常见动态语言相当的合理性能。

安装ys - YAMLScript命令行工具

ys命令行工具是开始使用YAMLScript的最简单方法。它目前在Linux和macOS上可用,支持Intel和ARM。8您可以通过在终端中运行以下命令临时尝试ys(在您的shell会话期间):

$ . <(curl -sSL yamlscript.org/try-ys)

这将在临时目录中安装ys,并将其添加到您当前shell会话的PATH环境变量中。或者,您可以通过以下命令安装最新版本:

$ curl -sSL yamlscript.org/install | bash[^9^][9]

确保~/.local/bin在您的PATH环境变量中。要在其他位置安装或安装特定版本,请将PREFIX和/或VERSION环境变量设置为所需的值:

$ curl -sSL yamlscript.org/install | PREFIX=/some/dir VERSION=0.1.xx bash

注意:默认的PREFIX是~/.local(如果您以root身份运行命令,则为/usr/local)。您也可以从源代码安装ys:

$ git clone https://github.com/yaml/yamlscript
$ cd yamlscript
$ make build
$ make install
$ export PATH=~/.local/bin:$PATH

注意:预构建的二进制文件目前在一些较旧的内核上失败。如果您在使用预构建的二进制文件时遇到问题,请尝试从源代码构建。安装过程的最小依赖项是git、make、curl和bash。10(Linux上还需要libz-dev包。)

通过运行以下命令测试您的新ys安装:

$ ys --help

或者:

$ ys --version
YAMLScript 0.1.42

安装YAMLScript库

YAMLScript可以作为YAML加载器库(模块)安装在几种编程语言中。到目前为止,这些语言包括Clojure、Java、Perl、Python、Raku、Rust和Ruby。还有更多的语言正在开发中,目标是将其推广到使用YAML的每一种语言。目前要安装YAMLScript库,您需要安装语言库和匹配版本的libyamlscript.so。11对于Python,您可以这样做:

$ pip install yamlscript

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: