1// Copyright 2020 CUE Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Copyright 2013 The Go Authors. All rights reserved.
16// Use of this source code is governed by a BSD-style
17// license that can be found in the LICENSE file.
18
19package path_test
20
21import (
22 "fmt"
23
24 "cuelang.org/go/pkg/path"
25)
26
27func ExampleSplitList() {
28 fmt.Println("On Unix:", path.SplitList("/a/b/c:/usr/bin", path.Unix))
29 // Output:
30 // On Unix: [/a/b/c /usr/bin]
31}
32
33func ExampleRel() {
34 paths := []string{
35 "/a/b/c",
36 "/b/c",
37 "./b/c",
38 }
39 base := "/a"
40
41 fmt.Println("On Unix:")
42 for _, p := range paths {
43 rel, err := path.Rel(base, p, path.Unix)
44 fmt.Printf("%q: %q %v\n", p, rel, err)
45 }
46
47 // Output:
48 // On Unix:
49 // "/a/b/c": "b/c" <nil>
50 // "/b/c": "../b/c" <nil>
51 // "./b/c": "" Rel: can't make ./b/c relative to /a
52}
53
54func ExampleSplit() {
55 paths := []string{
56 "/home/arnie/amelia.jpg",
57 "/mnt/photos/",
58 "rabbit.jpg",
59 "/usr/local//go",
60 }
61 fmt.Println("On Unix:")
62 for _, p := range paths {
63 pair := path.Split(p, path.Unix)
64 fmt.Printf("input: %q\n\tdir: %q\n\tfile: %q\n", p, pair[0], pair[1])
65 }
66 // Output:
67 // On Unix:
68 // input: "/home/arnie/amelia.jpg"
69 // dir: "/home/arnie/"
70 // file: "amelia.jpg"
71 // input: "/mnt/photos/"
72 // dir: "/mnt/photos/"
73 // file: ""
74 // input: "rabbit.jpg"
75 // dir: ""
76 // file: "rabbit.jpg"
77 // input: "/usr/local//go"
78 // dir: "/usr/local//"
79 // file: "go"
80}
81
82func ExampleJoin() {
83 fmt.Println("On Unix:")
84 fmt.Println(path.Join([]string{"a", "b", "c"}, path.Unix))
85 fmt.Println(path.Join([]string{"a", "b/c"}, path.Unix))
86 fmt.Println(path.Join([]string{"a/b", "c"}, path.Unix))
87 fmt.Println(path.Join([]string{"a/b", "/c"}, path.Unix))
88
89 fmt.Println(path.Join([]string{"a/b", "../../../xyz"}, path.Unix))
90
91 // Output:
92 // On Unix:
93 // a/b/c
94 // a/b/c
95 // a/b/c
96 // a/b/c
97 // ../xyz
98}
99
100func ExampleMatch() {
101 fmt.Println("On Unix:")
102 fmt.Println(path.Match("/home/catch/*", "/home/catch/foo", path.Unix))
103 fmt.Println(path.Match("/home/catch/*", "/home/catch/foo/bar", path.Unix))
104 fmt.Println(path.Match("/home/?opher", "/home/gopher", path.Unix))
105 fmt.Println(path.Match("/home/\\*", "/home/*", path.Unix))
106
107 // Output:
108 // On Unix:
109 // true <nil>
110 // false <nil>
111 // true <nil>
112 // true <nil>
113}
114
115func ExampleBase() {
116 fmt.Println("On Unix:")
117 fmt.Println(path.Base("/foo/bar/baz.js", path.Unix))
118 fmt.Println(path.Base("/foo/bar/baz", path.Unix))
119 fmt.Println(path.Base("/foo/bar/baz/", path.Unix))
120 fmt.Println(path.Base("dev.txt", path.Unix))
121 fmt.Println(path.Base("../todo.txt", path.Unix))
122 fmt.Println(path.Base("..", path.Unix))
123 fmt.Println(path.Base(".", path.Unix))
124 fmt.Println(path.Base("/", path.Unix))
125 fmt.Println(path.Base("", path.Unix))
126
127 // Output:
128 // On Unix:
129 // baz.js
130 // baz
131 // baz
132 // dev.txt
133 // todo.txt
134 // ..
135 // .
136 // /
137 // .
138}
139
140func ExampleDir() {
141 fmt.Println("On Unix:")
142 fmt.Println(path.Dir("/foo/bar/baz.js", path.Unix))
143 fmt.Println(path.Dir("/foo/bar/baz", path.Unix))
144 fmt.Println(path.Dir("/foo/bar/baz/", path.Unix))
145 fmt.Println(path.Dir("/dirty//path///", path.Unix))
146 fmt.Println(path.Dir("dev.txt", path.Unix))
147 fmt.Println(path.Dir("../todo.txt", path.Unix))
148 fmt.Println(path.Dir("..", path.Unix))
149 fmt.Println(path.Dir(".", path.Unix))
150 fmt.Println(path.Dir("/", path.Unix))
151 fmt.Println(path.Dir("", path.Unix))
152
153 // Output:
154 // On Unix:
155 // /foo/bar
156 // /foo/bar
157 // /foo/bar/baz
158 // /dirty/path
159 // .
160 // ..
161 // .
162 // .
163 // /
164 // .
165}
166
167func ExampleIsAbs() {
168 fmt.Println("On Unix:")
169 fmt.Println(path.IsAbs("/home/gopher", path.Unix))
170 fmt.Println(path.IsAbs(".bashrc", path.Unix))
171 fmt.Println(path.IsAbs("..", path.Unix))
172 fmt.Println(path.IsAbs(".", path.Unix))
173 fmt.Println(path.IsAbs("/", path.Unix))
174 fmt.Println(path.IsAbs("", path.Unix))
175
176 // Output:
177 // On Unix:
178 // true
179 // false
180 // false
181 // false
182 // true
183 // false
184}