1// Copyright 2012 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
5package path_test
6
7import (
8	"fmt"
9	"path"
10)
11
12func ExampleBase() {
13	fmt.Println(path.Base("/a/b"))
14	fmt.Println(path.Base("/"))
15	fmt.Println(path.Base(""))
16	// Output:
17	// b
18	// /
19	// .
20}
21
22func ExampleClean() {
23	paths := []string{
24		"a/c",
25		"a//c",
26		"a/c/.",
27		"a/c/b/..",
28		"/../a/c",
29		"/../a/b/../././/c",
30		"",
31	}
32
33	for _, p := range paths {
34		fmt.Printf("Clean(%q) = %q\n", p, path.Clean(p))
35	}
36
37	// Output:
38	// Clean("a/c") = "a/c"
39	// Clean("a//c") = "a/c"
40	// Clean("a/c/.") = "a/c"
41	// Clean("a/c/b/..") = "a/c"
42	// Clean("/../a/c") = "/a/c"
43	// Clean("/../a/b/../././/c") = "/a/c"
44	// Clean("") = "."
45}
46
47func ExampleDir() {
48	fmt.Println(path.Dir("/a/b/c"))
49	fmt.Println(path.Dir("a/b/c"))
50	fmt.Println(path.Dir("/a/"))
51	fmt.Println(path.Dir("a/"))
52	fmt.Println(path.Dir("/"))
53	fmt.Println(path.Dir(""))
54	// Output:
55	// /a/b
56	// a/b
57	// /a
58	// a
59	// /
60	// .
61}
62
63func ExampleExt() {
64	fmt.Println(path.Ext("/a/b/c/bar.css"))
65	fmt.Println(path.Ext("/"))
66	fmt.Println(path.Ext(""))
67	// Output:
68	// .css
69	//
70	//
71}
72
73func ExampleIsAbs() {
74	fmt.Println(path.IsAbs("/dev/null"))
75	// Output: true
76}
77
78func ExampleJoin() {
79	fmt.Println(path.Join("a", "b", "c"))
80	fmt.Println(path.Join("a", "b/c"))
81	fmt.Println(path.Join("a/b", "c"))
82
83	fmt.Println(path.Join("a/b", "../../../xyz"))
84
85	fmt.Println(path.Join("", ""))
86	fmt.Println(path.Join("a", ""))
87	fmt.Println(path.Join("", "a"))
88
89	// Output:
90	// a/b/c
91	// a/b/c
92	// a/b/c
93	// ../xyz
94	//
95	// a
96	// a
97}
98
99func ExampleMatch() {
100	fmt.Println(path.Match("abc", "abc"))
101	fmt.Println(path.Match("a*", "abc"))
102	fmt.Println(path.Match("a*/b", "a/c/b"))
103	// Output:
104	// true <nil>
105	// true <nil>
106	// false <nil>
107}
108
109func ExampleSplit() {
110	split := func(s string) {
111		dir, file := path.Split(s)
112		fmt.Printf("path.Split(%q) = dir: %q, file: %q\n", s, dir, file)
113	}
114	split("static/myfile.css")
115	split("myfile.css")
116	split("")
117	// Output:
118	// path.Split("static/myfile.css") = dir: "static/", file: "myfile.css"
119	// path.Split("myfile.css") = dir: "", file: "myfile.css"
120	// path.Split("") = dir: "", file: ""
121}
122