als / path
路径组件。
Requires (Dev)
- parser/composer: ^1.0
This package is auto-updated.
Last update: 2024-09-24 18:14:48 UTC
README
路径组件。
文档
属性
方法
$PROPERTY: delimiter
提供路径分隔符。
示例
${Als/Path:delimiter} #--> ':' $env:PATH #--> '/usr/local/bin:/usr/bin:/bin' $paths[^env:PATH.split[${Als/Path:delimiter};h]] #--> |/usr/local/bin|/usr/bin|/bin|
$PROPERTY: separator
提供路径段分隔符。
示例
${Als/Path:separator} #--> '/' $path[/assets/images/icons.png] $parts[^path.split[${Als/Path:separator};h]] #--> |assets|images|icons.png|
$PROPERTY: cwd
包含'DOCUMENT_ROOT'的绝对路径。
示例
${Als/Path:cwd} #--> '/home/username/host/www'
@METHOD: basename
^Als/Path:basename[]
方法返回路径的最后部分,类似于Unix的basename
命令。
语法
^Als/Path:basename[path[;ext]]
参数
- $path
<string>
- $ext
<string>
可选的文件扩展名。
示例
^Als/Path:basename[/foo/bar/baz/asdf/quux.html] #--> 'quux.html' ^Als/Path:basename[/foo/bar/baz/asdf/quux.html;.html] #--> 'quux'
@METHOD: dirname
^Als/Path:dirname[]
方法返回路径的目录名,类似于Unix的dirname
命令。
语法
^Als/Path:dirname[path]
参数
- $path
<string>
示例
^Als/Path:dirname[/foo/bar/baz/asdf/quux] #--> '/foo/bar/baz/asdf'
@METHOD: extname
^Als/Path:extname[]
方法返回路径的扩展名,从路径最后部分最后一个`.`字符到最后。如果路径最后部分没有`.`,或者路径的基本名(见^Als/Path:basename[]
)的第一个字符是`.`,则返回空字符串。
语法
^Als/Path:extname[path]
参数
- $path
<string>
示例
^Als/Path:extname[index.html] #--> '.html' ^Als/Path:extname[index.coffee.md] #--> '.md' ^Als/Path:extname[index.] #--> '.' ^Als/Path:extname[index] #--> '' ^Als/Path:extname[.index] #--> ''
@METHOD: format
^Als/Path:format[]
方法从<hash>
返回路径字符串。这是^Als/Path:parse[]
的相反操作。
语法
^Als/Path:format[hPath]
参数
- $hPath
<hash>
- $.dir
<string>
- $.root
<string>
- $.base
<string>
- $.name
<string>
- $.ext
<string>
- $.dir
在构建路径字符串时使用以下过程
$result
设置为空字符串。- 如果指定了
$.dir[]
,则将其追加到$result
后面,然后是$Als/Path:separator
的值; - 否则,如果指定了
$.root[]
,则将其追加到$result
。 - 如果指定了
$.base[]
,则将其追加到$result
; - 否则
- 如果指定了
$.name[]
,则将其追加到$result
- 如果指定了
$.ext[]
,则将其追加到$result
。
- 如果指定了
- 返回
$result
示例
# If 'dir' and 'base' are provided: # ${dir}${separator}${base} # will be returned. ^Als/Path:format[ $.dir[/home/user/dir] $.base[file.txt] ] //--> '/home/user/dir/file.txt' # 'root will be used if 'dir' is not specified. # If only 'root' is provided or 'dir' is equal to 'root' # then the separator will not be included. ^Als/Path:format[ $.root[/] $.base[file.txt] ] #--> '/file.txt' # `name` + `ext` will be used if `base` is not specified. ^Als/Path:format[ $.root[/] $.name[file] $.ext[.txt] ] #--> '/file.txt' # `base` will be returned if `dir` or `root` are not provided. ^Als/Path:format[ $.base[file.txt] ] #--> 'file.txt'
@METHOD: isAbsolute
^Als/Path:isAbsolute[]
方法确定路径是否为绝对路径。
如果给定的path
是空字符串,则返回false
。
语法
^Als/Path:isAbsolute[path]
参数
- path
<string>
示例
^Als/Path:isAbsolute[/foo/bar] #--> true ^Als/Path:isAbsolute[/baz/..] #--> true ^Als/Path:isAbsolute[qux/] #--> false ^Als/Path:isAbsolute[.] #--> false
@METHOD: join
^Als/Path:join[]
方法使用$Als/Path:separator
作为分隔符将所有给定的路径段连接在一起,然后对结果路径进行@normalize。
忽略长度为零的路径
段。如果连接的路径字符串是长度为零的字符串,则返回'.'
,表示当前工作目录。
语法
^Als/Path:join[path1;path2[;...]]
参数
- path[, ...]
<字符串>
一系列路径段。
示例
^Als/Path:join[/foo;bar;baz/asdf;quux;..] #--> '/foo/bar/baz/asdf' ^Als/Path:join[foo; $.path[123] ;bar] #--> throws 'invalid.argument' error.
@方法:normalize
^Als/Path:normalize[]
方法规范化给定的路径
,解析'..'
和'.'
段。
当发现多个连续的路径段分隔符时,它们将被单个路径段分隔符实例替换。保留尾部分隔符。
如果路径是长度为零的字符串,则返回'.'
,表示当前工作目录。
语法
^Als/Path:normalize[path]
参数
- path
<string>
示例
^Als/Path:normalize[/foo/bar//baz/asdf/quux/..] #--> '/foo/bar/baz/asdf'
@方法:parse
^Als/Path:parse[]
方法返回一个<哈希表>
,其属性代表路径的显著元素。
返回的<哈希表>
将具有以下属性
- $.root
<string>
- $.dir
<string>
- $.base
<string>
- $.ext
<string>
- $.name
<string>
语法
^Als/Path:parse[path]
参数
- path
<string>
示例
^Als/Path:parse[/home/user/dir/file.txt] #--> # $.root[/] # $.dir[/home/user/dir] # $.base[file.txt] # $.ext[.txt] # $.name[file]
@方法:relative
^Als/Path:relative[]
方法返回从from
到to
的相对路径。如果from
和to
各自解析到相同的路径(在调用每个的^Als/Path:resolve[]
方法后),则返回长度为零的字符串。
如果将长度为零的字符串作为from
或to
传递,则将使用当前工作目录而不是长度为零的字符串。
语法
^Als/Path:relative[from;to]
参数
- from
<字符串>
- to
<字符串>
示例
^Als/Path:relative[/home/user/test/aaa;/home/user/impl/bbb] #--> '../../impl/bbb'
@方法:resolve
^Als/Path:resolve[]
方法将一系列路径或路径段解析为一个绝对路径。
给定路径的序列从右到左处理,每个随后的path
将添加到前面,直到构建一个绝对路径。例如,给定路径段的序列:/foo
,/bar
,baz
,调用^Als/Path:resolve[/foo;/bar;baz]
将返回/bar/baz
。
如果在处理所有给定的path
段之后尚未生成绝对路径,则使用当前工作目录。
结果路径将被规范化,并且移除尾部斜杠,除非路径解析为根目录。
忽略长度为零的path
段。
如果没有传递路径段,^Als/Path:resolve[]
将返回当前工作目录的绝对路径。
语法
^Als/Path:resolve[[path[; ...]]
参数
- path[, ...]
<字符串>
一系列路径或路径段
示例
^Als/Path:resolve[/foo/bar;./baz] #--> '/foo/bar/baz' ^Als/Path:resolve[/foo/bar;/tmp/file/] #--> '/tmp/file' # if the current working directory is '/home/myself/node' ^Als/Path:resolve[wwwroot;static_files/png/;../gif/image.gif] #--> '/home/myself/node/wwwroot/static_files/gif/image.gif'
参考
- 向Leonid Knyazev提问 leonid@knyazev.me | n3o@design.ru
- 向Issues提交错误报告和功能请求。