json2properties 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/json2properties +1 -1
- data/bin/properties2json +6 -0
- data/lib/json2properties.rb +69 -7
- data/lib/json2properties_cli.rb +14 -3
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce4e12d23e2781e874254350edd145a45772dbc1
|
4
|
+
data.tar.gz: 86585c38a402169b8f7d68dec5cca19df0969b8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b72d55af9793187ba60ba3b219cc29db1941816085221ba44c10c6dbf79bf80db77be6754bc88da45dee99fbf77f405316fbe891f5bccc7a18e4ff0a294de5a1
|
7
|
+
data.tar.gz: b7d45b5e2c8647a220872e48f858ace322d24767467c3d4b7f8a617d5d2989230f1769b91508c6b8f8b012cf8ad8aeb6b7276f72bc98f7da0671865f82029f9e
|
data/bin/json2properties
CHANGED
data/bin/properties2json
ADDED
data/lib/json2properties.rb
CHANGED
@@ -1,38 +1,100 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'java-properties'
|
3
|
+
require 'active_support'
|
4
|
+
require 'active_support/core_ext/hash'
|
5
|
+
|
6
|
+
class String
|
7
|
+
def is_i?
|
8
|
+
/\A\d+\z/ === self
|
9
|
+
end
|
10
|
+
|
11
|
+
def is_numeric?
|
12
|
+
return true if self.is_i?
|
13
|
+
true if Float(self) rescue false
|
14
|
+
end
|
15
|
+
end
|
3
16
|
|
4
17
|
class Json2properties
|
5
|
-
VERSION = '0.0.
|
18
|
+
VERSION = '0.0.2'
|
6
19
|
SEPARATOR = '.'
|
7
20
|
|
8
21
|
def initialize
|
9
|
-
|
10
|
-
@ret = {}
|
22
|
+
reset_state
|
11
23
|
end
|
12
24
|
|
25
|
+
# json => properites
|
13
26
|
def convert_file(src, dest)
|
14
27
|
JavaProperties.write(json2kv(File.read(src)), dest)
|
15
28
|
end
|
16
29
|
|
30
|
+
# properites => json
|
31
|
+
def unconvert_file(src, dest)
|
32
|
+
kv = JavaProperties.load(src)
|
33
|
+
File.write(dest, kv2json(kv))
|
34
|
+
end
|
35
|
+
|
36
|
+
# json string => flat k-v hash
|
17
37
|
def json2kv(json)
|
38
|
+
reset_state
|
18
39
|
data = JSON.parse(json)
|
19
|
-
|
40
|
+
process_json_hash(data)
|
20
41
|
@ret
|
21
42
|
end
|
22
43
|
|
44
|
+
# flat k-v hash => json string
|
45
|
+
def kv2json(kv)
|
46
|
+
reset_state
|
47
|
+
kv.stringify_keys!
|
48
|
+
ret = {}
|
49
|
+
kv.each_pair do |k,v|
|
50
|
+
tmp = ret
|
51
|
+
parts = k.split(SEPARATOR)
|
52
|
+
parts.each_index do |i|
|
53
|
+
part = parts[i]
|
54
|
+
next_part = parts[i+1]
|
55
|
+
|
56
|
+
part = part.to_i if part.is_i?
|
57
|
+
if tmp[part].nil?
|
58
|
+
if next_part.nil?
|
59
|
+
tmp[part] = fix_type(v)
|
60
|
+
elsif next_part.is_i?
|
61
|
+
tmp[part] = []
|
62
|
+
else
|
63
|
+
tmp[part] = {}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
tmp = tmp[part]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
JSON.pretty_generate(ret)
|
70
|
+
end
|
71
|
+
|
23
72
|
private
|
24
73
|
|
25
|
-
def
|
74
|
+
def fix_type(v)
|
75
|
+
return v.to_i if v.is_i?
|
76
|
+
return v.to_f if v.is_numeric?
|
77
|
+
return true if v == "true"
|
78
|
+
return false if v == "false"
|
79
|
+
v
|
80
|
+
end
|
81
|
+
|
82
|
+
def reset_state
|
83
|
+
@prefix = ''
|
84
|
+
@ret = {}
|
85
|
+
end
|
86
|
+
|
87
|
+
def process_json_hash(data, prefix='')
|
26
88
|
if data.is_a?(Array)
|
27
89
|
data.each_index do |k|
|
28
90
|
v = data[k]
|
29
91
|
key = prefix.empty? ? k : prefix+SEPARATOR+k.to_s
|
30
|
-
|
92
|
+
process_json_hash(v, key)
|
31
93
|
end
|
32
94
|
elsif data.is_a?(Hash)
|
33
95
|
data.each_pair do |k,v|
|
34
96
|
key = prefix.empty? ? k : prefix+SEPARATOR+k.to_s
|
35
|
-
|
97
|
+
process_json_hash(v, key)
|
36
98
|
end
|
37
99
|
else
|
38
100
|
@ret[prefix] = data
|
data/lib/json2properties_cli.rb
CHANGED
@@ -8,16 +8,27 @@ class Json2propertiesCli
|
|
8
8
|
@dest = @argv[1] || ''
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def unconvert_file
|
12
|
+
validate_argv('properties2json')
|
13
|
+
Json2properties.new.unconvert_file(@src, @dest)
|
14
|
+
end
|
15
|
+
|
16
|
+
def convert_file
|
17
|
+
validate_argv('json2properties')
|
18
|
+
Json2properties.new.convert_file(@src, @dest)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def validate_argv(mode)
|
12
24
|
if @src.empty? || @dest.empty?
|
13
|
-
STDERR.puts "Usage:
|
25
|
+
STDERR.puts "Usage: #{mode} <SRC_FILE> <DEST_FILE>"
|
14
26
|
exit 1
|
15
27
|
end
|
16
28
|
unless File.exists? @src
|
17
29
|
STDERR.puts "Given source file doesn't exist: #{@src}"
|
18
30
|
exit 1
|
19
31
|
end
|
20
|
-
Json2properties.new.convert_file(@src, @dest)
|
21
32
|
end
|
22
33
|
|
23
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json2properties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bartek Wilczek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: java-properties
|
@@ -24,15 +24,31 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
27
41
|
description:
|
28
42
|
email:
|
29
43
|
- bwilczek@gmail.com
|
30
44
|
executables:
|
31
45
|
- json2properties
|
46
|
+
- properties2json
|
32
47
|
extensions: []
|
33
48
|
extra_rdoc_files: []
|
34
49
|
files:
|
35
50
|
- bin/json2properties
|
51
|
+
- bin/properties2json
|
36
52
|
- lib/json2properties.rb
|
37
53
|
- lib/json2properties_cli.rb
|
38
54
|
homepage: https://github.com/bwilczek/json2properties
|