pycf 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/lib/pycf/load.rb +19 -1
- data/lib/pycf/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d02d3ea0673f785638d581d9d4ac198e4def402
|
4
|
+
data.tar.gz: bdbb984a80364bce07c74fc269a0674c17d1b4a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: caec96e47826a53b52983a2218dc8fcfe767e2722c683ff766f0679a3f660edaafae5219f83625d48a4ef5d6c3527d37a35ad25223b5e234a72e458d27df0c3e
|
7
|
+
data.tar.gz: 2d91547ffff92d4c58f706a12612e8be94d7dcf278a8dfbfd914da209925fa26e6b97f0f35ac7bb66fa8e62dc942b3971cdccc513cfd374551905257b793a937
|
data/README.md
CHANGED
@@ -82,3 +82,23 @@ puts Pycf.dump(hash)
|
|
82
82
|
# port = 50022
|
83
83
|
# forwardx11 = no
|
84
84
|
```
|
85
|
+
|
86
|
+
### Interpolation
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
require 'pycf'
|
90
|
+
|
91
|
+
python_config = <<EOS
|
92
|
+
[My Section]
|
93
|
+
foodir: %(dir)s/whatever
|
94
|
+
dir=frob
|
95
|
+
long: this value continues
|
96
|
+
in the next line
|
97
|
+
EOS
|
98
|
+
|
99
|
+
p Pycf.load(python_config, interpolation: true)
|
100
|
+
# => {"My Section"=>
|
101
|
+
# {"foodir"=>"frob/whatever",
|
102
|
+
# "dir"=>"frob",
|
103
|
+
# "long"=>"this value continues\nin the next line"}}
|
104
|
+
```
|
data/lib/pycf/load.rb
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
# (License: https://github.com/python/cpython/blob/2.7/LICENSE)
|
3
3
|
module Pycf
|
4
4
|
SECTCRE = /\A\[(?<header>[^\]]+)\]/
|
5
|
-
OPTCRE_NV = /\A(?<option>[^:=\s][^:=]*)\s*(?:(?<vi>[:=])\s*(?<value>.*))?\z/
|
5
|
+
OPTCRE_NV = /\A(?<option>[^:=\s][^:=]*)\s*(?:(?<vi>[:=])\s*(?<value>.*))?\z/
|
6
|
+
KEYCRE = /(\A|.)%\(([^)]+)\)s/
|
6
7
|
|
7
8
|
def load(python_config, option = {})
|
8
9
|
hash = {}
|
@@ -64,6 +65,23 @@ module Pycf
|
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
68
|
+
if option[:interpolation]
|
69
|
+
hash.each do |section, key_values|
|
70
|
+
key_values.each do |key, value|
|
71
|
+
value.gsub!(/(\A|.)%\(([^)]+)\)s/) do
|
72
|
+
preword = $1
|
73
|
+
key = $2
|
74
|
+
|
75
|
+
if preword == '%'
|
76
|
+
"%(#{key})s"
|
77
|
+
else
|
78
|
+
key_values[key.downcase]
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
67
85
|
hash
|
68
86
|
end
|
69
87
|
module_function :load
|
data/lib/pycf/version.rb
CHANGED