Skip to content

Commit

Permalink
feat: introduce agnoster_full path style
Browse files Browse the repository at this point in the history
resolves #142
  • Loading branch information
JanDeDobbeleer committed Nov 11, 2020
1 parent b98b606 commit 573fd43
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
5 changes: 5 additions & 0 deletions docs/docs/segment-path.md
Expand Up @@ -36,6 +36,7 @@ Display the current path.
Style sets the way the path is displayed. Based on previous experience and popular themes, there are 4 flavors.

- agnoster
- agnoster_full
- short
- full
- folder
Expand All @@ -46,6 +47,10 @@ Renders each folder as the `folder_icon` separated by the `folder_separator_icon
Only the current folder name is displayed at the end, `$HOME` is replaced by the `home_icon` if you're
inside the `$HOME` location or one of its children.

### Agnoster Full

Renders each folder name separated by the `folder_separator_icon`.

### Short

Display `$PWD` as a string, replace `$HOME` with the `home_icon` if you're inside the `$HOME` location or
Expand Down
14 changes: 14 additions & 0 deletions segment_path.go
Expand Up @@ -23,6 +23,8 @@ const (
WindowsRegistryIcon Property = "windows_registry_icon"
//Agnoster displays a short path with separator icon, this the default style
Agnoster string = "agnoster"
//AgnosterFull displays all the folder names with the folder_separator_icon
AgnosterFull string = "agnoster_full"
//Short displays a shorter path
Short string = "short"
//Full displays the full path
Expand All @@ -39,6 +41,8 @@ func (pt *path) string() string {
switch style := pt.props.getString(Style, Agnoster); style {
case Agnoster:
return pt.getAgnosterPath()
case AgnosterFull:
return pt.getAgnosterFullPath()
case Short:
return pt.getShortPath()
case Full:
Expand Down Expand Up @@ -85,6 +89,16 @@ func (pt *path) getAgnosterPath() string {
return buffer.String()
}

func (pt *path) getAgnosterFullPath() string {
pwd := pt.env.getcwd()
pathSeparator := pt.env.getPathSeperator()
folderSeparator := pt.props.getString(FolderSeparatorIcon, pathSeparator)
if string(pwd[0]) == pathSeparator {
pwd = pwd[1:]
}
return strings.Replace(pwd, pathSeparator, folderSeparator, -1)
}

func (pt *path) inHomeDir(pwd string) bool {
return strings.HasPrefix(pwd, pt.env.homeDir())
}
Expand Down
17 changes: 17 additions & 0 deletions segment_path_test.go
Expand Up @@ -346,6 +346,23 @@ func TestPathDepthOutsideHomeOneLevelDeep(t *testing.T) {
assert.Equal(t, 1, got)
}

func TestGetAgnosterFullPath(t *testing.T) {
pwd := "/usr/location/whatever"
env := new(MockedEnvironment)
env.On("getPathSeperator", nil).Return("/")
env.On("getcwd", nil).Return(pwd)
path := &path{
env: env,
props: &properties{
values: map[Property]interface{}{
FolderSeparatorIcon: " > ",
},
},
}
got := path.getAgnosterFullPath()
assert.Equal(t, "usr > location > whatever", got)
}

func testWritePathInfo(home string, pwd string, pathSeparator string) string {
props := &properties{
values: map[Property]interface{}{
Expand Down

0 comments on commit 573fd43

Please sign in to comment.