View in color | License | Download script | History |
30-Apr 12:26 UTC
[0.073] 11.947k
[0.073] 11.947k
ini.rREBOL [
Title: "Load-ini"
Date: 9-Apr-2002
Version: 0.0.3
File: %ini.r
Author: "oldes"
Purpose: "Tries to load ini-structured file to Rebol"
Email: %oliva--david--seznam--cz
note: {This is just simple version that doesn't work with more complex files containing multiline strings or arrays!}
library: [
level: none
platform: none
type: 'tool
domain: 'DB
tested-under: none
support: none
license: none
see-also: none
]
]
load-ini: func[
"Tries to load ini-structured file to Rebol"
ini-file [file! string! url!] "File to parse"
/local _sp _allchars _space _comm _section _property
data tmp section property value new-sect
][
_sp: charset [#" " #"^-"]
_allchars: complement charset [#"^/" #"="]
_space: [some _sp]
_comm: [
opt _space [#"#" | #";"] copy comm [to newline | to end] (if none? comm [comm: ""])
]
_blankline: [ opt _space opt _comm newline]
_section: [opt newline opt _space #"[" copy newsection to #"]" skip opt _space]
_property: [opt newline opt _space
copy property to #"=" skip
copy value [to newline | end]
]
data: make block! []
tmp: make block! []
section: value: none
if not string? ini-file [ini-file: read ini-file]
new-sect: func[][
if section <> none [
repend data [section copy tmp]
]
clear tmp
]
parse ini-file [
some [
_comm ;(print ["comm:" comm])
| _blankline
| _section (
new-sect
section: copy newsection
error? try [section: to-word section]
;probe section
)
| _property (
value: either none? value [none][
value: trim value
error? try [if not empty? value [value: load value]]
value
]
property: trim/tail property
error? try [property: to-word property]
;print ["pr:" tab property "=" value]
repend tmp [property value]
value: none
)
]
(new-sect)
]
data
] Notes
|