[要約] RFC 8792は、インターネットドラフトやRFCのコンテンツ内の長い行の処理に関するガイドラインです。その目的は、長い行の処理に関する一貫性と互換性を確保することです。

Internet Engineering Task Force (IETF)                         K. Watsen
Request for Comments: 8792                               Watsen Networks
Category: Informational                                     E. Auerswald
ISSN: 2070-1721                                   Individual Contributor
                                                               A. Farrel
                                                      Old Dog Consulting
                                                                   Q. Wu
                                                     Huawei Technologies
                                                               June 2020
        

Handling Long Lines in Content of Internet-Drafts and RFCs

インターネットドラフトおよびRFCのコンテンツの長い行の処理

Abstract

概要

This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.

このドキュメントでは、幅が制限されたテキストコンテンツで長い行を処理するための2つの戦略を定義しています。 "単一のバックスラッシュ"戦略と呼ばれる1つの戦略は、単一のバックスラッシュ( '\')文字の歴史的な使用に基づいており、行の折りたたみが発生した場所を示し、スペース文字ではない最初の文字で継続が発生します。 ( '')次の行に。 「ダブルバックスラッシュ」戦略と呼ばれる2番目の戦略は、2番目のバックスラッシュ文字を追加して最初の戦略を拡張し、継続が始まる場所を識別して、最初の戦略でサポートされていないケースを処理できるようにします。どちらの戦略も、元のコンテンツの自動再構成を可能にする自己記述型ヘッダーを使用します。

Status of This Memo

本文書の状態

This document is not an Internet Standards Track specification; it is published for informational purposes.

このドキュメントはInternet Standards Trackの仕様ではありません。情報提供を目的として公開されています。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Not all documents approved by the IESG are candidates for any level of Internet Standard; see Section 2 of RFC 7841.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。 IESGによって承認されたすべてのドキュメントが、あらゆるレベルのインターネット標準の候補であるとは限りません。 RFC 7841のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8792.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、https://www.rfc-editor.org/info/rfc8792で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(c)2020 IETFトラストおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書は、BCP 78およびIETF文書に関するIETFトラストの法的規定(https://trustee.ietf.org/license-info)の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents

目次

   1.  Introduction
   2.  Applicability Statement
   3.  Requirements Language
   4.  Goals
     4.1.  Automated Folding of Long Lines in Text Content
     4.2.  Automated Reconstitution of the Original Text Content
   5.  Limitations
     5.1.  Not Recommended for Graphical Artwork
     5.2.  Doesn't Work as Well as Format-Specific Options
   6.  Two Folding Strategies
     6.1.  Comparison
     6.2.  Recommendation
   7.  The Single Backslash Strategy ('\')
     7.1.  Folded Structure
       7.1.1.  Header
       7.1.2.  Body
     7.2.  Algorithm
       7.2.1.  Folding
       7.2.2.  Unfolding
   8.  The Double Backslash Strategy ('\\')
     8.1.  Folded Structure
       8.1.1.  Header
       8.1.2.  Body
     8.2.  Algorithm
       8.2.1.  Folding
       8.2.2.  Unfolding
   9.  Examples
     9.1.  Example Showing Boundary Conditions
       9.1.1.  Using '\'
       9.1.2.  Using '\\'
     9.2.  Example Showing Multiple Wraps of a Single Line
       9.2.1.  Using '\'
       9.2.2.  Using '\\'
     9.3.  Example Showing "Smart" Folding
       9.3.1.  Using '\'
       9.3.2.  Using '\\'
     9.4.  Example Showing "Forced" Folding
       9.4.1.  Using '\'
       9.4.2.  Using '\\'
   10. Security Considerations
   11. IANA Considerations
   12. References
     12.1.  Normative References
     12.2.  Informative References
   Appendix A.  Bash Shell Script: rfcfold
   Acknowledgements
   Authors' Addresses
        
1. Introduction
1. はじめに

[RFC7994] sets out the requirements for plain-text RFCs and states that each line of an RFC (and hence of an Internet-Draft) must be limited to 72 characters followed by the character sequence that denotes an end-of-line (EOL).

[RFC7994]は、プレーンテキストRFCの要件を示し、RFC(したがって、インターネットドラフト)の各行は72文字に制限する必要があり、その後に行末(EOL )。

Internet-Drafts and RFCs often include example text or code fragments. Many times, the example text or code exceeds the 72-character line-length limit. The 'xml2rfc' utility [xml2rfc], at the time of this document's publication, does not attempt to wrap the content of such inclusions, simply issuing a warning whenever lines exceed 69 characters. Historically, there has been no convention recommended by the RFC Editor in place for how to handle long lines in such inclusions, other than advising authors to clearly indicate what manipulation has occurred.

多くの場合、インターネットドラフトとRFCには、テキストやコードのフラグメントの例が含まれています。多くの場合、サンプルのテキストまたはコードは、72文字の行の長さの制限を超えています。このドキュメントの公開時点での「xml2rfc」ユーティリティ[xml2rfc]は、そのようなインクルードのコンテンツをラップしようとせず、行が69文字を超えると警告を発するだけです。歴史的に、どのような操作が行われたかを著者に明確に示すように作者に助言することを除いて、そのようなインクルージョンで長い行を処理する方法について、RFCエディターによって推奨される慣例はありませんでした。

This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.

このドキュメントでは、幅が制限されたテキストコンテンツで長い行を処理するための2つの戦略を定義しています。 "単一のバックスラッシュ"戦略と呼ばれる1つの戦略は、単一のバックスラッシュ( '\')文字の歴史的な使用に基づいており、行の折りたたみが発生した場所を示し、スペース文字ではない最初の文字で継続が発生します。 ( '')次の行に。 「ダブルバックスラッシュ」戦略と呼ばれる2番目の戦略は、2番目のバックスラッシュ文字を追加して最初の戦略を拡張し、継続が始まる場所を識別して、最初の戦略でサポートされていないケースを処理できるようにします。どちらの戦略も、元のコンテンツの自動再構成を可能にする自己記述型ヘッダーを使用します。

The strategies defined in this document work on any text content but are primarily intended for a structured sequence of lines, such as would be referenced by the <sourcecode> element defined in Section 2.48 of [RFC7991], rather than for two-dimensional imagery, such as would be referenced by the <artwork> element defined in Section 2.5 of [RFC7991].

このドキュメントで定義されている戦略はあらゆるテキストコンテンツで機能しますが、主に、2次元画像ではなく、[RFC7991]のセクション2.48で定義されている<sourcecode>要素によって参照されるような、構造化された一連の行を対象としています。 [RFC7991]のセクション2.5で定義されている<artwork>要素によって参照されるものなど。

Note that text files are represented as lines having their first character in column 1, and a line length of N where the last character is in the Nth column and is immediately followed by an end-of-line character sequence.

テキストファイルは、列1に最初の文字があり、行の長さがNで、最後の文字がN番目の列にあり、直後に行末文字シーケンスが続く行として表されることに注意してください。

2. Applicability Statement
2. 適用性ステートメント

The formats and algorithms defined in this document may be used in any context, whether for IETF documents or in other situations where structured folding is desired.

このドキュメントで定義されている形式とアルゴリズムは、IETFドキュメントの場合でも、構造化された折りたたみが必要な他の状況でも、どのような状況でも使用できます。

Within the IETF, this work primarily targets the xml2rfc v3 <sourcecode> element (Section 2.48 of [RFC7991]) and the xml2rfc v2 <artwork> element (Section 2.5 of [RFC7749]), which, for lack of a better option, is used in xml2rfc v2 for both source code and artwork. This work may also be used for the xml2rfc v3 <artwork> element (Section 2.5 of [RFC7991]), but as described in Section 5.1, it is generally not recommended.

IETF内では、この作業は主にxml2rfc v3 <sourcecode>要素([RFC7991]のセクション2.48)およびxml2rfc v2 <artwork>要素([RFC7749]のセクション2.5))を対象としています。ソースコードとアートワークの両方でxml2rfc v2で使用されます。この作品はxml2rfc v3 <artwork>要素([RFC7991]のセクション2.5)にも使用できますが、セクション5.1で説明されているように、一般的には推奨されません。

3. Requirements Language
3. 要件言語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

キーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、「OPTIONALこのドキュメントの「」は、BCP 14 [RFC2119] [RFC8174]で説明されているように解釈されます。

4. Goals
4. ゴール
4.1. Automated Folding of Long Lines in Text Content
4.1. テキストコンテンツの長い行の自動折りたたみ

Automated folding of long lines is needed in order to support documents that are dynamically compiled to include content with potentially unconstrained line lengths. For instance, the build process may wish to include content from other local files or content that is dynamically generated by some external process. Both of these cases are discussed next.

潜在的に制約のない行の長さを持つコンテンツを含めるように動的にコンパイルされるドキュメントをサポートするには、長い行の自動折りたたみが必要です。たとえば、ビルドプロセスでは、他のローカルファイルのコンテンツや、外部プロセスによって動的に生成されたコンテンツを含めることができます。これらのケースの両方について次に説明します。

Many documents need to include the content from local files (e.g., XML, JSON, ABNF, ASN.1). Prior to including a file's content, the build process SHOULD first validate these source files using format-specific validators. In order for such tooling to be able to process the files, the files must be in their original/natural state, which may entail them having some long lines. Thus, these source files need to be folded before inclusion into the XML document, in order to satisfy 'xml2rfc' line-length limits.

多くのドキュメントには、ローカルファイルのコンテンツを含める必要があります(XML、JSON、ABNF、ASN.1など)。ビルドプロセスは、ファイルのコンテンツを含める前に、まずフォーマット固有のバリデーターを使用してこれらのソースファイルを検証する必要があります(SHOULD)。このようなツールがファイルを処理できるようにするには、ファイルが元の自然な状態である必要があり、長い行が必要になる場合があります。したがって、これらのソースファイルは、「xml2rfc」の行の長さの制限を満たすために、XMLドキュメントに含める前に折りたたむ必要があります。

Similarly, documents sometimes contain dynamically generated output, typically from an external process operating on the same source files discussed in the previous paragraph. For instance, such processes may translate the input format to another format, or they may render a report on, or a view of, the input file. In some cases, the dynamically generated output may contain lines exceeding the 'xml2rfc' line-length limits.

同様に、ドキュメントには、動的に生成された出力が含まれる場合があります。通常、前の段落で説明した同じソースファイルで動作する外部プロセスからの出力です。たとえば、このようなプロセスは、入力形式を別の形式に変換したり、入力ファイルに関するレポートやビューを表示したりできます。場合によっては、動的に生成された出力に、「xml2rfc」の行の長さの制限を超える行が含まれることがあります。

In both cases, folding is required and SHOULD be automated to reduce effort and errors resulting from manual processing.

どちらの場合も、折りたたみが必要であり、手動処理による労力とエラーを減らすために自動化する必要があります。

4.2. Automated Reconstitution of the Original Text Content
4.2. 元のテキストコンテンツの自動再構成

Automated reconstitution of the exact original text content is needed to support validation of text-based content extracted from documents.

ドキュメントから抽出されたテキストベースのコンテンツの検証をサポートするには、正確な元のテキストコンテンツの自動再構成が必要です。

For instance, YANG modules [RFC7950] are already extracted from Internet-Drafts and validated as part of the submission process. Additionally, the desire to validate instance examples (i.e., XML/ JSON documents) contained within Internet-Drafts has been discussed [yang-doctors-thread].

たとえば、YANGモジュール[RFC7950]は、インターネットドラフトから既に抽出され、送信プロセスの一部として検証されています。さらに、Internet-Draftsに含まれているインスタンスの例(つまり、XML / JSONドキュメント)を検証したいという要望が議論されています[yang-doctors-thread]。

5. Limitations
5. 制限事項
5.1. グラフィカルアートワークには推奨されません

While the solution presented in this document works on any kind of text-based content, it is most useful on content that represents source code (XML, JSON, etc.) or, more generally, on content that has not been laid out in two dimensions (e.g., diagrams).

このドキュメントで紹介するソリューションはあらゆる種類のテキストベースのコンテンツで機能しますが、ソースコード(XML、JSONなど)を表すコンテンツ、またはより一般的には2つにレイアウトされていないコンテンツで最も役立ちます。寸法(図など)。

Fundamentally, the issue is whether the text content remains readable once folded. Text content that is unpredictable is especially susceptible to looking bad when folded; falling into this category are most Unified Modeling Language (UML) diagrams, YANG tree diagrams, and ASCII art in general.

基本的に、問題はテキストのコンテンツが折りたたまれても読みやすいかどうかです。予測できないテキストコンテンツは、折りたたむと見栄えが悪くなります。このカテゴリに分類されるのは、ほとんどの統一モデリング言語(UML)図、YANGツリー図、および一般的なASCIIアートです。

It is NOT RECOMMENDED to use the solution presented in this document on graphical artwork.

このドキュメントに示されているソリューションをグラフィックアートワークで使用することはお勧めしません。

5.2. Doesn't Work as Well as Format-Specific Options
5.2. 形式固有のオプションと同様に機能しない

The solution presented in this document works generically for all text-based content, as it only views content as plain text. However, various formats sometimes have built-in mechanisms that are better suited to prevent long lines.

このドキュメントで説明するソリューションは、コンテンツをプレーンテキストとして表示するだけなので、すべてのテキストベースのコンテンツに対して一般的に機能します。ただし、さまざまなフォーマットには、長い行を防ぐのに適した組み込みのメカニズムがある場合があります。

For instance, both the 'pyang' and 'yanglint' utilities [pyang] [yanglint] have the command-line option "tree-line-length", which can be used to indicate a desired maximum line length when generating YANG tree diagrams [RFC8340].

たとえば、「pyang」と「yanglint」の両方のユーティリティ[pyang] [yanglint]には、コマンドラインオプション「tree-line-length」があります。これは、YANGツリー図を生成するときに、目的の最大ライン長を示すために使用できます。 RFC8340]。

In another example, some source formats (e.g., YANG [RFC7950]) allow any quoted string to be broken up into substrings separated by a concatenation character (e.g., '+'), any of which can be on a different line.

別の例では、いくつかのソース形式(たとえば、YANG [RFC7950])では、引用符で囲まれた文字列を、連結文字(たとえば、「+」)で区切られた部分文字列に分割できます。

It is RECOMMENDED that authors do as much as possible within the selected format to avoid long lines.

長い行を避けるために、作成者は選択した形式内でできるだけ多くのことを行うことをお勧めします。

6. Two Folding Strategies
6. 2つの折りたたみ戦略

This document defines two nearly identical strategies for folding text-based content.

このドキュメントでは、テキストベースのコンテンツを折りたたむためのほぼ同じ2つの戦略を定義しています。

The Single Backslash Strategy ('\'): Uses a backslash ('\') character at the end of the line where folding occurs, and assumes that the continuation begins at the first character that is not a space character (' ') on the following line.

単一のバックスラッシュ戦略( '\'):折り返しが発生する行の終わりにバックスラッシュ( '\')文字を使用し、スペース文字( '')ではない最初の文字から継続が始まると想定します次の行。

The Double Backslash Strategy ('\\'): Uses a backslash ('\') character at the end of the line where folding occurs, and assumes that the continuation begins after a second backslash ('\') character on the following line.

二重バックスラッシュ戦略( '\\'):折り返しが発生する行の終わりにバックスラッシュ( '\')文字を使用し、継続が次の行の2番目のバックスラッシュ( '\')文字の後に始まると想定します。

6.1. Comparison
6.1. 比較

The first strategy produces output that is more readable. However, (1) it is significantly more likely to encounter unfoldable input (e.g., a long line containing only space characters), and (2) for long lines that can be folded, automation implementations may encounter scenarios that, without special care, will produce errors.

最初の戦略は、より読みやすい出力を生成します。ただし、(1)展開できない入力(スペース文字のみを含む長い行など)に遭遇する可能性が大幅に高くなります。(2)折りたたむことができる長い行の場合、自動化の実装では、特別な注意なしに、エラーが発生します。

The second strategy produces output that is less readable, but it is unlikely to encounter unfoldable input, there are no long lines that cannot be folded, and no special care is required when folding a long line.

2番目の方法は、読みにくい出力を生成しますが、展開できない入力に遭遇する可能性は低く、折りたたむことができない長い行はなく、長い行を折りたたむときに特別な注意は必要ありません。

6.2. Recommendation
6.2. 勧告

It is RECOMMENDED that implementations first attempt to fold content using the single backslash strategy and, only in the unlikely event that it cannot fold the input or the folding logic is unable to cope with a contingency occurring on the desired folding column, then fall back to the double backslash strategy.

実装では、最初に単一のバックスラッシュ戦略を使用してコンテンツを折りたたむことを試み、入力を折りたたむことができない、または折りたたみロジックが目的の折りたたみ列で発生する不測の事態に対処できない場合にのみフォールバックすることをお勧めします。ダブルバックスラッシュ戦略。

7. The Single Backslash Strategy ('\')
7. 単一のバックスラッシュ戦略( '\')
7.1. Folded Structure
7.1. 折りたたみ構造

Text content that has been folded as specified by this strategy MUST adhere to the following structure.

この戦略で指定されたとおりに折りたたまれたテキストコンテンツは、次の構造に準拠する必要があります。

7.1.1. Header
7.1.1. ヘッダ

The header is two lines long.

ヘッダーは2行です。

The first line is the following 36-character string; this string MAY be surrounded by any number of printable characters. This first line cannot itself be folded.

最初の行は次の36文字の文字列です。この文字列は、任意の数の印刷可能な文字で囲まれる場合があります。この最初の行自体を折り返すことはできません。

NOTE: '\' line wrapping per RFC 8792

注:RFC 8792に基づく '\'行の折り返し

The second line is an empty line, containing only the end-of-line character sequence. This line provides visual separation for readability.

2行目は空行で、行末文字シーケンスのみが含まれています。この線は、読みやすくするために視覚的に分離されています。

7.1.2. Body
7.1.2. 体

The character encoding is the same as the encoding described in Section 2 of [RFC7994], except that, per [RFC7991], tab characters are prohibited.

文字エンコードは、[RFC7994]のセクション2で説明されているエンコードと同じですが、[RFC7991]に従ってタブ文字が禁止されている点が異なります。

Lines that have a backslash ('\') occurring as the last character in a line are considered "folded".

行の最後の文字としてバックスラッシュ( '\')が使用されている行は、「折りたたまれた」と見なされます。

Exceptionally long lines MAY be folded multiple times.

非常に長い行は複数回折り畳まれてもよい(MAY)。

7.2. Algorithm
7.2. アルゴリズム

This section describes a process for folding and unfolding long lines when they are encountered in text content.

このセクションでは、テキストコンテンツで長い行が検出された場合に、長い行を折りたたんだり展開したりするプロセスについて説明します。

The steps are complete, but implementations MAY achieve the same result in other ways.

手順は完了していますが、実装は他の方法でも同じ結果を達成できます(MAY)。

When a larger document contains multiple instances of text content that may need to be folded or unfolded, another process must insert/extract the individual text content instances to/from the larger document prior to utilizing the algorithms described in this section. For example, the 'xiax' utility [xiax] does this.

大きなドキュメントに、折りたたんだり展開したりする必要があるテキストコンテンツの複数のインスタンスが含まれている場合、このセクションで説明するアルゴリズムを利用する前に、別のプロセスが個々のテキストコンテンツインスタンスを大きなドキュメントに挿入/抽出する必要があります。たとえば、「xiax」ユーティリティ[xiax]がこれを行います。

7.2.1. Folding
7.2.1. 折りたたみ

Determine the desired maximum line length from input to the line-wrapping process, such as from a command-line parameter. If no value is explicitly specified, the value "69" SHOULD be used.

コマンド行パラメーターなどから、入力から行折り返しプロセスまでの望ましい最大行長を決定します。値が明示的に指定されていない場合は、値 "69"を使用する必要があります(SHOULD)。

Ensure that the desired maximum line length is not less than the minimum header, which is 36 characters. If the desired maximum line length is less than this minimum, exit (this text-based content cannot be folded).

必要な最大行長が、最小ヘッダーである36文字以上であることを確認してください。必要な最大行長がこの最小値よりも短い場合は、終了します(このテキストベースのコンテンツは折りたたむことができません)。

Scan the text content for horizontal tab characters. If any horizontal tab characters appear, either resolve them to space characters or exit, forcing the input provider to convert them to space characters themselves first.

水平タブ文字のテキストコンテンツをスキャンします。水平タブ文字が表示された場合は、それらを空白文字に解決するか終了して、入力プロバイダーに最初に空白文字自体を変換させる。

Scan the text content to ensure that at least one line exceeds the desired maximum. If no line exceeds the desired maximum, exit (this text content does not need to be folded).

テキストコンテンツをスキャンして、少なくとも1行が目的の最大値を超えていることを確認します。希望する最大値を超える行がない場合は、終了します(このテキストコンテンツを折りたたむ必要はありません)。

Scan the text content to ensure that no existing lines already end with a backslash ('\') character, as this could lead to an ambiguous result. If such a line is found, and its width is less than the desired maximum, then it SHOULD be flagged for "forced" folding (folding even though unnecessary). If the folding implementation doesn't support forced foldings, it MUST exit.

テキストコンテンツをスキャンして、既存の行がバックスラッシュ( '\')文字で終わっていないことを確認します。これにより、あいまいな結果が生じる可能性があります。そのような線が見つかり、その幅が望ましい最大値よりも小さい場合、「強制」折りたたみ(不必要でも折りたたみ)のフラグを立てる必要があります。フォールディング実装が強制フォールディングをサポートしていない場合は、終了する必要があります。

If this text content needs to, and can, be folded, insert the header described in Section 7.1.1, ensuring that any additional printable characters surrounding the header do not result in a line exceeding the desired maximum.

このテキストコンテンツを折りたたむ必要があり、折りたたむことができる場合は、セクション7.1.1で説明されているヘッダーを挿入し、ヘッダーを囲む追加の印刷可能な文字によって行が目的の最大値を超えないようにします。

For each line in the text content, from top to bottom, if the line exceeds the desired maximum or requires a forced folding, then fold the line by performing the following steps:

テキストコンテンツの各行について、上から下へ、行が目的の最大値を超えるか、強制的に折りたたむ必要がある場合は、次の手順を実行して行を折りたたみます。

1. Determine where the fold will occur. This location MUST be before or at the desired maximum column and MUST NOT be chosen such that the character immediately after the fold is a space (' ') character. For forced foldings, the location is between the '\' and the end-of-line sequence. If no such location can be found, then exit (this text content cannot be folded).

1. 折り目が発生する場所を決定します。この場所は、目的の最大列の前または最大でなければならず、折りたたみ直後の文字がスペース( '')文字になるように選択してはなりません。強制折りたたみの場合、場所は「\」と行末シーケンスの間にあります。そのような場所が見つからない場合は、終了します(このテキストコンテンツは折りたたむことができません)。

2. At the location where the fold is to occur, insert a backslash ('\') character followed by the end-of-line character sequence.

2. 折り返しが発生する場所に、バックスラッシュ( '\')文字を挿入し、その後に行末文字シーケンスを挿入します。

3. On the following line, insert any number of space (' ') characters, provided that the resulting line does not exceed the desired maximum.

3. 結果の行が希望の最大数を超えないことを条件として、次の行に任意の数のスペース( '')文字を挿入します。

The result of the previous operation is that the next line starts with an arbitrary number of space (' ') characters, followed by the character that was previously occupying the position where the fold occurred.

前の操作の結果は、次の行が任意の数のスペース( '')文字で始まり、その後に折りたたみが発生した位置を以前に占めていた文字が続くことです。

Continue in this manner until reaching the end of the text content. Note that this algorithm naturally addresses the case where the remainder of a folded line is still longer than the desired maximum and, hence, needs to be folded again, ad infinitum.

この方法で、テキストコンテンツの最後に到達するまで続けます。このアルゴリズムは、折りたたまれた線の残りの部分が望ましい最大値よりも依然として長い場合に当然対処するため、無限に再度折りたたむ必要があることに注意してください。

The process described in this section is illustrated by the "fold_it_1()" function in Appendix A.

このセクションで説明するプロセスは、付録Aの「fold_it_1()」関数によって示されています。

7.2.2. Unfolding
7.2.2. 展開

Scan the beginning of the text content for the header described in Section 7.1.1. If the header is not present, exit (this text content does not need to be unfolded).

セクション7.1.1で説明されているヘッダーのテキストコンテンツの先頭をスキャンします。ヘッダーが存在しない場合は終了します(このテキストコンテンツを展開する必要はありません)。

Remove the two-line header from the text content.

テキストコンテンツから2行のヘッダーを削除します。

For each line in the text content, from top to bottom, if the line has a backslash ('\') character immediately followed by the end-of-line character sequence, then the line can be unfolded. Remove the backslash ('\') character, the end-of-line character sequence, and any leading space (' ') characters, which will bring up the next line. Then continue to scan each line in the text content starting with the current line (in case it was multiply folded).

テキストコンテンツの各行について、上から下に、バックスラッシュ( '\')文字の直後に行末文字シーケンスが続く場合、その行を展開できます。次の行を表示するバックスラッシュ( '\')文字、行末文字シーケンス、および先行スペース( '')文字を削除します。次に、現在の行から始まるテキストコンテンツの各行のスキャンを続けます(複数行に折りたたまれている場合)。

Continue in this manner until reaching the end of the text content.

この方法で、テキストコンテンツの最後に到達するまで続けます。

The process described in this section is illustrated by the "unfold_it_1()" function in Appendix A.

このセクションで説明するプロセスは、付録Aの「unfold_it_1()」関数で示されています。

8. The Double Backslash Strategy ('\\')
8. ダブルバックスラッシュ戦略( '\\')
8.1. Folded Structure
8.1. 折りたたみ構造

Text content that has been folded as specified by this strategy MUST adhere to the following structure.

この戦略で指定されたとおりに折りたたまれたテキストコンテンツは、次の構造に準拠する必要があります。

8.1.1. Header
8.1.1. ヘッダ

The header is two lines long.

ヘッダーは2行です。

The first line is the following 37-character string; this string MAY be surrounded by any number of printable characters. This first line cannot itself be folded.

最初の行は、次の37文字の文字列です。この文字列は、任意の数の印刷可能な文字で囲まれる場合があります。この最初の行自体を折り返すことはできません。

NOTE: '\\' line wrapping per RFC 8792

注:RFC 8792に基づく '\\'行の折り返し

The second line is an empty line, containing only the end-of-line character sequence. This line provides visual separation for readability.

2行目は空行で、行末文字シーケンスのみが含まれています。この線は、読みやすくするために視覚的に分離されています。

8.1.2. Body
8.1.2. 体

The character encoding is the same as the encoding described in Section 2 of [RFC7994], except that, per [RFC7991], tab characters are prohibited.

文字エンコードは、[RFC7994]のセクション2で説明されているエンコードと同じですが、[RFC7991]に従ってタブ文字が禁止されている点が異なります。

Lines that have a backslash ('\') occurring as the last character in a line immediately followed by the end-of-line character sequence, when the subsequent line starts with a backslash ('\') as the first character that is not a space character (' '), are considered "folded".

行の最後の文字としてバックスラッシュ( '\')があり、直後に行末の文字シーケンスが続く行。次の行が最初の文字としてバックスラッシュ( '\')で始まっている場合スペース文字( '')は「折りたたまれた」と見なされます。

Exceptionally long lines MAY be folded multiple times.

非常に長い行は複数回折り畳まれてもよい(MAY)。

8.2. Algorithm
8.2. アルゴリズム

This section describes a process for folding and unfolding long lines when they are encountered in text content.

このセクションでは、テキストコンテンツで長い行が検出された場合に、長い行を折りたたんだり展開したりするプロセスについて説明します。

The steps are complete, but implementations MAY achieve the same result in other ways.

手順は完了していますが、実装は他の方法でも同じ結果を達成できます(MAY)。

When a larger document contains multiple instances of text content that may need to be folded or unfolded, another process must insert/extract the individual text content instances to/from the larger document prior to utilizing the algorithms described in this section. For example, the 'xiax' utility [xiax] does this.

大きなドキュメントに、折りたたんだり展開したりする必要があるテキストコンテンツの複数のインスタンスが含まれている場合、このセクションで説明するアルゴリズムを利用する前に、別のプロセスが個々のテキストコンテンツインスタンスを大きなドキュメントに挿入/抽出する必要があります。たとえば、「xiax」ユーティリティ[xiax]がこれを行います。

8.2.1. Folding
8.2.1. 折りたたみ

Determine the desired maximum line length from input to the line-wrapping process, such as from a command-line parameter. If no value is explicitly specified, the value "69" SHOULD be used.

コマンド行パラメーターなどから、入力から行折り返しプロセスまでの望ましい最大行長を決定します。値が明示的に指定されていない場合は、値 "69"を使用する必要があります(SHOULD)。

Ensure that the desired maximum line length is not less than the minimum header, which is 37 characters. If the desired maximum line length is less than this minimum, exit (this text-based content cannot be folded).

必要な最大行長が最小ヘッダー(37文字)を下回らないようにしてください。必要な最大行長がこの最小値よりも短い場合は、終了します(このテキストベースのコンテンツは折りたたむことができません)。

Scan the text content for horizontal tab characters. If any horizontal tab characters appear, either resolve them to space characters or exit, forcing the input provider to convert them to space characters themselves first.

水平タブ文字のテキストコンテンツをスキャンします。水平タブ文字が表示された場合は、それらを空白文字に解決するか終了して、入力プロバイダーに最初に空白文字自体を変換させる。

Scan the text content to see if any line exceeds the desired maximum. If no line exceeds the desired maximum, exit (this text content does not need to be folded).

テキストコンテンツをスキャンして、目的の最大値を超える行がないか確認します。希望する最大値を超える行がない場合は、終了します(このテキストコンテンツを折りたたむ必要はありません)。

Scan the text content to ensure that no existing lines already end with a backslash ('\') character while the subsequent line starts with a backslash ('\') character as the first character that is not a space character (' '), as this could lead to an ambiguous result. If such a line is found and its width is less than the desired maximum, then it SHOULD be flagged for forced folding (folding even though unnecessary). If the folding implementation doesn't support forced foldings, it MUST exit.

テキストコンテンツをスキャンして、既存の行がバックスラッシュ( '\')文字ですでに終了していないことを確認し、後続の行がスペース文字( '')ではない最初の文字としてバックスラッシュ( '\')文字で始まることを確認します。これはあいまいな結果につながる可能性があるため。そのような線が見つかり、その幅が望ましい最大値よりも小さい場合は、強制折りたたみ(不必要でも折りたたみ)のフラグを立てる必要があります。フォールディング実装が強制フォールディングをサポートしていない場合は、終了する必要があります。

If this text content needs to, and can, be folded, insert the header described in Section 8.1.1, ensuring that any additional printable characters surrounding the header do not result in a line exceeding the desired maximum.

このテキストコンテンツを折りたたむ必要があり、折りたたむことができる場合は、セクション8.1.1で説明されているヘッダーを挿入し、ヘッダーを囲む追加の印刷可能な文字によって、行が目的の最大値を超えないようにします。

For each line in the text content, from top to bottom, if the line exceeds the desired maximum or requires a forced folding, then fold the line by performing the following steps:

テキストコンテンツの各行について、上から下へ、行が目的の最大値を超えるか、強制的に折りたたむ必要がある場合は、次の手順を実行して行を折りたたみます。

1. Determine where the fold will occur. This location MUST be before or at the desired maximum column. For forced foldings, the location is between the '\' and the end-of-line sequence on the first line.

1. 折り目が発生する場所を決定します。この場所は、目的の最大列の前か、または最大でなければなりません。強制折りたたみの場合、位置は「\」と最初の行の行末シーケンスの間にあります。

2. At the location where the fold is to occur, insert a first backslash ('\') character followed by the end-of-line character sequence.

2. 折りたたみを行う場所に、最初の円記号( '\')文字を挿入し、その後に行末文字シーケンスを挿入します。

3. On the following line, insert any number of space (' ') characters, provided that the resulting line does not exceed the desired maximum, followed by a second backslash ('\') character.

3. 次の行に、スペース( '')文字をいくつでも挿入します。ただし、結果の行が必要な最大数を超えない場合は、2番目のバックスラッシュ( '\')文字が続きます。

The result of the previous operation is that the next line starts with an arbitrary number of space (' ') characters, followed by a backslash ('\') character, immediately followed by the character that was previously occupying the position where the fold occurred.

前の操作の結果は、次の行が任意の数のスペース( '')文字で始まり、その後にバックスラッシュ( '\')文字が続き、直後に折りたたみが発生した位置を占めていた文字が続きます。 。

Continue in this manner until reaching the end of the text content. Note that this algorithm naturally addresses the case where the remainder of a folded line is still longer than the desired maximum and, hence, needs to be folded again, ad infinitum.

この方法で、テキストコンテンツの最後に到達するまで続けます。このアルゴリズムは、折りたたまれた線の残りの部分が望ましい最大値よりも依然として長い場合に当然対処するため、無限に再度折りたたむ必要があることに注意してください。

The process described in this section is illustrated by the "fold_it_2()" function in Appendix A.

このセクションで説明するプロセスは、付録Aの「fold_it_2()」関数で示されています。

8.2.2. Unfolding
8.2.2. 展開

Scan the beginning of the text content for the header described in Section 8.1.1. If the header is not present, exit (this text content does not need to be unfolded).

セクション8.1.1で説明されているヘッダーのテキストコンテンツの先頭をスキャンします。ヘッダーが存在しない場合は終了します(このテキストコンテンツを展開する必要はありません)。

Remove the two-line header from the text content.

テキストコンテンツから2行のヘッダーを削除します。

For each line in the text content, from top to bottom, if the line has a backslash ('\') character immediately followed by the end-of-line character sequence and if the next line has a backslash ('\') character as the first character that is not a space character (' '), then the lines can be unfolded. Remove the first backslash ('\') character, the end-of-line character sequence, any leading space (' ') characters, and the second backslash ('\') character, which will bring up the next line. Then, continue to scan each line in the text content starting with the current line (in case it was multiply folded).

テキストコンテンツの各行について、上から下へ、その行にバックスラッシュ( '\')文字の直後に行末文字シーケンスが続き、次の行にバックスラッシュ( '\')文字がある場合スペース文字( '')ではない最初の文字として、行を展開できます。最初の円記号( '\')文字、行末文字シーケンス、先行スペース( '')文字、および次の行を表示する2番目の円記号( '\')文字を削除します。次に、現在の行から始まるテキストコンテンツの各行のスキャンを続けます(複数折りたたまれている場合)。

Continue in this manner until reaching the end of the text content.

この方法で、テキストコンテンツの最後に到達するまで続けます。

The process described in this section is illustrated by the "unfold_it_2()" function in Appendix A.

このセクションで説明するプロセスは、付録Aの「unfold_it_2()」関数によって示されています。

9. Examples
9. 例

The following self-documenting examples illustrate folded text-based content.

次の自己文書化の例は、折りたたまれたテキストベースのコンテンツを示しています。

The source text content cannot be presented here, as it would again be folded. Alas, only the results can be provided.

ソーステキストコンテンツは、再び折りたたまれるため、ここに表示できません。残念ながら、結果のみを提供できます。

9.1. Example Showing Boundary Conditions
9.1. 境界条件を示す例

This example illustrates boundary conditions. The input contains seven lines, each line one character longer than the previous line. Numbers are used for counting purposes. The default desired maximum column value "69" is used.

この例は、境界条件を示しています。入力には7行が含まれ、各行は前の行よりも1文字長くなっています。数値はカウントの目的で使用されます。デフォルトの望ましい最大列値「69」が使用されます。

9.1.1. Using '\'
9.1.1. 「\」の使用
   ========== NOTE: '\' line wrapping per RFC 8792 ===========
        

123456789012345678901234567890123456789012345678901234567890123456 1234567890123456789012345678901234567890123456789012345678901234567 12345678901234567890123456789012345678901234567890123456789012345678 123456789012345678901234567890123456789012345678901234567890123456789 12345678901234567890123456789012345678901234567890123456789012345678\ 90 12345678901234567890123456789012345678901234567890123456789012345678\ 901 12345678901234567890123456789012345678901234567890123456789012345678\ 9012

123456789012345678901234567890123456789012345678901234567890123456 1234567890123456789012345678901234567890123456789012345678901234567 12345678901234567890123456789012345678901234567890123456789012345678 123456789012345678901234567890123456789012345678901234567890123456789 12345678901234567890123456789012345678901234567890123456789012345678\ 90 12345678901234567890123456789012345678901234567890123456789012345678\ 901 12345678901234567890123456789012345678901234567890123456789012345678\ 9012

9.1.2. Using '\\'
9.1.2. '\\'の使用
   ========== NOTE: '\\' line wrapping per RFC 8792 ==========
        

123456789012345678901234567890123456789012345678901234567890123456 1234567890123456789012345678901234567890123456789012345678901234567 12345678901234567890123456789012345678901234567890123456789012345678 123456789012345678901234567890123456789012345678901234567890123456789 12345678901234567890123456789012345678901234567890123456789012345678\ \90 12345678901234567890123456789012345678901234567890123456789012345678\ \901 12345678901234567890123456789012345678901234567890123456789012345678\ \9012

123456789012345678901234567890123456789012345678901234567890123456 1234567890123456789012345678901234567890123456789012345678901234567 12345678901234567890123456789012345678901234567890123456789012345678 123456789012345678901234567890123456789012345678901234567890123456789 12345678901234567890123456789012345678901234567890123456789012345678\ \90 12345678901234567890123456789012345678901234567890123456789012345678\ \901 12345678901234567890123456789012345678901234567890123456789012345678\ \9012

9.2. Example Showing Multiple Wraps of a Single Line
9.2. 単一行の複数の折り返しを示す例

This example illustrates what happens when a very long line needs to be folded multiple times. The input contains one line containing 280 characters. Numbers are used for counting purposes. The default desired maximum column value "69" is used.

この例は、非常に長い線を複数回折りたたむ必要がある場合に何が起こるかを示しています。入力には、280文字を含む1行が含まれています。数値はカウントの目的で使用されます。デフォルトの望ましい最大列値「69」が使用されます。

9.2.1. Using '\'
9.2.1. 「\」の使用
   ========== NOTE: '\' line wrapping per RFC 8792 ===========
        

12345678901234567890123456789012345678901234567890123456789012345678\ 90123456789012345678901234567890123456789012345678901234567890123456\ 78901234567890123456789012345678901234567890123456789012345678901234\ 56789012345678901234567890123456789012345678901234567890123456789012\ 34567890

12345678901234567890123456789012345678901234567890123456789012345678\ 90123456789012345678901234567890123456789012345678901234567890123456\ 78901234567890123456789012345678901234567890123456789012345678901234\ 56789012345678901234567890123456789012345678901234567890123456789012\ 34567890

9.2.2. Using '\\'
9.2.2. '\\'の使用
   ========== NOTE: '\\' line wrapping per RFC 8792 ==========
        

12345678901234567890123456789012345678901234567890123456789012345678\ \9012345678901234567890123456789012345678901234567890123456789012345\ \6789012345678901234567890123456789012345678901234567890123456789012\ \3456789012345678901234567890123456789012345678901234567890123456789\ \01234567890

12345678901234567890123456789012345678901234567890123456789012345678\ \9012345678901234567890123456789012345678901234567890123456789012345\ \6789012345678901234567890123456789012345678901234567890123456789012\ \3456789012345678901234567890123456789012345678901234567890123456789\ \01234567890

9.3. Example Showing "Smart" Folding
9.3. 「スマート」フォールディングを示す例

This example illustrates how readability can be improved via "smart" folding, whereby folding occurs at format-specific locations and format-specific indentations are used.

この例は、「スマート」折りたたみによって可読性を向上させる方法を示しています。これにより、折りたたみはフォーマット固有の場所で行われ、フォーマット固有のインデントが使用されます。

The text content was manually folded, since the script in Appendix A does not implement smart folding.

付録Aのスクリプトはスマートフォールディングを実装していないため、テキストコンテンツは手動でフォールドされました。

Note that the headers are surrounded by different printable characters than those shown in the script-generated examples.

ヘッダーは、スクリプトで生成された例に示されているものとは異なる印刷可能な文字で囲まれていることに注意してください。

9.3.1. Using '\'
9.3.1. 「\」の使用

[NOTE: '\' line wrapping per RFC 8792]

[注:RFC 8792による '\'行の折り返し]

   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
        
     <module-set>
       <name>config-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>\
           urn:ietf:params:xml:ns:yang:ietf-interfaces\
         </namespace>
       </module>
       ...
     </module-set>
     ...
   </yang-library>
        

Below is the equivalent of the above, but it was folded using the script in Appendix A.

以下は上記と同じですが、付録Aのスクリプトを使用して折りたたまれています。

   ========== NOTE: '\' line wrapping per RFC 8792 ===========
        
   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
        
     <module-set>
       <name>config-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>urn:ietf:params:xml:ns:yang:ietf-interfaces</namesp\
   ace>
       </module>
       ...
     </module-set>
     ...
   </yang-library>
        
9.3.2. Using '\\'
9.3.2. '\\'の使用

[NOTE: '\\' line wrapping per RFC 8792]

[注:RFC 8792による '\\'行の折り返し]

   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
        
     <module-set>
       <name>config-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>\
           \urn:ietf:params:xml:ns:yang:ietf-interfaces\
         \</namespace>
       </module>
       ...
     </module-set>
     ...
   </yang-library>
        

Below is the equivalent of the above, but it was folded using the script in Appendix A.

以下は上記と同じですが、付録Aのスクリプトを使用して折りたたまれています。

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========
        
   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
        
     <module-set>
       <name>config-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>urn:ietf:params:xml:ns:yang:ietf-interfaces</namesp\
   \ace>
       </module>
       ...
     </module-set>
     ...
   </yang-library>
        
9.4. Example Showing "Forced" Folding
9.4. 「強制」折りたたみの例

This example illustrates how invalid sequences in lines that do not have to be folded can be handled via forced folding, whereby the folding occurs even though unnecessary.

この例は、折りたたむ必要のない行の無効なシーケンスが、強制折りたたみによってどのように処理できるかを示しています。これにより、不必要でも折りたたみが発生します。

   The following line exceeds a 68-char max and, thus, demands folding:
   123456789012345678901234567890123456789012345678901234567890123456789
        

This line ends with a backslash \

この行はバックスラッシュ\で終わります

This line ends with a backslash \ \ This line begins with a backslash

この行はバックスラッシュで終わります\ \この行はバックスラッシュで始まります

The following is an indented 3x3 block of backslashes: \\\ \\\ \\\

以下は、バックスラッシュのインデントされた3x3ブロックです:\\\ \\\ \\\

The samples below were manually folded, since the script in the appendix does not implement forced folding.

付録のスクリプトは強制折りたたみを実装していないため、以下のサンプルは手動で折りたたまれています。

Note that the headers are prefixed by a pound ('#') character, rather than surrounded by 'equals' ('=') characters as shown in the script-generated examples.

スクリプトで生成された例に示すように、ヘッダーの前には「等しい」(「=」)文字ではなく、ポンド(「#」)文字が付いていることに注意してください。

9.4.1. Using '\'
9.4.1. 「\」の使用

# NOTE: '\' line wrapping per RFC 8792

#注:RFC 8792に基づく '\'行の折り返し

The following line exceeds a 68-char max and, thus, demands folding: 1234567890123456789012345678901234567890123456789012345678901234567\ 89

次の行は最大68文字を超えているため、折りたたみを要求しています。1234567890123456789012345678901234567890123456789012345678901234567 \ 89

This line ends with a backslash \\

この行はバックスラッシュ\\で終わります

This line ends with a backslash \\

この行はバックスラッシュ\\で終わります

\ This line begins with a backslash

\この行はバックスラッシュで始まります

The following is an indented 3x3 block of backslashes: \\\\

以下は、バックスラッシュのインデントされた3x3ブロックです:\\\\

\\\\

¥¥¥¥

\\\

¥¥¥

9.4.2. Using '\\'
9.4.2. '\\'の使用

# NOTE: '\\' line wrapping per RFC 8792

#注:RFC 8792に基づく '\\'行の折り返し

The following line exceeds a 68-char max and, thus, demands folding: 1234567890123456789012345678901234567890123456789012345678901234567\ \89

次の行は最大68文字を超えているため、折りたたみを要求しています。1234567890123456789012345678901234567890123456789012345678901234567\ \ 89

This line ends with a backslash \

この行はバックスラッシュ\で終わります

This line ends with a backslash \\ \ \ This line begins with a backslash

この行はバックスラッシュで終了します\\ \ \この行はバックスラッシュで始まります

The following is an indented 3x3 block of backslashes: \\\\ \ \\\\ \ \\\

以下は、バックスラッシュのインデントされた3x3ブロックです:\\\\ \ \\\\ \ \\\

10. Security Considerations
10. セキュリティに関する考慮事項

This document has no security considerations.

このドキュメントにはセキュリティに関する考慮事項はありません。

11. IANA Considerations
11. IANAに関する考慮事項

This document has no IANA actions.

このドキュメントにはIANAアクションはありません。

12. References
12. 参考文献
12.1. Normative References
12.1. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、<https://www.rfc-editor.org/info/ rfc2119>。

[RFC7991] Hoffman, P., "The "xml2rfc" Version 3 Vocabulary", RFC 7991, DOI 10.17487/RFC7991, December 2016, <https://www.rfc-editor.org/info/rfc7991>.

[RFC7991] Hoffman、P。、「The "xml2rfc" Version 3 Vocabulary」、RFC 7991、DOI 10.17487 / RFC7991、2016年12月、<https://www.rfc-editor.org/info/rfc7991>。

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174] Leiba、B。、「RFC 2119キーワードの大文字と小文字のあいまいさ」、BCP 14、RFC 8174、DOI 10.17487 / RFC8174、2017年5月、<https://www.rfc-editor.org/info/ rfc8174>。

12.2. Informative References
12.2. 参考引用

[bash] "GNU Bash Manual", <https://www.gnu.org/software/bash/manual>.

[bash]「GNU Bashマニュアル」、<https://www.gnu.org/software/bash/manual>。

[pyang] "pyang", <https://pypi.org/project/pyang/>.

[pyang]「pyang」、<https://pypi.org/project/pyang/>。

[RFC7749] Reschke, J., "The "xml2rfc" Version 2 Vocabulary", RFC 7749, DOI 10.17487/RFC7749, February 2016, <https://www.rfc-editor.org/info/rfc7749>.

[RFC7749] Reschke、J。、「The "xml2rfc" Version 2 Vocabulary」、RFC 7749、DOI 10.17487 / RFC7749、2016年2月、<https://www.rfc-editor.org/info/rfc7749>。

[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.

[RFC7950] Bjorklund、M。、編、「The YANG 1.1 Data Modeling Language」、RFC 7950、DOI 10.17487 / RFC7950、2016年8月、<https://www.rfc-editor.org/info/rfc7950>。

[RFC7994] Flanagan, H., "Requirements for Plain-Text RFCs", RFC 7994, DOI 10.17487/RFC7994, December 2016, <https://www.rfc-editor.org/info/rfc7994>.

[RFC7994] Flanagan、H。、「Requires for Plain-Text RFCs」、RFC 7994、DOI 10.17487 / RFC7994、2016年12月、<https://www.rfc-editor.org/info/rfc7994>。

[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.

[RFC8340] Bjorklund、M。およびL. Berger、編、「YANG Tree Diagrams」、BCP 215、RFC 8340、DOI 10.17487 / RFC8340、2018年3月、<https://www.rfc-editor.org/info/ rfc8340>。

[xiax] "The 'xiax' Python Package", <https://pypi.org/project/xiax/>.

[xiax]「 'xiax' Pythonパッケージ」、<https://pypi.org/project/xiax/>。

[xml2rfc] "xml2rfc", <https://pypi.org/project/xml2rfc/>.

[xml2rfc] "xml2rfc"、<https://pypi.org/project/xml2rfc/>。

[yang-doctors-thread] Watsen, K., "[yang-doctors] automating yang doctor reviews", message to the yang-doctors mailing list, 18 April 2018, <https://mailarchive.ietf.org/arch/msg/yang-doctors/DCfBqgfZPAD7afzeDFlQ1Xm2X3g>.

[yang-doctors-thread] Watsen、K。、「[yang-doctors] automatingヤンドクターレビュー」、ヤンドクターメーリングリストへのメッセージ、2018年4月18日、<https://mailarchive.ietf.org/arch/ msg / yang-doctors / DCfBqgfZPAD7afzeDFlQ1Xm2X3g>。

[yanglint] "yanglint", commit 1b7d73d, February 2020, <https://github.com/CESNET/libyang#yanglint>.

[yanglint]「yanglint」、コミット1b7d73d、2020年2月、<https://github.com/CESNET/libyang#yanglint>。

Appendix A. Bash Shell Script: rfcfold

付録A. Bashシェルスクリプト:rfcfold

This non-normative appendix includes a Bash shell script [bash] that can both fold and unfold text content using both the single and double backslash strategies described in Sections 7 and 8, respectively. This shell script, called 'rfcfold', is maintained at <https://github.com/ietf-tools/rfcfold>.

この非規範的な付録には、セクション7と8でそれぞれ説明されているシングルバックスラッシュとダブルバックスラッシュの両方を使用してテキストコンテンツを折りたたんだり展開したりできるBashシェルスクリプト[bash]が含まれています。 「rfcfold」と呼ばれるこのシェルスクリプトは、<https://github.com/ietf-tools/rfcfold>で管理されています。

This script is intended to be applied to a single text content instance. If it is desired to fold or unfold text content instances within a larger document (e.g., an Internet-Draft or RFC), then another tool must be used to extract the content from the larger document before utilizing this script.

このスクリプトは、単一のテキストコンテンツインスタンスに適用することを目的としています。大きなドキュメント(インターネットドラフトやRFCなど)内のテキストコンテンツインスタンスを折りたたんだり展開したりする場合は、このスクリプトを使用する前に、別のツールを使用して大きなドキュメントからコンテンツを抽出する必要があります。

For readability purposes, this script forces the minimum supported line length to be eight characters longer than the raw header text defined in Sections 7.1.1 and 8.1.1 so as to ensure that the header can be wrapped by a space (' ') character and three 'equals' ('=') characters on each side of the raw header text.

読みやすくするために、このスクリプトでは、サポートされる最小の行の長さをセクション7.1.1および8.1.1で定義された未加工のヘッダーテキストよりも8文字長くして、ヘッダーをスペース( '')文字でラップできるようにしています生のヘッダーテキストの両側に3つの「等しい」(「=」)文字。

When a tab character is detected in the input file, this script exits with the following error message:

入力ファイルでタブ文字が検出されると、このスクリプトは次のエラーメッセージで終了します。

Error: infile contains a tab character, which is not allowed.

エラー:infileにタブ文字が含まれていますが、これは許可されていません。

This script tests for the availability of GNU awk (gawk), in order to test for ASCII-based control characters and non-ASCII characters in the input file (see below). Note that testing revealed flaws in the default version of 'awk' on some platforms. As this script uses 'gawk' only to issue warning messages, if 'gawk' is not found, this script issues the following debug message:

このスクリプトは、入力ファイル内のASCIIベースの制御文字と非ASCII文字をテストするために、GNU awk(gawk)の可用性をテストします(以下を参照)。一部のプラットフォームでは、テストによってデフォルトバージョンの「awk」に欠陥が見つかったことに注意してください。このスクリプトは「gawk」を使用して警告メッセージを発行するだけなので、「gawk」が見つからない場合、このスクリプトは次のデバッグメッセージを発行します。

Debug: no GNU awk; skipping checks for special characters.

デバッグ:GNU awkなし;特殊文字のチェックをスキップします。

When 'gawk' is available (see above) and ASCII-based control characters are detected in the input file, this script issues the following warning message:

「gawk」が利用可能であり(上記を参照)、ASCIIベースの制御文字が入力ファイルで検出されると、このスクリプトは次の警告メッセージを発行します。

Warning: infile contains ASCII control characters (unsupported).

警告:infileにはASCII制御文字が含まれています(サポートされていません)。

When 'gawk' is available (see above) and non-ASCII characters are detected in the input file, this script issues the following warning message:

「gawk」が利用可能であり(上記を参照)、非ASCII文字が入力ファイルで検出されると、このスクリプトは次の警告メッセージを発行します。

Warning: infile contains non-ASCII characters (unsupported).

警告:infileに非ASCII文字が含まれています(サポートされていません)。

This script does not implement the whitespace-avoidance logic described in Section 7.2.1. In such a case, the script will exit with the following error message:

このスクリプトは、セクション7.2.1で説明されている空白回避ロジックを実装していません。このような場合、スクリプトは次のエラーメッセージで終了します。

Error: infile has a space character occurring on the folding column. This file cannot be folded using the '\' strategy.

エラー:infileには折りたたみ列でスペース文字が含まれています。このファイルは「\」戦略を使用して折りたたむことはできません。

While this script can unfold input that contains forced foldings, it is unable to fold files that would require forced foldings. Forced folding is described in Sections 7.2.1 and 8.2.1. When being asked to fold a file that would require forced folding, the script will instead exit with one of the following error messages:

このスクリプトは強制折りたたみを含む入力を展開できますが、強制折りたたみが必要なファイルを折りたたむことはできません。強制折りたたみについては、セクション7.2.1および8.2.1で説明しています。強制的に折りたたむ必要があるファイルを折りたたむように求められた場合、スクリプトは代わりに次のエラーメッセージのいずれかで終了します。

For '\':

ために '\':

Error: infile has a line ending with a '\' character. This file cannot be folded using the '\' strategy without there being false positives produced in the unfolding (i.e., this script does not force-fold such lines, as described in RFC 8792).

エラー:infileに '\'文字で終了する行があります。このファイルは、展開で偽陽性が発生しない限り、「\」戦略を使用して折りたたむことはできません(つまり、このスクリプトは、RFC 8792で説明されているように、そのような行を強制的に折りたたみません)。

For '\\':

ために '\\':

Error: infile has a line ending with a '\' character followed by a '\' character as the first non-space character on the next line. This script cannot fold this file using the '\\' strategy without there being false positives produced in the unfolding (i.e., this script does not force-fold such lines, as described in RFC 8792).

エラー:infileには、次の行の最初の非スペース文字として「\」文字の後に「\」文字が続く行があります。このスクリプトは、展開で偽陽性が発生しない限り、「\\」戦略を使用してこのファイルを折りたたむことはできません(つまり、このスクリプトは、RFC 8792で説明されているように、そのような行を強制的に折りたたみません)。

Shell-level end-of-line backslash ('\') characters have been purposely added to the script so as to ensure that the script is itself not folded in this document, thus simplifying the ability to copy/paste the script for local use. As should be evident by the lack of the mandatory header described in Section 7.1.1, these backslashes do not designate a folded line (e.g., as described in Section 7).

シェルレベルの行末のバックスラッシュ( '\')文字が意図的にスクリプトに追加され、スクリプト自体がこのドキュメントで折りたたまれないようにすることで、ローカルで使用するためにスクリプトをコピー/貼り付けする機能を簡素化。セクション7.1.1で説明されている必須のヘッダーがないことから明らかなように、これらのバックスラッシュは折り返し線を示していません(たとえば、セクション7で説明されているように)。

   <CODE BEGINS> file "rfcfold"
   #!/bin/bash --posix
        

# This script may need some adjustments to work on a given system. # For instance, the utility 'gsed' may need to be installed. # Also, please be advised that 'bash' (not 'sh') must be used.

#このスクリプトは、特定のシステムで動作するようにいくつかの調整が必要になる場合があります。 #たとえば、「gsed」ユーティリティをインストールする必要がある場合があります。 #また、「bash」(「sh」ではない)を使用する必要があることに注意してください。

# Copyright (c) 2020 IETF Trust, Kent Watsen, and Erik Auerswald. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials # provided with the distribution. # # * Neither the name of Internet Society, IETF or IETF Trust, nor # the names of specific contributors, may be used to endorse or # promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#Copyright(c)2020 IETF Trust、Kent Watsen、およびErik Auerswald。 # 全著作権所有。 ##ソースフォームとバイナリフォームでの再配布と使用は、変更の有無にかかわらず、次の条件が満たされている場合に許可されます###*ソースコードの再配布は、上記の著作権情報を保持する必要があります。免責事項。 ##*バイナリ形式での再配布は、上記の著作権表示、この条件のリスト、および#配布物とともに提供されるドキュメントおよび/またはその他の資料の#免責事項を複製する必要があります。 ##*インターネットソシエティ、IETFまたはIETFトラストの名前、および特定の貢献者の名前のいずれも、特定の事前の書面による許可なしに、このソフトウェアから派生した製品を推奨または宣伝するために使用することはできません。 ##このソフトウェアは、著作権者および寄稿者によって「現状有姿」で提供され、明示的または黙示的な保証は一切含まれませんが、商品性および特定の目的に対する適合性の黙示の保証が含まれます。いかなる場合も、#著作権所有者または寄稿者は、直接的、間接的、偶発的、特別、例示的、または結果的な損害#(代替商品または#サービスの購入を含むがこれらに限定されない)、使用の損失について責任を負わないものとします。 、または利益、またはビジネスの中断)#責任の理論上、契約にかかわらず、#責任、または不法行為(過失またはその他の場合を含む)#本ソフトウェアの使用のいずれかの方法で発生したものそのような損傷の可能性についてアドバイスしました。

   print_usage() {
     printf "\n"
     printf "Folds or unfolds the input text file according to"
     printf " RFC 8792.\n"
     printf "\n"
     printf "Usage: rfcfold [-h] [-d] [-q] [-s <strategy>] [-c <col>]"
     printf " [-r] -i <infile> -o <outfile>\n"
     printf "\n"
     printf "  -s: strategy to use, '1' or '2' (default: try 1,"
     printf " else 2)\n"
     printf "  -c: column to fold on (default: 69)\n"
     printf "  -r: reverses the operation\n"
     printf "  -i: the input filename\n"
     printf "  -o: the output filename\n"
     printf "  -d: show debug messages (unless -q is given)\n"
     printf "  -q: quiet (suppress error and debug messages)\n"
     printf "  -h: show this message\n"
     printf "\n"
     printf "Exit status code: 1 on error, 0 on success, 255 on no-op."
     printf "\n\n"
   }
        
   # global vars, do not edit
   strategy=0 # auto
   debug=0
   quiet=0
   reversed=0
   infile=""
   outfile=""
   maxcol=69  # default, may be overridden by param
   col_gvn=0  # maxcol overridden?
   hdr_txt_1="NOTE: '\\' line wrapping per RFC 8792"
   hdr_txt_2="NOTE: '\\\\' line wrapping per RFC 8792"
   equal_chars="======================================================="
   space_chars="                                                       "
   temp_dir=""
   prog_name='rfcfold'
        
   # functions for diagnostic messages
   prog_msg() {
     if [[ "$quiet" -eq 0 ]]; then
       format_string="${prog_name}: $1: %s\n"
       shift
       printf -- "$format_string" "$*" >&2
     fi
   }
        
   err() {
     prog_msg 'Error' "$@"
   }
        
   warn() {
     prog_msg 'Warning' "$@"
   }
        
   dbg() {
     if [[ "$debug" -eq 1 ]]; then
       prog_msg 'Debug' "$@"
     fi
   }
        
   # determine name of [g]sed binary
   type gsed > /dev/null 2>&1 && SED=gsed || SED=sed
        
   # warn if a non-GNU sed utility is used
   "$SED" --version < /dev/null 2> /dev/null | grep -q GNU || \
   warn 'not using GNU `sed` (likely cause if an error occurs).'
        
   cleanup() {
     rm -rf "$temp_dir"
   }
   trap 'cleanup' EXIT
        

fold_it_1() { # ensure input file doesn't contain the fold-sequence already if [[ -n "$("$SED" -n '/\\$/p' "$infile")" ]]; then err "infile '$infile' has a line ending with a '\\' character."\ "This script cannot fold this file using the '\\' strategy"\ "without there being false positives produced in the"\ "unfolding." return 1 fi

fold_it_1(){#入力ファイルに折りたたみシーケンスが含まれていないことを確認しますif [[-n "$(" $ SED "-n '/ \\ $ / p'" $ infile ")"]];次に、「infile '$ infile'は '\\'文字で終了する行があります。」\「このスクリプトは、「\\」ストラテジーを使用してこのファイルを折りたたむことはできません」\「「\」で誤検知がなければ、展開しています。」 1 fiを返す

     # where to fold
     foldcol=$(expr "$maxcol" - 1) # for the inserted '\' char
        
     # ensure input file doesn't contain whitespace on the fold column
     grep -q "^\(.\{$foldcol\}\)\{1,\} " "$infile"
     if [[ $? -eq 0 ]]; then
       err "infile '$infile' has a space character occurring on the"\
           "folding column.  This file cannot be folded using the"\
           "'\\' strategy."
       return 1
     fi
        
     # center header text
     length=$(expr ${#hdr_txt_1} + 2)
     left_sp=$(expr \( "$maxcol" - "$length" \) / 2)
     right_sp=$(expr "$maxcol" - "$length" - "$left_sp")
     header=$(printf "%.*s %s %.*s" "$left_sp" "$equal_chars"\
                      "$hdr_txt_1" "$right_sp" "$equal_chars")
        
     # generate outfile
     echo "$header" > "$outfile"
     echo "" >> "$outfile"
     "$SED" 's/\(.\{'"$foldcol"'\}\)\(..\)/\1\\\n\2/;t M;b;:M;P;D;'\
       < "$infile" >> "$outfile" 2> /dev/null
     if [[ $? -ne 0 ]]; then
       return 1
     fi
     return 0
   }
        
   fold_it_2() {
     # where to fold
     foldcol=$(expr "$maxcol" - 1) # for the inserted '\' char
        
     # ensure input file doesn't contain the fold-sequence already
     if [[ -n "$("$SED" -n '/\\$/{N;s/\\\n[ ]*\\/&/p;D}' "$infile")" ]]
     then
       err "infile '$infile' has a line ending with a '\\' character"\
           "followed by a '\\' character as the first non-space"\
           "character on the next line.  This script cannot fold"\
           "this file using the '\\\\' strategy without there being"\
           "false positives produced in the unfolding."
       return 1
     fi
        
     # center header text
     length=$(expr ${#hdr_txt_2} + 2)
     left_sp=$(expr \( "$maxcol" - "$length" \) / 2)
     right_sp=$(expr "$maxcol" - "$length" - "$left_sp")
     header=$(printf "%.*s %s %.*s" "$left_sp" "$equal_chars"\
                      "$hdr_txt_2" "$right_sp" "$equal_chars")
        
     # generate outfile
     echo "$header" > "$outfile"
     echo "" >> "$outfile"
     "$SED" 's/\(.\{'"$foldcol"'\}\)\(..\)/\1\\\n\\\2/;t M;b;:M;P;D;'\
       < "$infile" >> "$outfile" 2> /dev/null
     if [[ $? -ne 0 ]]; then
       return 1
     fi
     return 0
   }
        

fold_it() { # ensure input file doesn't contain a tab grep -q $'\t' "$infile" if [[ $? -eq 0 ]]; then err "infile '$infile' contains a tab character, which is not"\ "allowed." return 1 fi

fold_it(){#入力ファイルにタブgrep -q $ '\ t' "$ infile" if [[$? -eq 0]];すると、「infile '$ infile'にタブ文字が含まれていますが、これは許可されていません」\ 1 fiを返す

     # folding of input containing ASCII control or non-ASCII characters
     # may result in a wrong folding column and is not supported
     if type gawk > /dev/null 2>&1; then
       env LC_ALL=C gawk '/[\000-\014\016-\037\177]/{exit 1}' "$infile"\
       || warn "infile '$infile' contains ASCII control characters"\
               "(unsupported)."
       env LC_ALL=C gawk '/[^\000-\177]/{exit 1}' "$infile"\
       || warn "infile '$infile' contains non-ASCII characters"\
               "(unsupported)."
     else
       dbg "no GNU awk; skipping checks for special characters."
     fi
        
     # check if file needs folding
     testcol=$(expr "$maxcol" + 1)
     grep -q ".\{$testcol\}" "$infile"
     if [[ $? -ne 0 ]]; then
       dbg "nothing to do; copying infile to outfile."
       cp "$infile" "$outfile"
       return 255
     fi
        

if [[ "$strategy" -eq 1 ]]; then fold_it_1 return $? fi if [[ "$strategy" -eq 2 ]]; then fold_it_2 return $? fi quiet_sav="$quiet" quiet=1 fold_it_1 result=$? quiet="$quiet_sav" if [[ "$result" -ne 0 ]]; then dbg "Folding strategy '1' didn't succeed; trying strategy '2'..." fold_it_2 return $? fi return 0 }

if [["$ strategy" -eq 1]];その後、fold_it_1は$を返しますか? fi if [["$ strategy" -eq 2]];その後、fold_it_2は$を返しますか? fi quiet_sav = "$ quiet" quiet = 1 fold_it_1 result = $? quiet = "$ quiet_sav" if [["$ result" -ne 0]];次に、dbg「折りたたみ戦略 '1'は成功しませんでした。戦略 '2'を試行しています...」fold_it_2は$を返しますか? fi return 0}

   unfold_it_1() {
     temp_dir=$(mktemp -d)
        
     # output all but the first two lines (the header) to wip file
     awk "NR>2" "$infile" > "$temp_dir/wip"
        
     # unfold wip file
     "$SED" '{H;$!d};x;s/^\n//;s/\\\n *//g' "$temp_dir/wip" > "$outfile"
        

return 0 }

0を返す}

   unfold_it_2() {
     temp_dir=$(mktemp -d)
        
     # output all but the first two lines (the header) to wip file
     awk "NR>2" "$infile" > "$temp_dir/wip"
        
     # unfold wip file
     "$SED" '{H;$!d};x;s/^\n//;s/\\\n *\\//g' "$temp_dir/wip"\
       > "$outfile"
        

return 0 }

0を返す}

   unfold_it() {
     # check if file needs unfolding
     line=$(head -n 1 "$infile")
     line2=$("$SED" -n '2p' "$infile")
     result=$(echo "$line" | fgrep "$hdr_txt_1")
     if [[ $? -eq 0 ]]; then
       if [[ -n "$line2" ]]; then
         err "the second line in '$infile' is not empty."
         return 1
       fi
       unfold_it_1
       return $?
     fi
     result=$(echo "$line" | fgrep "$hdr_txt_2")
     if [[ $? -eq 0 ]]; then
       if [[ -n "$line2" ]]; then
         err "the second line in '$infile' is not empty."
         return 1
       fi
       unfold_it_2
       return $?
     fi
     dbg "nothing to do; copying infile to outfile."
     cp "$infile" "$outfile"
     return 255
   }
        
   process_input() {
     while [[ "$1" != "" ]]; do
       if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then
         print_usage
         exit 0
       elif [[ "$1" == "-d" ]]; then
         debug=1
       elif [[ "$1" == "-q" ]]; then
         quiet=1
       elif [[ "$1" == "-s" ]]; then
         if [[ "$#" -eq "1" ]]; then
           err "option '-s' needs an argument (use -h for help)."
           exit 1
         fi
         strategy="$2"
         shift
       elif [[ "$1" == "-c" ]]; then
         if [[ "$#" -eq "1" ]]; then
           err "option '-c' needs an argument (use -h for help)."
           exit 1
         fi
         col_gvn=1
         maxcol="$2"
         shift
       elif [[ "$1" == "-r" ]]; then
         reversed=1
       elif [[ "$1" == "-i" ]]; then
         if [[ "$#" -eq "1" ]]; then
           err "option '-i' needs an argument (use -h for help)."
           exit 1
         fi
         infile="$2"
         shift
       elif [[ "$1" == "-o" ]]; then
         if [[ "$#" -eq "1" ]]; then
           err "option '-o' needs an argument (use -h for help)."
           exit 1
         fi
         outfile="$2"
         shift
       else
         warn "ignoring unknown option '$1'."
       fi
       shift
     done
        

if [[ -z "$infile" ]]; then err "infile parameter missing (use -h for help)." exit 1 fi

if [[-z "$ infile"]];次に、「infileパラメータがありません(ヘルプには-hを使用してください)」と表示されます。 1 fiを終了

if [[ -z "$outfile" ]]; then err "outfile parameter missing (use -h for help)." exit 1 fi

if [[-z "$ outfile"]];次に、「outfileパラメータがありません(ヘルプには-hを使用してください)。」 1 fiを終了

if [[ ! -f "$infile" ]]; then err "specified file '$infile' does not exist." exit 1 fi

[[! -f "$ infile"]];次に、「指定されたファイル '$ infile'は存在しません。」 1 fiを終了

if [[ "$col_gvn" -eq 1 ]] && [[ "$reversed" -eq 1 ]]; then warn "'-c' option ignored when unfolding (option '-r')." fi

if [["$ col_gvn" -eq 1]] && [["$ reversed -eq 1]];次に、「展開時に「-c」オプションが無視されることを警告します(オプション '-r')」。 fi

     if [[ "$strategy" -eq 0 ]] || [[ "$strategy" -eq 2 ]]; then
       min_supported=$(expr ${#hdr_txt_2} + 8)
     else
       min_supported=$(expr ${#hdr_txt_1} + 8)
     fi
     if [[ "$maxcol" -lt "$min_supported" ]]; then
       err "the folding column cannot be less than $min_supported."
       exit 1
     fi
        
     # this is only because the code otherwise runs out of equal_chars
     max_supported=$(expr ${#equal_chars} + 1 + ${#hdr_txt_1} + 1\
          + ${#equal_chars})
     if [[ "$maxcol" -gt "$max_supported" ]]; then
       err "the folding column cannot be more than $max_supported."
       exit 1
     fi
   }
        

main() { if [[ "$#" -eq "0" ]]; then print_usage exit 1 fi

main(){if [["$#" -eq "0"]];その後、print_usage exit 1 fi

process_input "$@"

process_input "$ @"

if [[ "$reversed" -eq 0 ]]; then fold_it code=$? else unfold_it code=$? fi exit "$code" }

if [["$ reversed" -eq 0]];その後、fold_it code = $?それ以外はunfold_it code = $? fi exit "$ code"}

main "$@" <CODE ENDS>

メインの「$ @」<コード終了>

Acknowledgements

謝辞

The authors thank the RFC Editor for confirming that there was previously no set convention, at the time of this document's publication, for handling long lines in source code inclusions, thus instigating this work.

著者は、このドキュメントの公開時に、ソースコードのインクルードの長い行を処理するための設定規則が以前になかったことを確認し、この作業を扇動したRFC Editorに感謝します。

The authors thank the following folks for their various contributions while producing this document (sorted by first name): Ben Kaduk, Benoit Claise, Gianmarco Bruno, Italo Busi, Joel Jaeggli, Jonathan Hansford, Lou Berger, Martin Bjorklund, and Rob Wilton.

著者は、このドキュメントを作成する際にさまざまな貢献をしてくれた以下の人々に感謝します(名で並べ替え)。ベンカドゥク、ブノワクレイズ、ジャンマルコブルーノ、イタロブジ、ジョエルジャグリ、ジョナサンハンスフォード、ルーバーガー、マーティンビョークランド、ロブウィルトン。

Authors' Addresses

著者のアドレス

Kent Watsen Watsen Networks

Kent Watsen Watsen Networks

   Email: kent+ietf@watsen.net
        

Erik Auerswald Individual Contributor

Erik Auerswald個人貢献者

   Email: auerswal@unix-ag.uni-kl.de
        

Adrian Farrel Old Dog Consulting

エイドリアンファレルオールドドッグコンサルティング

   Email: adrian@olddog.co.uk
        

Qin Wu Huawei Technologies

五湖AのQは技術です

   Email: bill.wu@huawei.com