github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/path/path.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // パッケージパスは、スラッシュで区切られたパスを操作するためのユーティリティルーチンを実装します。
     6  //
     7  // pathパッケージは、URLのパスなど、スラッシュで区切られたパスにのみ使用する必要があります。
     8  // このパッケージは、ドライブレターやバックスラッシュを含むWindowsパスに対処しません。
     9  // オペレーティングシステムのパスを操作するには、 [path/filepath] パッケージを使用してください。
    10  package path
    11  
    12  // Clean関数は、パスを純粋に字句処理して、最短のパス名に変換します。
    13  // 以下のルールを反復処理して、処理できる限り適用します:
    14  //
    15  //  1. 連続するスラッシュを単一のスラッシュに置き換えます。
    16  //  2. 各「.」パス名要素(現在のディレクトリ)を削除します。
    17  //  3. 各「..」パス名要素(親ディレクトリ)とそれに先行する「..」以外の要素を削除します。
    18  //  4. ルートパスを始める「..」要素を削除します:
    19  //     つまり、パスの先頭にある「/..」を「/」に置き換えます。
    20  //
    21  // 返されるパスの末尾には、ルート「/」の場合にのみスラッシュがあります。
    22  //
    23  // この処理結果が空の文字列の場合、Clean関数は「.」という文字列を返します。
    24  //
    25  // 参考文献:Rob Pike, “Lexical File Names in Plan 9 or
    26  // Getting Dot-Dot Right,”
    27  // https://9p.io/sys/doc/lexnames.html
    28  func Clean(path string) string
    29  
    30  // Splitは最後のスラッシュの直後にパスを分割し、
    31  // ディレクトリとファイル名のコンポーネントに分ける。
    32  // パスにスラッシュがない場合、Splitは空のディレクトリと
    33  // ファイルをpathに設定して返します。
    34  // 返される値は、path = dir + fileという性質を持っています。
    35  func Split(path string) (dir, file string)
    36  
    37  // Joinは任意の数のパス要素をスラッシュで区切って1つのパスに結合します。空の要素は無視されます。結果はクリーンになります。ただし、引数リストが空であるか、その要素がすべて空である場合、Joinは空の文字列を返します。
    38  func Join(elem ...string) string
    39  
    40  // Extは、pathで使用されるファイル名の拡張子を返します。
    41  // 拡張子は、pathの最後のスラッシュで区切られた要素の最後のドットから始まるサフィックスです。
    42  // ドットが存在しない場合は空です。
    43  func Ext(path string) string
    44  
    45  // Baseはパスの最後の要素を返します。
    46  // 最後の要素を抽出する前に、トレーリングスラッシュは削除されます。
    47  // パスが空の場合、Baseは「.」を返します。
    48  // パスがすべてのスラッシュで構成されている場合、Baseは「/」を返します。
    49  func Base(path string) string
    50  
    51  // IsAbsはパスが絶対パスかどうかを報告します。
    52  func IsAbs(path string) bool
    53  
    54  // Dirはパスの最後の要素以外のすべてを返します。通常はパスのディレクトリです。
    55  // [Split] を使用して最後の要素を削除した後、パスはクリーン化され、末尾のスラッシュは削除されます。
    56  // パスが空の場合、Dirは "." を返します。
    57  // パスがスラッシュだけで構成され、スラッシュ以外のバイトが続く場合、Dirは単一のスラッシュを返します。それ以外の場合、返されるパスはスラッシュで終わりません。
    58  func Dir(path string) string