diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index dd08ac91121..063f0efedd7 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,6 +1,6 @@ { "ImportPath": "github.com/grafana/grafana", - "GoVersion": "go1.3", + "GoVersion": "go1.4.2", "Packages": [ "./pkg/..." ], @@ -13,14 +13,6 @@ "ImportPath": "github.com/Unknwon/macaron", "Rev": "93de4f3fad97bf246b838f828e2348f46f21f20a" }, - { - "ImportPath": "github.com/dalu/slug", - "Rev": "6dbd13912e9be466e2c1de349a2c7d1466c97e07" - }, - { - "ImportPath": "github.com/dalu/unidecode", - "Rev": "339814d47f3e32a6f7036a0a4c56ed9b373dd755" - }, { "ImportPath": "github.com/go-sql-driver/mysql", "Comment": "v1.2-26-g9543750", @@ -35,6 +27,10 @@ "Comment": "v0.4.2-58-ge2889e5", "Rev": "e2889e5517600b82905f1d2ba8b70deb71823ffe" }, + { + "ImportPath": "github.com/gosimple/slug", + "Rev": "8d258463b4459f161f51d6a357edacd3eef9d663" + }, { "ImportPath": "github.com/jtolds/gls", "Rev": "f1ac7f4f24f50328e6bc838ca4437d1612a0243c" @@ -56,6 +52,10 @@ "ImportPath": "github.com/mattn/go-sqlite3", "Rev": "e28cd440fabdd39b9520344bc26829f61db40ece" }, + { + "ImportPath": "github.com/rainycape/unidecode", + "Rev": "836ef0a715aedf08a12d595ed73ec8ed5b288cac" + }, { "ImportPath": "github.com/smartystreets/goconvey/convey", "Comment": "1.5.0-356-gfbc0a1c", @@ -87,10 +87,6 @@ "ImportPath": "gopkg.in/redis.v2", "Comment": "v2.3.2", "Rev": "e6179049628164864e6e84e973cfb56335748dea" - }, - { - "ImportPath": "gopkgs.com/pool.v1", - "Rev": "c850f092aad1780cbffff25f471c5cc32097932a" } ] } diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/README.md b/Godeps/_workspace/src/github.com/dalu/unidecode/README.md deleted file mode 100644 index 589d955593c..00000000000 --- a/Godeps/_workspace/src/github.com/dalu/unidecode/README.md +++ /dev/null @@ -1,6 +0,0 @@ -unidecode -========= - -Unicode transliterator in Golang - Replaces non-ASCII characters with their ASCII approximations. - -View other available versions, documentation and examples at http://gopkgs.com/unidecode diff --git a/Godeps/_workspace/src/github.com/gosimple/slug/.gitignore b/Godeps/_workspace/src/github.com/gosimple/slug/.gitignore new file mode 100644 index 00000000000..02a8da53752 --- /dev/null +++ b/Godeps/_workspace/src/github.com/gosimple/slug/.gitignore @@ -0,0 +1,2 @@ +_* +cover*.out diff --git a/Godeps/_workspace/src/github.com/dalu/slug/README.md b/Godeps/_workspace/src/github.com/gosimple/slug/README.md similarity index 72% rename from Godeps/_workspace/src/github.com/dalu/slug/README.md rename to Godeps/_workspace/src/github.com/gosimple/slug/README.md index ddefc36ff04..a2649bdb170 100644 --- a/Godeps/_workspace/src/github.com/dalu/slug/README.md +++ b/Godeps/_workspace/src/github.com/gosimple/slug/README.md @@ -4,9 +4,10 @@ slug Package `slug` generate slug from unicode string, URL-friendly slugify with multiple languages support. -[![GoDoc](https://godoc.org/github.com/dalu/slug?status.png)](https://godoc.org/github.com/dalu/slug) +[![GoDoc](https://godoc.org/github.com/gosimple/slug?status.png)](https://godoc.org/github.com/gosimple/slug) +[![Build Status](https://drone.io/github.com/gosimple/slug/status.png)](https://drone.io/github.com/gosimple/slug/latest) -[Documentation online](http://godoc.org/github.com/dalu/slug) +[Documentation online](http://godoc.org/github.com/gosimple/slug) ## Example @@ -37,9 +38,12 @@ multiple languages support. fmt.Println(textSub) // Will print 'sand-is-hot' } +### Requests or bugs? + + ## Installation - go get -u github.com/dalu/slug + go get -u github.com/gosimple/slug ## License diff --git a/Godeps/_workspace/src/github.com/dalu/slug/default_substitution.go b/Godeps/_workspace/src/github.com/gosimple/slug/default_substitution.go similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/slug/default_substitution.go rename to Godeps/_workspace/src/github.com/gosimple/slug/default_substitution.go diff --git a/Godeps/_workspace/src/github.com/dalu/slug/doc.go b/Godeps/_workspace/src/github.com/gosimple/slug/doc.go similarity index 91% rename from Godeps/_workspace/src/github.com/dalu/slug/doc.go rename to Godeps/_workspace/src/github.com/gosimple/slug/doc.go index 39f57b30eb4..ffbe2c223f5 100644 --- a/Godeps/_workspace/src/github.com/dalu/slug/doc.go +++ b/Godeps/_workspace/src/github.com/gosimple/slug/doc.go @@ -12,7 +12,7 @@ Example: package main import( - "github.com/dalu/slug" + "github.com/gosimple/slug" "fmt" ) @@ -35,5 +35,9 @@ Example: textSub := slug.Make("water is hot") fmt.Println(textSub) // Will print 'sand-is-hot' } + +Requests or bugs? + +https://github.com/gosimple/slug/issues */ package slug diff --git a/Godeps/_workspace/src/github.com/dalu/slug/languages_substitution.go b/Godeps/_workspace/src/github.com/gosimple/slug/languages_substitution.go similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/slug/languages_substitution.go rename to Godeps/_workspace/src/github.com/gosimple/slug/languages_substitution.go diff --git a/Godeps/_workspace/src/github.com/dalu/slug/slug.go b/Godeps/_workspace/src/github.com/gosimple/slug/slug.go similarity index 98% rename from Godeps/_workspace/src/github.com/dalu/slug/slug.go rename to Godeps/_workspace/src/github.com/gosimple/slug/slug.go index 85d614f941e..b2c7d62514e 100644 --- a/Godeps/_workspace/src/github.com/dalu/slug/slug.go +++ b/Godeps/_workspace/src/github.com/gosimple/slug/slug.go @@ -6,9 +6,10 @@ package slug import ( - "github.com/dalu/unidecode" "regexp" "strings" + + "github.com/rainycape/unidecode" ) var ( diff --git a/Godeps/_workspace/src/github.com/dalu/slug/slug_test.go b/Godeps/_workspace/src/github.com/gosimple/slug/slug_test.go similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/slug/slug_test.go rename to Godeps/_workspace/src/github.com/gosimple/slug/slug_test.go diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/.gitignore b/Godeps/_workspace/src/github.com/rainycape/unidecode/.gitignore similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/unidecode/.gitignore rename to Godeps/_workspace/src/github.com/rainycape/unidecode/.gitignore diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/LICENSE b/Godeps/_workspace/src/github.com/rainycape/unidecode/LICENSE similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/unidecode/LICENSE rename to Godeps/_workspace/src/github.com/rainycape/unidecode/LICENSE diff --git a/Godeps/_workspace/src/github.com/rainycape/unidecode/README.md b/Godeps/_workspace/src/github.com/rainycape/unidecode/README.md new file mode 100644 index 00000000000..9a109bcfdb2 --- /dev/null +++ b/Godeps/_workspace/src/github.com/rainycape/unidecode/README.md @@ -0,0 +1,6 @@ +unidecode +========= + +Unicode transliterator in Golang - Replaces non-ASCII characters with their ASCII approximations. + +[![GoDoc](https://godoc.org/github.com/rainycape/unidecode?status.svg)](https://godoc.org/github.com/rainycape/unidecode) diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/decode.go b/Godeps/_workspace/src/github.com/rainycape/unidecode/decode.go similarity index 92% rename from Godeps/_workspace/src/github.com/dalu/unidecode/decode.go rename to Godeps/_workspace/src/github.com/rainycape/unidecode/decode.go index 028533bf425..fe74bf3d880 100644 --- a/Godeps/_workspace/src/github.com/dalu/unidecode/decode.go +++ b/Godeps/_workspace/src/github.com/rainycape/unidecode/decode.go @@ -5,12 +5,9 @@ import ( "encoding/binary" "io" "strings" - "sync" ) var ( - decoded = false - mutex sync.Mutex transliterations [65536][]rune transCount = rune(len(transliterations)) getUint16 = binary.LittleEndian.Uint16 diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/make_table.go b/Godeps/_workspace/src/github.com/rainycape/unidecode/make_table.go similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/unidecode/make_table.go rename to Godeps/_workspace/src/github.com/rainycape/unidecode/make_table.go diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/table.go b/Godeps/_workspace/src/github.com/rainycape/unidecode/table.go similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/unidecode/table.go rename to Godeps/_workspace/src/github.com/rainycape/unidecode/table.go diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/table.txt b/Godeps/_workspace/src/github.com/rainycape/unidecode/table.txt similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/unidecode/table.txt rename to Godeps/_workspace/src/github.com/rainycape/unidecode/table.txt diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/unidecode.go b/Godeps/_workspace/src/github.com/rainycape/unidecode/unidecode.go similarity index 86% rename from Godeps/_workspace/src/github.com/dalu/unidecode/unidecode.go rename to Godeps/_workspace/src/github.com/rainycape/unidecode/unidecode.go index fa414bb0954..f9d2d49d418 100644 --- a/Godeps/_workspace/src/github.com/dalu/unidecode/unidecode.go +++ b/Godeps/_workspace/src/github.com/rainycape/unidecode/unidecode.go @@ -4,15 +4,15 @@ package unidecode import ( + "sync" "unicode" - - "gopkgs.com/pool.v1" ) const pooledCapacity = 64 var ( - slicePool = pool.New(0) + slicePool sync.Pool + decodingOnce sync.Once ) // Unidecode implements a unicode transliterator, which @@ -23,14 +23,7 @@ var ( // with their closest ASCII counterparts. // e.g. Unicode("áéíóú") => "aeiou" func Unidecode(s string) string { - if !decoded { - mutex.Lock() - if !decoded { - decodeTransliterations() - decoded = true - } - mutex.Unlock() - } + decodingOnce.Do(decodeTransliterations) l := len(s) var r []rune if l > pooledCapacity { diff --git a/Godeps/_workspace/src/github.com/dalu/unidecode/unidecode_test.go b/Godeps/_workspace/src/github.com/rainycape/unidecode/unidecode_test.go similarity index 100% rename from Godeps/_workspace/src/github.com/dalu/unidecode/unidecode_test.go rename to Godeps/_workspace/src/github.com/rainycape/unidecode/unidecode_test.go diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/.gitignore b/Godeps/_workspace/src/gopkgs.com/pool.v1/.gitignore deleted file mode 100644 index 836562412fe..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/LICENSE b/Godeps/_workspace/src/gopkgs.com/pool.v1/LICENSE deleted file mode 100644 index ad410e11302..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/README.md b/Godeps/_workspace/src/gopkgs.com/pool.v1/README.md deleted file mode 100644 index f9c561dc067..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/README.md +++ /dev/null @@ -1,13 +0,0 @@ -pool -==== - -sync.Pool compatibility layer for for Go - falls back to a channel based pool in Go < 1.3 - - -Please, use the following import path to ensure a stable API: - -```go - import "gopkgs.com/pool.v1" -``` - -View other available versions, documentation and examples at http://gopkgs.com/pool diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/doc.go b/Godeps/_workspace/src/gopkgs.com/pool.v1/doc.go deleted file mode 100644 index 7546db7ac21..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package pool provides a sync.Pool compatibility layer, which -// falls back to a channel based pool on Go < 1.3. -package pool diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/example_test.go b/Godeps/_workspace/src/gopkgs.com/pool.v1/example_test.go deleted file mode 100644 index dff9d348b3f..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/example_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package pool_test - -import ( - "fmt" - - "gopkgs.com/pool.v1" -) - -func ExamplePool() { - p := pool.New(0) - p.Put("Hello") - fmt.Println(p.Get()) - // OutPut: Hello -} - -func ExamplePoolNew() { - p := pool.New(0) - p.New = func() interface{} { - return "World!" - } - fmt.Println(p.Get()) - // OutPut: World! -} diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/gopkgs.go b/Godeps/_workspace/src/gopkgs.com/pool.v1/gopkgs.go deleted file mode 100644 index 394a97806d6..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/gopkgs.go +++ /dev/null @@ -1,24 +0,0 @@ -package pool - -import ( - "fmt" - "reflect" -) - -// gopkgs.go: v1 - -// NOTE: This file is autogenerated by gopkgs.com. -const ( - goPkgsSrcPath = "github.com/rainycape/pool" - goPkgsName = "pool" - goPkgsErrFmt = "invalid import path %s - please use gopkgs.com/%s.v1 or see http://gopkgs.com/%s" -) - -type goPkgsCheck struct{} - -func init() { - typ := reflect.TypeOf(goPkgsCheck{}) - if typ.PkgPath() == goPkgsSrcPath { - panic(fmt.Errorf(goPkgsErrFmt, typ.PkgPath(), goPkgsName, goPkgsName)) - } -} diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/pool.go b/Godeps/_workspace/src/gopkgs.com/pool.v1/pool.go deleted file mode 100644 index 269a2afd919..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/pool.go +++ /dev/null @@ -1,37 +0,0 @@ -// +build go1.3,!appengine - -package pool - -import ( - "sync" -) - -// Pool is a thin compatibility type to allow Go -// libraries to use the new sync.Pool in Go 1.3, -// while remaining compatible with lower Go versions. -// For more information, see the sync.Pool type. -type Pool sync.Pool - -// New returns a new Pool. The size argument is -// ignored on Go >= 1.3. In Go < 1.3, if size is -// zero, it's set to runtime.GOMAXPROCS(0) * 2. -func New(size int) *Pool { - return &Pool{} -} - -// Get returns an arbitrary previously Put value, removing -// it from the pool, or nil if there are no such values. Note -// that callers should not assume anything about the Get return -// value, since the runtime might decide to collect the elements -// from the pool at any time. -// -// If there are no elements to return and the New() field is non-nil, -// Get returns the result of calling it. -func (p *Pool) Get() interface{} { - return (*sync.Pool)(p).Get() -} - -// Put adds x to the pool. -func (p *Pool) Put(x interface{}) { - (*sync.Pool)(p).Put(x) -} diff --git a/Godeps/_workspace/src/gopkgs.com/pool.v1/pool_go1.2.go b/Godeps/_workspace/src/gopkgs.com/pool.v1/pool_go1.2.go deleted file mode 100644 index 11c4e490a30..00000000000 --- a/Godeps/_workspace/src/gopkgs.com/pool.v1/pool_go1.2.go +++ /dev/null @@ -1,57 +0,0 @@ -// +build !go1.3 appengine - -package pool - -import ( - "runtime" -) - -// Pool is a thin compatibility type to allow Go -// libraries to use the new sync.Pool in Go 1.3, -// while remaining compatible with lower Go versions. -// For more information, see the sync.Pool type. -type Pool struct { - ch chan interface{} - // New specifies a function to generate - // a new value, when Get would otherwise - // return nil. - New func() interface{} -} - -// New returns a new Pool. The size argument is -// ignored on Go >= 1.3. In Go < 1.3, if size is -// zero, it's set to runtime.GOMAXPROCS(0) * 2. -func New(size int) *Pool { - if size == 0 { - size = runtime.GOMAXPROCS(0) * 2 - } - return &Pool{ch: make(chan interface{}, size)} -} - -// Get returns an arbitrary previously Put value, removing -// it from the pool, or nil if there are no such values. Note -// that callers should not assume anything about the Get return -// value, since the runtime might decide to collect the elements -// from the pool at any time. -// -// If there are no elements to return and the New() field is non-nil, -// Get returns the result of calling it. -func (p *Pool) Get() interface{} { - select { - case x := <-p.ch: - return x - default: - } - if p.New != nil { - return p.New() - } - return nil -} - -// Put adds x to the pool. -func (p *Pool) Put(x interface{}) { - select { - case p.ch <- x: - default: - } -} diff --git a/pkg/models/dashboards.go b/pkg/models/dashboards.go index b802eba7e1e..cdcc4d52364 100644 --- a/pkg/models/dashboards.go +++ b/pkg/models/dashboards.go @@ -5,7 +5,7 @@ import ( "strings" "time" - "github.com/dalu/slug" + "github.com/gosimple/slug" ) // Typed errors @@ -49,7 +49,7 @@ func NewDashboard(title string) *Dashboard { // GetTags turns the tags in data json into go string array func (dash *Dashboard) GetTags() []string { jsonTags := dash.Data["tags"] - if jsonTags == nil { + if jsonTags == nil || jsonTags == "" { return []string{} } diff --git a/pkg/models/dashboard_test.go b/pkg/models/dashboards_test.go similarity index 53% rename from pkg/models/dashboard_test.go rename to pkg/models/dashboards_test.go index 0828e51480f..b0b6796c4d8 100644 --- a/pkg/models/dashboard_test.go +++ b/pkg/models/dashboards_test.go @@ -15,4 +15,17 @@ func TestDashboardModel(t *testing.T) { So(dashboard.Slug, ShouldEqual, "grafana-play-home") }) + Convey("Given a dashboard json", t, func() { + json := map[string]interface{}{ + "title": "test dash", + } + + Convey("With tags as string value", func() { + json["tags"] = "" + dash := NewDashboardFromJson(json) + + So(len(dash.GetTags()), ShouldEqual, 0) + }) + }) + }