formatter- 通用输出格式 – 其他服务(Python教程)(参考资料)
formatter
– 通用输出格式化
自版本3.4以后不推荐使用:由于缺少使用,格式化程序模块已被弃用.
该模块支持两个接口定义,每个定义都有多个实现:formatter接口,以及格式化器接口所需的writer接口.
Formatter对象将格式化事件的抽象流转换为writer对象上的specificoutput事件。Formatters管理多个堆栈结构,以允许更改和恢复writer对象的各种属性;作家不能处理相对变化,也不能进行任何“改变”操作。可以通过formatterobjects控制的特定编写器属性是水平对齐,字体和左边距缩进。提供了Amechanism,它还支持向作者提供任意的,非独有的样式设置。附加界面有助于格式化不可逆的事件,例如段落分离.
Writer对象封装了设备接口。支持抽象设备,例如文件格式,以及物理设备。所提供的实现都与抽象设备一起使用。该界面提供了机制,用于设置格式化对象管理和将数据插入输出的属性.
格式化程序界面
创建格式化程序的接口取决于实例化的特定格式化程序类。下面描述的接口是所有格式化程序初始化后必须支持的必需接口.
一个数据元素在模块级别定义:
formatter.
AS_IS
- 可以在传递给下面描述的
push_font()
方法的字体规范中使用的值,或者作为任何其他的新值push_property()
方法。按AS_IS
值可以调用相应的pop_property()
方法,而无需跟踪属性是否被更改.
为formatter实例对象定义了以下属性:
formatter.
writer
- 格式化程序与之交互的作者实例
formatter.
end_paragraph
// (blanklines)- 关闭任何空白段落并在下一段之前插入至少blanklines.
formatter.
add_hor_rule
(*args, **kw)- 在输出中插入一个水平规则。如果当前段落中有数据,则插入硬分解,但逻辑段落不会被破坏。这些参数和关键字被传递给作者的
send_line_break()
method.
formatter.
add_flowing_data
(data)- 提供应该用折叠的空格格式化的数据。当执行空白崩溃时,认为来自前面和后续调用
add_flowing_data()
的空格也是如此。通过该方法传递的数据预期由输出设备进行自动换行。请注意,由于需要依靠设备和字体信息,任何包装仍然必须由编写者对象执行.
formatter.
add_literal_data
(data )- 提供应该传递给writer的数据不变。空格,包括换行符和制表符,在data.
formatter.
add_label_data
(format, counter)- 插入一个标签,该标签应放在当前左边距的左侧。这应该用于构建项目符号列表或编号列表。如果formatvalue是一个字符串,它被解释为counter的格式规范,它应该是一个整数。这种格式化的结果成为标签的价值;如果format不是一个字符串,它直接用作标签。标签值作为唯一参数传递给作者的
send_label_data()
方法。非字符串标签值的解释取决于相关的编者.格式规范是字符串,它与计数器值一起用于计算标签值。格式字符串中的每个字符都被复制到标签值,并识别一些字符以指示计数器值的变换。具体来说,人物
"1"
将对位格式化程序表示为阿拉伯数字,字符"A"
和"a"
分别表示大写和小写的计数器值的字母表示,并且"I"
和"i"
表示Romannumerals中的计数器值,大写和小写。请注意,字母和romant变换要求计数器值大于零.
formatter.
flush_softspace
()- 将之前调用
add_flowing_data()
缓冲的任何挂起空格发送到关联的编写器对象。这应该在任何直接操纵作者对象之前调用.
formatter.
push_alignment
(align )- 将新的对齐设置推到对齐堆栈上。如果不需要改变,这可能是
AS_IS
。如果对齐值从先前的设置改变,则作者的new_alignment()
用align值调用方法
formatter.
pop_alignment
()- 恢复前一个对齐方式
formatter.
push_font
((size, italic, bold, teletype))- 更改writer对象的部分或全部字体属性。属性未设置为
AS_IS
设置为传入的值,而其他值保持在其当前设置。作者的new_font()
方法被称为完全解析的字体规范.
formatter.
pop_font
()- 恢复以前的字体.
formatter.
push_margin
(margin)- 将左边距缩进的数量增加1,将逻辑标签margin与新缩进相关联。初始保证金水平为
0
。逻辑标签的变更值必须为真值;除了AS_IS
之外的错误值不足以改变边距.
formatter.
pop_margin
()- 恢复上一个边距.
formatter.
pop_style
(n=1)- Pop最后n样式规范传递给
push_style()
。代表修改后的堆栈的元组,包括AS_IS
值,传递给作者new_styles()
方法
formatter.
set_spacing
(spacing)- 设置作者的间距样式.
formatter.
assert_line_data
(flag=1 )- 通知格式化程序已将数据添加到当前段落外。当作者被直接操作时应该使用它。可选flag如果编写器操作在输出结束时产生硬换行,则参数可以设置为false
Formatter实现
该模块提供了格式化程序对象的两种实现。Mostapplications可以使用这些类中的一个而不进行修改或子类化.
- class
formatter.
NullFormatter
(writer=None ) - 一个什么都不做的格式化程序。如果省略writer,则创建
NullWriter
实例。没有作者的方法被NullFormatter
实例。如果实现编写器接口但不需要继承任何实现,则实现应继承自此类.
- class
formatter.
AbstractFormatter
(writer ) - 标准格式化程序。这种实现已经证明对许多作者有广泛的适用性,并且可以在大多数情况下直接使用。它已被用于实现功能齐全的万维网浏览器.
编写器接口
创建编写器的接口依赖于实例化的特定编写器类。下面描述的接口是编写者初始化后必须支持的必需接口。请注意,虽然大多数应用程序可以使用AbstractFormatter
类作为格式化程序,但编写器必须通常由应用程序提供.
writer.
flush
()- Flush any buffered输出或设备控制事件.
writer.
new_alignment
(align)- 设置对齐方式。align值可以是任何对象,但按照惯例是字符串或
None
,其中None
表示应该使用编写者的“首选”对齐方式。常规的align值是"left"
,"center"
,"right"
和"justify"
.
writer.
new_font
(font)- 设置字体样式。font的值是
None
,表示应该使用设备的默认字体,或者形式为(size,italic, bold, teletype)
。大小将是一个字符串,表示应该使用的大小offont;特定字符串及其解释必须由应用程序定义。italic, bold和teletypevalues是布尔值,指定应该使用哪些字体属性.
writer.
new_margin
(margin, level)- 将边距级别设置为整数level和逻辑标签至 margin解释逻辑标签是由作者自行决定的;唯一对逻辑标记值的限制是它不是// level.
writer.
new_spacing
(spacing)- 将间距样式设置为spacing.
writer.
new_styles
(styles)- 设置其他样式。styles值是任意值的元组;值
AS_IS
应该被忽略。styles根据应用程序和编写器实现的要求,元组可以解释为一组或一堆栈.
writer.
send_line_break
()- 打破当前行.
writer.
send_paragraph
(blankline)- 产生至少blankline空白行或相等的段落分隔。blankline值将是一个整数。请注意,在此callif之前,如果需要换行,则实现将接收对
send_line_break()
的调用;此方法不应包括结束段落的最后一行。它只负责段之间的垂直间距.
writer.
send_hor_rule
(*args, **kw)- 在输出设备上显示水平规则。这种方法的论据完全是应用程序和作者特定的,应该用care来解释。方法实现可以假设已经通过
send_line_break()
.
writer.
send_flowing_data
(data)- 输出了换行符,输出字符数据可以根据需要进行自动换行和重新流动。在这种方法的调用序列中,作者可以假设多个空白字符的跨度已经折叠为单个空格字符.
writer.
send_literal_data
(data)- 输出已格式化显示的字符数据。通常,这应该被解释为应该保留换行符指示的换行符,并且不应该引入新的换行符。数据可能包含嵌入的换行符和制表符,不像提供的数据
send_formatted_data()
interface
writer.
send_label_data
(data)- data如果可能的话,当前左边距的左边。data的价值不受限制;处理非字符串值完全取决于应用程序和编写器。此方法仅在行开始时调用.
Writer实现
本模块提供了编写器对象接口的三个实现作为示例。大多数应用程序需要从NullWriter
class
- class
formatter.
NullWriter
- 一个只提供接口定义的编写器派生新的编写器类;不对任何方法采取任何行动。这应该是所有编写者的基类,不需要任何实现方法.
- class
formatter.
AbstractWriter
- 一个可以用于调试格式化程序的编写器,但不是很多。每种方法都只是通过在standardoutput上打印它的名称和参数来宣告自己.
- class
formatter.
DumbWriter
(file=None, maxcol=72) - 简单的写入类在文件对象上写入输出传递为file或者,如果file被省略,则在标准输出上传递。输出完全自动换行为maxcol指定的列数。此类适用于回复一系列段落.
评论被关闭。