rebol / red中存在new-line阻止选项卡的内容?

时间:2018-05-29 09:57:14

标签: rebol red

我无法找到新标签,但有新行,那么你如何在块中保留标签?

    help new-line
    USAGE:
         NEW-LINE position value

    DESCRIPTION: 
         Sets or clears the new-line marker within a block or paren. 
         NEW-LINE is a native! value.

    ARGUMENTS:
         position     [block! paren!] "Position to change marker (modified)".
         value         "Set TRUE for newline".

    REFINEMENTS:
         /all         => Set/clear marker to end of series.
         /skip        => Set/clear marker periodically to the end of the series.
            size         [integer!] 

    RETURNS:
         [block! paren!]

1 个答案:

答案 0 :(得分:3)

数组中每个单元格有一个换行符号(“any-block!”s),表示成型过程是否应该在该值之前输出换行符。

缩进仅由这些标志驱动。缩进从第一个换行标志开始,进一步的换行将各自对齐到该级别,如果有任何换行/缩进,则在块的末尾有一个outdent发生。

>> data: [a b c]

>> new-line next data true

>> data
== [a 
   b c
]

请注意,块[a b c]内的换行符有4个“候选位置”(例如,位置为[* a * b * c *])。然而,只有三个值单元格,换行标记表示希望在该单元格之前输出换行符。由于缺少任何地方放置第四个换行信号,Rebol2和Red的决定是隐含地将结束括号放在自己的行上,如果有任何换行标记处理的话。

I've previously mentioned在面对系列修改时,如何“管理”这样的“带外”信息并不明显。它有助于满足您的期望。即使只担心一点,也会有很多细微差别,例如当你说:

compose [
    1 + (block1)
    (block2)
]

如何在COMPOSE中的内容与拼接数据本身之间的内容之间合并换行标记?这只是与一位相关的逻辑。加入一些“缩进计数”会引入更多问题。此外,这个数字还有很多不足之处:“游戏规则”之一是将每个值单元的4个平台指针保持在最低点。

扩展格式化功能的可能性不大。尾部获取其自己的换行标记的一个功能请求是accepted for open source Rebol3,但是rejected by Red。我不希望在这方面看到更多的事情。