kvx 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/kvx.rb +40 -2
  5. metadata +4 -3
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eba4e11ed3b35dc3ee81ff63f45bc49fe4f5e040
4
- data.tar.gz: fc7289553f75bca79632a894aa312d1578270c89
3
+ metadata.gz: d243a687afd8e0ad9bf8c4e7a38a6eedd02a9ef4
4
+ data.tar.gz: 90cba2e99e6138b1dd2932d265f1fd1c5fb972af
5
5
  SHA512:
6
- metadata.gz: 9ad0f1a3d597acd378a908a487a7f03d112bbae88f308b72cb3c880ae375617244cea488ad4daf1f5f25574ac68d42f660a6e29209dcf6f68d2a22238aff5953
7
- data.tar.gz: c581a42a0920f2a477f2078baeb3fbc95cf57500fc60df3685e6c740b84aca2ea5c6690afe5d6dc6dd8f5042cfba3e87c769fbe8eca6bfb5a530266180448542
6
+ metadata.gz: cc950bc81d044d2d616733f3e95207dfc72b9236a1a411f5b41adaa5c0e0b64274fb064cb4e342b6b4704d1d5115eac58400b889d79d27843510b717a9acb0a9
7
+ data.tar.gz: ebdb9f57945a969d2a3a63a6b360608fb3922b4b9febbb6721811699a2822dd9cec0283e2aae59e4a451fc85bf9d621851d02b30687da1a99eb980c86fa92696
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/kvx.rb CHANGED
@@ -20,6 +20,7 @@ class Kvx
20
20
  def initialize(x, attributes: {})
21
21
 
22
22
  @header = false
23
+ @identifier = 'kvx'
23
24
  @attributes = attributes
24
25
  h = {hash: :passthru, :'rexle::element' => :hashify, string: :parse_to_h}
25
26
  @to_h = method(h[x.class.to_s.downcase.to_sym]).call x
@@ -29,6 +30,21 @@ class Kvx
29
30
  def parse(t=nil)
30
31
  parse_to_h(t || @to_s)
31
32
  end
33
+
34
+ def to_s()
35
+
36
+ header = ''
37
+
38
+ if @header then
39
+
40
+ header = '<?' + @identifier
41
+ header += ' ' + @attributes.map {|x| "%s='%s'" % x }.join(' ')
42
+ header += "?>\n\n"
43
+ end
44
+
45
+ header + scan_to_s(@to_h)
46
+
47
+ end
32
48
 
33
49
  def to_xml(options={pretty: true})
34
50
 
@@ -87,8 +103,17 @@ class Kvx
87
103
  a = s.strip.lines
88
104
 
89
105
  txt = if a[0] =~ header_pattern then
90
- raw_header = a.shift
91
- @attributes.merge! get_attributes(raw_header)
106
+
107
+ raw_header = a.shift
108
+ attr = get_attributes(raw_header)
109
+
110
+ if attr[:created] then
111
+ attr[:last_modified] = Time.now.to_s
112
+ else
113
+ attr[:created] = Time.now.to_s
114
+ end
115
+
116
+ @attributes.merge! attr
92
117
  @header = true
93
118
  a.join
94
119
  else
@@ -174,5 +199,18 @@ class Kvx
174
199
  end
175
200
 
176
201
  end
202
+
203
+ def scan_to_s(h, indent='')
204
+
205
+ a = h.inject([]) do |r, x|
206
+ if x.last.is_a? Hash then
207
+ r << x.first.to_s + ":\n" + scan_to_s(x.last, ' ')
208
+ else
209
+ r << "%s%s: %s" % [indent, *x]
210
+ end
211
+ end
212
+
213
+ @to_s = a.join("\n")
214
+ end
177
215
 
178
216
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kvx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,7 +31,7 @@ cert_chain:
31
31
  Vo86eJaJUXJbywrm97pYB2utyzWPyxJihIh0eFuNbCk+XOWfv6vUEyuXMiCsiyrF
32
32
  azRHJ6uLeQu4hw==
33
33
  -----END CERTIFICATE-----
34
- date: 2015-04-24 00:00:00.000000000 Z
34
+ date: 2015-04-28 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: line-tree
@@ -103,5 +103,6 @@ rubyforge_project:
103
103
  rubygems_version: 2.4.6
104
104
  signing_key:
105
105
  specification_version: 4
106
- summary: kvx
106
+ summary: Kvx (Keys, Attributes, and XML) makes it convenient to store and retrieve
107
+ the simplest of data as plain text using a hash-like format or as XML.
107
108
  test_files: []
metadata.gz.sig CHANGED
Binary file