GNU General Public License v3.0

项目介绍

Inventitech/strans 是一个托管在 GitHub 上的开源项目,主要使用 Roff 编写,采用 GNU General Public License v3.0 许可证,目前获得 549 个 Star、17 次 Fork。

仓库全名
Inventitech/strans
开源许可证
GNU General Public License v3.0
Star 数
549
Fork 数
17
未关闭 Issue
3

README 摘要

strans ====== strans (string transform) is an intuitive string manipulation utility for the shell (primarily Unix, but should work™ cross-platform). Users do not need to know anything about programming. All they need to do is provide strans with a set of examples. strans will automagically learn transformation rules from these examples and apply them to the input given on STDIN. How to install ============== strans…

完整内容见 GitHub 原始 README 或本页 。

常见问题

strans 用什么语言开发?

主要使用 Roff 编写,采用 GNU General Public License v3.0 许可证,目前有 549 个 Star。

strans 可以免费商用吗?

仓库标注的许可证为 GNU General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 strans 的源码?

可以直接克隆仓库:git clone https://github.com/Inventitech/strans.git,默认分支为 master;安装与运行步骤见仓库 README。

strans 最近还在维护吗?

仓库最近一次更新为 2020年5月13日,当前有 3 个未关闭 Issue;Star 数为 549,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Performs string manipulation tasks by learning from the provided example(s), instead of having to program them out explicitly.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
589
价值分
334
活跃状态
活跃

语言占比

C#
Roff
Shell

Release

README

strans

Build Status LOC Github Releases Join the chat at https://gitter.im/inventitech/strans

strans (string transform) is an intuitive string manipulation utility for the shell (primarily Unix, but should work™ cross-platform). Users do not need to know anything about programming. All they need to do is provide strans with a set of examples. strans will automagically learn transformation rules from these examples and apply them to the input given on STDIN.

How to install

strans is distributed platform indepedently as a NuGet package, or (if you do not want to install dotnet) standalone as an AppImage for Linux and as a DMG for MacOs. Download the latest strans from releases.

Platform-independent global tool (requires dotnet)

strans is available as a global tool on NuGet. If you have dotnet installed, you can simply dotnet tool install -g strans to install it (or use dotnet tool update, uninstall etc.).

Linux

Our AppImage should run on practically any recent linux Desktop distribution.

After downloading, simply do

chmod +x strans-linux.AppImage ./strans-linux.AppImage

To install it system-wide as strans, just

sudo cp strans-linux.AppImage /usr/bin/strans

MacOs

After mounting the dmg and copying strans.app into /Applications, it might be necessary to

chmod +x /Applications/strans.app/Contents/MacOS/strans
/Applications/strans.app/Contents/MacOS/strans

to run strans.

How to use

# With before and after example
strans -b pattern-to-match -a desired-transformation

# With file that contains examples
strans -f file-with-examples

# Help page
strans --help

Examples

Strans in action

Example 1: Extract ending of files

Assume that

ls
Document.pdf  Document2.pdf Document.txt  Document.png

Now we want to get a unique list of all file endings present in the directory:

ls | strans -b Document.pdf -a pdf | sort -u

Note how nicely strans (here defined as an alias) integrates with other tools.

Of course, as StackOverflow will tell you, we could obtain the same result with

ls | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u 

But with strans we accomplished the same with much less brain work, without StackOverflow and Perl, but instead with pure joy!

Example 2: Convert full names to their initials

printf "Moritz Beller\nGeorgios Gousios" |
strans -b "First Last" -a "FL"

neatly outputs

MB
GG

However, when we add a third entry with a middle name, Andy Emil Zaidman, things start to break, as this does not appear in the initials:

MB
GG
AZ

We can fix this by providing strans with another example. We create a file called example-transformations

First Last => FL
Firstname Middlename Lastname => FML

and call

printf "Moritz Beller\nGeorgios Gousios\nAndy Emil Zaidman" |
strans --example-file example-transformations

And, voila, the output is

MB
GG
AEZ

Note how strans adds the second example and generates a global transformation rule that satisfies all examples given to it. Simply having the last FML example would not be enough because it would miss the case where only two names are available.

How to develop

You need dotnet to run strans.

git clone https://github.com/Inventitech/strans.git
cd strans
dotnet restore
dotnet publish -c Release

An alias (in your bashrc, …) can make strans integrate seamlessly in a Unix environment:

alias strans="dotnet path/to/strans.dll"

Background

strans uses program-by-example techniques from Microsoft PROSE to come up with the rules behind this string manipulation. PROSE allows the creation of extremely complex string transformations within a matter of a few seconds by just giving easy-to-write examples. In its essence, strans is only a light-weight wrapper around and direct application of Microsoft’s PROSE framework. strans provides the goodness of the now-removed PowerShell (!) command Convert-String.

评论

暂无评论