diff --git a/vendor/github.com/jehiah/go-strftime/LICENSE b/vendor/github.com/jehiah/go-strftime/LICENSE new file mode 100644 index 0000000..a49216f --- /dev/null +++ b/vendor/github.com/jehiah/go-strftime/LICENSE @@ -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. diff --git a/vendor/github.com/jehiah/go-strftime/README.md b/vendor/github.com/jehiah/go-strftime/README.md new file mode 100644 index 0000000..8eb2403 --- /dev/null +++ b/vendor/github.com/jehiah/go-strftime/README.md @@ -0,0 +1,4 @@ +go-strftime +=========== + +go implementation of strftime \ No newline at end of file diff --git a/vendor/github.com/jehiah/go-strftime/strftime.go b/vendor/github.com/jehiah/go-strftime/strftime.go new file mode 100644 index 0000000..bf2eeab --- /dev/null +++ b/vendor/github.com/jehiah/go-strftime/strftime.go @@ -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) +} diff --git a/vendor/github.com/jehiah/go-strftime/strftime_test.go b/vendor/github.com/jehiah/go-strftime/strftime_test.go new file mode 100644 index 0000000..a6bd2aa --- /dev/null +++ b/vendor/github.com/jehiah/go-strftime/strftime_test.go @@ -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() + } +}