als/path

路径组件。

安装: 117

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 1

开放问题: 0

语言:OpenEdge ABL

1.0.0 2016-12-01 08:02 UTC

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>

在构建路径字符串时使用以下过程

  • $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[]方法返回从fromto的相对路径。如果fromto各自解析到相同的路径(在调用每个的^Als/Path:resolve[]方法后),则返回长度为零的字符串。

如果将长度为零的字符串作为fromto传递,则将使用当前工作目录而不是长度为零的字符串。

语法

^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/barbaz,调用^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'

参考