track github.com/jehiah/go-strftime (ISC, git-2efbe75)
This commit is contained in:
parent
7641f9d73d
commit
bed15bfb33
19
vendor/github.com/jehiah/go-strftime/LICENSE
generated
vendored
Normal file
19
vendor/github.com/jehiah/go-strftime/LICENSE
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2012 Jehiah Czebotar
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
4
vendor/github.com/jehiah/go-strftime/README.md
generated
vendored
Normal file
4
vendor/github.com/jehiah/go-strftime/README.md
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
go-strftime
|
||||
===========
|
||||
|
||||
go implementation of strftime
|
72
vendor/github.com/jehiah/go-strftime/strftime.go
generated
vendored
Normal file
72
vendor/github.com/jehiah/go-strftime/strftime.go
generated
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
// go implementation of strftime
|
||||
package strftime
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// taken from time/format.go
|
||||
var conversion = map[rune]string{
|
||||
/*stdLongMonth */ 'B': "January",
|
||||
/*stdMonth */ 'b': "Jan",
|
||||
// stdNumMonth */ 'm': "1",
|
||||
/*stdZeroMonth */ 'm': "01",
|
||||
/*stdLongWeekDay */ 'A': "Monday",
|
||||
/*stdWeekDay */ 'a': "Mon",
|
||||
// stdDay */ 'd': "2",
|
||||
// stdUnderDay */ 'd': "_2",
|
||||
/*stdZeroDay */ 'd': "02",
|
||||
/*stdHour */ 'H': "15",
|
||||
// stdHour12 */ 'I': "3",
|
||||
/*stdZeroHour12 */ 'I': "03",
|
||||
// stdMinute */ 'M': "4",
|
||||
/*stdZeroMinute */ 'M': "04",
|
||||
// stdSecond */ 'S': "5",
|
||||
/*stdZeroSecond */ 'S': "05",
|
||||
/*stdLongYear */ 'Y': "2006",
|
||||
/*stdYear */ 'y': "06",
|
||||
/*stdPM */ 'p': "PM",
|
||||
// stdpm */ 'p': "pm",
|
||||
/*stdTZ */ 'Z': "MST",
|
||||
// stdISO8601TZ */ 'z': "Z0700", // prints Z for UTC
|
||||
// stdISO8601ColonTZ */ 'z': "Z07:00", // prints Z for UTC
|
||||
/*stdNumTZ */ 'z': "-0700", // always numeric
|
||||
// stdNumShortTZ */ 'b': "-07", // always numeric
|
||||
// stdNumColonTZ */ 'b': "-07:00", // always numeric
|
||||
/* nonStdMilli */ 'L': ".000",
|
||||
}
|
||||
|
||||
// This is an alternative to time.Format because no one knows
|
||||
// what date 040305 is supposed to create when used as a 'layout' string
|
||||
// this takes standard strftime format options. For a complete list
|
||||
// of format options see http://strftime.org/
|
||||
func Format(format string, t time.Time) string {
|
||||
retval := make([]byte, 0, len(format))
|
||||
for i, ni := 0, 0; i < len(format); i = ni + 2 {
|
||||
ni = strings.IndexByte(format[i:], '%')
|
||||
if ni < 0 {
|
||||
ni = len(format)
|
||||
} else {
|
||||
ni += i
|
||||
}
|
||||
retval = append(retval, []byte(format[i:ni])...)
|
||||
if ni+1 < len(format) {
|
||||
c := format[ni+1]
|
||||
if c == '%' {
|
||||
retval = append(retval, '%')
|
||||
} else {
|
||||
if layoutCmd, ok := conversion[rune(c)]; ok {
|
||||
retval = append(retval, []byte(t.Format(layoutCmd))...)
|
||||
} else {
|
||||
retval = append(retval, '%', c)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ni < len(format) {
|
||||
retval = append(retval, '%')
|
||||
}
|
||||
}
|
||||
}
|
||||
return string(retval)
|
||||
}
|
49
vendor/github.com/jehiah/go-strftime/strftime_test.go
generated
vendored
Normal file
49
vendor/github.com/jehiah/go-strftime/strftime_test.go
generated
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
package strftime
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func ExampleFormat() {
|
||||
t := time.Unix(1340244776, 0)
|
||||
utc, _ := time.LoadLocation("UTC")
|
||||
t = t.In(utc)
|
||||
fmt.Println(Format("%Y-%m-%d %H:%M:%S", t))
|
||||
// Output:
|
||||
// 2012-06-21 02:12:56
|
||||
}
|
||||
|
||||
func TestNoLeadingPercentSign(t *testing.T) {
|
||||
tm := time.Unix(1340244776, 0)
|
||||
utc, _ := time.LoadLocation("UTC")
|
||||
tm = tm.In(utc)
|
||||
result := Format("aaabbb0123456789%Y", tm)
|
||||
if result != "aaabbb01234567892012" {
|
||||
t.Logf("%s != %s", result, "aaabbb01234567892012")
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnsupported(t *testing.T) {
|
||||
tm := time.Unix(1340244776, 0)
|
||||
utc, _ := time.LoadLocation("UTC")
|
||||
tm = tm.In(utc)
|
||||
result := Format("%0%1%%%2", tm)
|
||||
if result != "%0%1%%2" {
|
||||
t.Logf("%s != %s", result, "%0%1%%2")
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestRubyStrftime(t *testing.T) {
|
||||
tm := time.Unix(1340244776, 0)
|
||||
utc, _ := time.LoadLocation("UTC")
|
||||
tm = tm.In(utc)
|
||||
result := Format("%H:%M:%S%L", tm)
|
||||
if result != "02:12:56.000" {
|
||||
t.Logf("%s != %s", result, "02:12:56.000")
|
||||
t.Fail()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user