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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08c37334c89642984bb15ba5505ac99d022c6659
4
- data.tar.gz: f2d4f470e88cb78a17a3595301609d0308ffd129
3
+ metadata.gz: 4d02d3ea0673f785638d581d9d4ac198e4def402
4
+ data.tar.gz: bdbb984a80364bce07c74fc269a0674c17d1b4a3
5
5
  SHA512:
6
- metadata.gz: 5046dae9c6e705bcb6e3ce66cd66be08f7851a20404d38323a0b6a29f9a2acb977af7fd64526a4793b75011fc57f83a850015f3e55ba56b448857e2feb098f8d
7
- data.tar.gz: 953cf4888e1f9ed2e22b641a3055d0582f20ca253ad610ea058c190d25f2ea8e16ccb548d1717a0040b7d00a2b3eacacca43e14991a689e0bf1586b06ddc4021
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/ # everything up to eol
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
@@ -1,3 +1,3 @@
1
1
  module Pycf
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pycf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara