Class: Json2properties

Inherits:
Object
  • Object
show all
Defined in:
lib/json2properties.rb

Constant Summary collapse

VERSION =
'0.0.4'
SEPARATOR =
'.'

Instance Method Summary collapse

Constructor Details

#initializeJson2properties

Returns a new instance of Json2properties.



30
31
32
# File 'lib/json2properties.rb', line 30

def initialize
  reset_state
end

Instance Method Details

#convert_file(src, dest) ⇒ Object

json => properites



35
36
37
# File 'lib/json2properties.rb', line 35

def convert_file(src, dest)
  JavaProperties.write(json2kv(File.read(src)), dest)
end

#json2kv(json) ⇒ Object

json string => flat k-v hash



46
47
48
49
50
51
# File 'lib/json2properties.rb', line 46

def json2kv(json)
  reset_state
  data = JSON.parse(json)
  process_json_hash(data)
  @ret
end

#kv2json(kv) ⇒ Object

flat k-v hash => json string



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/json2properties.rb', line 54

def kv2json(kv)
  reset_state
  kv.stringify_keys!
  ret = {}
  kv.each_pair do |k,v|
    tmp = ret
    parts = k.split(SEPARATOR)
    parts.each_index do |i|
      part = parts[i]
      next_part = parts[i+1]

      part = part.to_i if ( part.is_i? && !part.is_numeric_leading_zero? )
      if tmp[part].nil?
        if next_part.nil?
          tmp[part] = fix_type(v)
        elsif next_part.is_i? && !next_part.is_numeric_leading_zero?
          tmp[part] = []
        else
          tmp[part] = {}
        end
      end
      tmp = tmp[part]
    end
  end
  JSON.pretty_generate(ret)
end

#unconvert_file(src, dest) ⇒ Object

properites => json



40
41
42
43
# File 'lib/json2properties.rb', line 40

def unconvert_file(src, dest)
  kv = JavaProperties.load(src)
  File.write(dest, kv2json(kv))
end