建立字体开发系统。

hellbox的Python项目详细描述


https://travis-ci.org/hellboxpy/hellbox.svg?branch=master

Hellbox是一个模块化的、与编辑器无关的构建系统,专为字体开发而设计。Hellbox类似于一些“基于流的编程”环境,由一个由链接的Blackbox组件组成的系统组成。

hellbox正处于开发的早期阶段。本文档与其说是当前实现的文档,不如说是一个路线图。在v1.0之前,不需要通知就可以更改api。

目标

  • 一致性hellbox任务不接受设计参数,支持一致的任务输出
  • 1模块应该是可伸缩的和可组合的,同时保持定制工作流的灵活性。
  • isolationhellbox任务和包被版本锁定,并与其他项目和python安装隔离

概述

hellbox旨在为定义构建管道提供环境和框架。

hellbox任务由“chutes”模块组成,这些模块对一个或多个文件执行单个操作。滑槽使用>>运算符连接在一起,将一个滑槽的输出链接到下一个滑槽的输入。

fromhellboximportHellboxfromhellbox_generate_otfimportGenerateOtfwithHellbox("build")astask:task.describe("Builds .otf files from .ufo source")task.read("*.ufo")>>GenerateOtf()>>task.write("./otf")

使用上述配置,运行hell run build将从所有ufo源生成otf文件,并将它们写入otf目录。

安装

第一个install hell,用于管理hellbox项目的cli。然后在项目内部运行^ {tT4}$(或者在现有的HELBOX启用项目内^ {TT5}$)。

这将使用pipenv使用python 3建立一个新的虚拟环境,创建用于定义任务的Hellfile.py,并安装hellbox库本身。

滑槽

有两种定义HELBOX滑槽的方法,取决于所需的配置的复杂性和数量。

定义自己滑槽的基本设置要求您创建一个新的Chute子类。必须定义一个方法run,该方法接受一个files参数(数组)并返回一个新的修改文件数组。除了run,您还可以在新类上定义您喜欢的任何其他方法。

fromhellbox.chuteimportChuteclassFilterFilesByExt(Chute):def__init__(self,*extensions):self.extensions=extensionsdefrun(self,files):return[fforfinfilesiff.extensioninself.extensions]

然后,您可以在hellfile中使用降落伞:

withHellbox("backup")astask:task.read("build/*")>>FilterFilesByExt("otf","txt")>>task.write("backup")

如果你的降落伞在初始化时不需要参数,你可能更喜欢用函数而不是类来定义它。使用@Chute.createfunction decorator可以使函数定义像降落伞的子类一样:

fromhellbox.chuteimportChute@Chute.createdefGenerateWoff2(files):# do something to files...returnfileswithHellbox("webfonts")astask:task.read("build/*.ttf")>>GenerateWoff2()>>task.write("webfonts")

cli

hellbox附带了一个命令行工具hell,它在pipenv上提供了一个薄层。强烈建议使用cli,因为它使隔离工作变得非常简单。

开发

使用make安装开发依赖项。使用make test运行测试。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过socket发送一个可序列化的类   java获取Eclipse RCP中活动插件的列表   [和]之间的java拆分   datetime Java:使用时间单位将秒转换为天、小时、分钟和秒   java处理这个问题的正确设计是什么?   java有没有一种方法可以使用静态代码分析来确定某一类型的所有字段是否都有注释?   复杂事件处理Esper部署错误:静态方法的返回类型无效,应为Java类   maven如何在ApacheBeamJavaSDK中使用GCS中的自定义JDBCJAR文件   Ubuntu中的eclipse Java编译器错误   Java Point2D。距离与毕达哥拉斯定理不同?   java如何在rest服务中读取json数组或json对象?   解析Java,按冒号拆分输入文件   java Android Studio应用程序成功构建,但未运行   Java中的Stanford POS标记器   java有没有办法禁用OpenGTS中的图钉?   java为什么ZoneDateTime类不实现临时调整器接口   java使用Mockito/PowerMockito来模拟超类的公共方法   JavaESPER规则语言:使用计时器进行规则更新