Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
9c4414f9
Commit
9c4414f9
authored
Nov 29, 2013
by
astaxie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #323 from pengfei-xue/devel
case insensitive for section and key for ini config
parents
0ba36763
8e7fe8bb
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
2 deletions
+18
-2
ini.go
config/ini.go
+14
-2
ini_test.go
config/ini_test.go
+4
-0
No files found.
config/ini.go
View file @
9c4414f9
...
@@ -13,7 +13,7 @@ import (
...
@@ -13,7 +13,7 @@ import (
)
)
var
(
var
(
DEFAULT_SECTION
=
"
DEFAULT
"
DEFAULT_SECTION
=
"
default
"
bNumComment
=
[]
byte
{
'#'
}
// number sign
bNumComment
=
[]
byte
{
'#'
}
// number sign
bSemComment
=
[]
byte
{
';'
}
// semicolon
bSemComment
=
[]
byte
{
';'
}
// semicolon
bEmpty
=
[]
byte
{}
bEmpty
=
[]
byte
{}
...
@@ -75,6 +75,7 @@ func (ini *IniConfig) Parse(name string) (ConfigContainer, error) {
...
@@ -75,6 +75,7 @@ func (ini *IniConfig) Parse(name string) (ConfigContainer, error) {
if
bytes
.
HasPrefix
(
line
,
sectionStart
)
&&
bytes
.
HasSuffix
(
line
,
sectionEnd
)
{
if
bytes
.
HasPrefix
(
line
,
sectionStart
)
&&
bytes
.
HasSuffix
(
line
,
sectionEnd
)
{
section
=
string
(
line
[
1
:
len
(
line
)
-
1
])
section
=
string
(
line
[
1
:
len
(
line
)
-
1
])
section
=
strings
.
ToLower
(
section
)
// section name case insensitive
if
comment
.
Len
()
>
0
{
if
comment
.
Len
()
>
0
{
cfg
.
sectionComment
[
section
]
=
comment
.
String
()
cfg
.
sectionComment
[
section
]
=
comment
.
String
()
comment
.
Reset
()
comment
.
Reset
()
...
@@ -92,7 +93,8 @@ func (ini *IniConfig) Parse(name string) (ConfigContainer, error) {
...
@@ -92,7 +93,8 @@ func (ini *IniConfig) Parse(name string) (ConfigContainer, error) {
val
=
bytes
.
Trim
(
val
,
`"`
)
val
=
bytes
.
Trim
(
val
,
`"`
)
}
}
key
:=
string
(
bytes
.
TrimSpace
(
keyval
[
0
]))
key
:=
string
(
bytes
.
TrimSpace
(
keyval
[
0
]))
// key name case insensitive
key
=
strings
.
ToLower
(
key
)
cfg
.
data
[
section
][
key
]
=
string
(
val
)
cfg
.
data
[
section
][
key
]
=
string
(
val
)
if
comment
.
Len
()
>
0
{
if
comment
.
Len
()
>
0
{
cfg
.
keycomment
[
section
+
"."
+
key
]
=
comment
.
String
()
cfg
.
keycomment
[
section
+
"."
+
key
]
=
comment
.
String
()
...
@@ -115,25 +117,30 @@ type IniConfigContainer struct {
...
@@ -115,25 +117,30 @@ type IniConfigContainer struct {
// Bool returns the boolean value for a given key.
// Bool returns the boolean value for a given key.
func
(
c
*
IniConfigContainer
)
Bool
(
key
string
)
(
bool
,
error
)
{
func
(
c
*
IniConfigContainer
)
Bool
(
key
string
)
(
bool
,
error
)
{
key
=
strings
.
ToLower
(
key
)
return
strconv
.
ParseBool
(
c
.
getdata
(
key
))
return
strconv
.
ParseBool
(
c
.
getdata
(
key
))
}
}
// Int returns the integer value for a given key.
// Int returns the integer value for a given key.
func
(
c
*
IniConfigContainer
)
Int
(
key
string
)
(
int
,
error
)
{
func
(
c
*
IniConfigContainer
)
Int
(
key
string
)
(
int
,
error
)
{
key
=
strings
.
ToLower
(
key
)
return
strconv
.
Atoi
(
c
.
getdata
(
key
))
return
strconv
.
Atoi
(
c
.
getdata
(
key
))
}
}
func
(
c
*
IniConfigContainer
)
Int64
(
key
string
)
(
int64
,
error
)
{
func
(
c
*
IniConfigContainer
)
Int64
(
key
string
)
(
int64
,
error
)
{
key
=
strings
.
ToLower
(
key
)
return
strconv
.
ParseInt
(
c
.
getdata
(
key
),
10
,
64
)
return
strconv
.
ParseInt
(
c
.
getdata
(
key
),
10
,
64
)
}
}
// Float returns the float value for a given key.
// Float returns the float value for a given key.
func
(
c
*
IniConfigContainer
)
Float
(
key
string
)
(
float64
,
error
)
{
func
(
c
*
IniConfigContainer
)
Float
(
key
string
)
(
float64
,
error
)
{
key
=
strings
.
ToLower
(
key
)
return
strconv
.
ParseFloat
(
c
.
getdata
(
key
),
64
)
return
strconv
.
ParseFloat
(
c
.
getdata
(
key
),
64
)
}
}
// String returns the string value for a given key.
// String returns the string value for a given key.
func
(
c
*
IniConfigContainer
)
String
(
key
string
)
string
{
func
(
c
*
IniConfigContainer
)
String
(
key
string
)
string
{
key
=
strings
.
ToLower
(
key
)
return
c
.
getdata
(
key
)
return
c
.
getdata
(
key
)
}
}
...
@@ -144,7 +151,9 @@ func (c *IniConfigContainer) Set(key, value string) error {
...
@@ -144,7 +151,9 @@ func (c *IniConfigContainer) Set(key, value string) error {
if
len
(
key
)
==
0
{
if
len
(
key
)
==
0
{
return
errors
.
New
(
"key is empty"
)
return
errors
.
New
(
"key is empty"
)
}
}
var
section
,
k
string
var
section
,
k
string
key
=
strings
.
ToLower
(
key
)
sectionkey
:=
strings
.
Split
(
key
,
"."
)
sectionkey
:=
strings
.
Split
(
key
,
"."
)
if
len
(
sectionkey
)
>=
2
{
if
len
(
sectionkey
)
>=
2
{
section
=
sectionkey
[
0
]
section
=
sectionkey
[
0
]
...
@@ -158,6 +167,7 @@ func (c *IniConfigContainer) Set(key, value string) error {
...
@@ -158,6 +167,7 @@ func (c *IniConfigContainer) Set(key, value string) error {
}
}
func
(
c
*
IniConfigContainer
)
DIY
(
key
string
)
(
v
interface
{},
err
error
)
{
func
(
c
*
IniConfigContainer
)
DIY
(
key
string
)
(
v
interface
{},
err
error
)
{
key
=
strings
.
ToLower
(
key
)
if
v
,
ok
:=
c
.
data
[
key
];
ok
{
if
v
,
ok
:=
c
.
data
[
key
];
ok
{
return
v
,
nil
return
v
,
nil
}
}
...
@@ -171,7 +181,9 @@ func (c *IniConfigContainer) getdata(key string) string {
...
@@ -171,7 +181,9 @@ func (c *IniConfigContainer) getdata(key string) string {
if
len
(
key
)
==
0
{
if
len
(
key
)
==
0
{
return
""
return
""
}
}
var
section
,
k
string
var
section
,
k
string
key
=
strings
.
ToLower
(
key
)
sectionkey
:=
strings
.
Split
(
key
,
"."
)
sectionkey
:=
strings
.
Split
(
key
,
"."
)
if
len
(
sectionkey
)
>=
2
{
if
len
(
sectionkey
)
>=
2
{
section
=
sectionkey
[
0
]
section
=
sectionkey
[
0
]
...
...
config/ini_test.go
View file @
9c4414f9
...
@@ -18,6 +18,7 @@ copyrequestbody = true
...
@@ -18,6 +18,7 @@ copyrequestbody = true
[demo]
[demo]
key1="asta"
key1="asta"
key2 = "xie"
key2 = "xie"
CaseInsensitive = true
`
`
func
TestIni
(
t
*
testing
.
T
)
{
func
TestIni
(
t
*
testing
.
T
)
{
...
@@ -74,4 +75,7 @@ func TestIni(t *testing.T) {
...
@@ -74,4 +75,7 @@ func TestIni(t *testing.T) {
if
iniconf
.
String
(
"demo.key2"
)
!=
"xie"
{
if
iniconf
.
String
(
"demo.key2"
)
!=
"xie"
{
t
.
Fatal
(
"get demo.key2 error"
)
t
.
Fatal
(
"get demo.key2 error"
)
}
}
if
v
,
err
:=
iniconf
.
Bool
(
"demo.caseinsensitive"
);
err
!=
nil
||
v
!=
true
{
t
.
Fatal
(
"get demo.caseinsensitive error"
)
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment