abroad 1.0.0 → 2.0.0

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: 83e4de2f30d6fd16a710df079d0bc64f3f76da4c
4
- data.tar.gz: 9afb235066836270d5eace94db8d5a815ed2c538
3
+ metadata.gz: 9731caa5a7b93f80d4c645f1ba4dba2c4c5b67e2
4
+ data.tar.gz: b1eb57a7cf845b3f5a3f5fd42a04cc41bffda129
5
5
  SHA512:
6
- metadata.gz: aa9ccf3bee54d01500b3ecf996d8dcaeed5ae6fb0a27de1adc7d1a31c63797ccd1083432ee5d03132358aba65f7a721282a25947beda6bdf063c17b47bcedd0d
7
- data.tar.gz: 5db0947ad41a62c6d3efeeb5ed11e7705fee237eeeebd6e524b7d77418a95b87d5788fac61479f36786f952e2ba85f22fde845c4eff870284d5e91670a237230
6
+ metadata.gz: 91c0440e7e892a0d6125d804d8e53d75d3b2fe9b3435d853b35fcc01a21171d5b65135b55260c0b39a73b2ebfd40cdd6d0ab1e0aab364238a82e64f48cba170b
7
+ data.tar.gz: 122b2a67fc231964aebf5a167845722138b3326caff0e9b84b3c3828cfa0f456c927be112d3abb57e2d6affe19bd115785ffaab3ca32d7ce60e2b82e2ec94338
data/README.md CHANGED
@@ -88,7 +88,7 @@ Abroad.extractors # => ["yaml/rails", "xml/android", ...]
88
88
  While extractors pull strings out of localization files, serializers write them back in. Serializers conform to a similar interface, but offer different methods to write content out to the stream:
89
89
 
90
90
  ```ruby
91
- Abroad.serializer('yaml/rails').open('/path/to/es.yml') do |serializer|
91
+ Abroad.serializer('yaml/rails').open('/path/to/es.yml', :es) do |serializer|
92
92
  serializer.write_key_value('welcome.message', 'hola')
93
93
  serializer.write_key_value('goodbye.message', 'adios')
94
94
  end
@@ -102,7 +102,7 @@ Here's an example with all the steps broken down:
102
102
 
103
103
  ```ruby
104
104
  serializer_klass = Abroad.serializer('yaml/rails')
105
- serializer = serializer_klass.open('/path/to/es.yml')
105
+ serializer = serializer_klass.open('/path/to/es.yml', :es)
106
106
  serializer.write_key_value('welcome.message', 'hola')
107
107
  serializer.write_key_value('goodbye.message', 'adios')
108
108
  serializer.close
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.add_dependency 'htmlentities', '~> 4.0'
17
17
  s.add_dependency 'json-stream', '~> 0.0'
18
- s.add_dependency 'json-write-stream', '~> 1.0'
18
+ s.add_dependency 'json-write-stream', '~> 1.1'
19
19
  s.add_dependency 'nokogiri', '~> 1.0'
20
20
  s.add_dependency 'xml-write-stream', '~> 1.0'
21
21
  s.add_dependency 'yaml-write-stream', '~> 1.0'
@@ -7,7 +7,7 @@ module Abroad
7
7
  class JsonSerializer < Serializer
8
8
  attr_reader :writer
9
9
 
10
- def initialize(stream, locale, encoding = Encoding::UTF_8)
10
+ def initialize(stream, locale, options = {})
11
11
  super
12
12
  @writer = JsonWriteStream.from_stream(stream, encoding)
13
13
  end
@@ -3,16 +3,36 @@ module Abroad
3
3
  module Json
4
4
 
5
5
  class KeyValueSerializer < JsonSerializer
6
- def initialize(stream, locale, encoding = Encoding::UTF_8)
6
+ DEFAULT_INDENT_SPACES = 4
7
+
8
+ def initialize(stream, locale, options = {})
7
9
  super
8
10
  writer.write_object
9
11
  end
10
12
 
11
13
  def write_key_value(key, value)
14
+ before = pretty? ? "\n#{' ' * indent_spaces}" : ''
15
+
12
16
  writer.write_key_value(
13
- key.encode(encoding), value.encode(encoding)
17
+ key.encode(encoding), value.encode(encoding), before
14
18
  )
15
19
  end
20
+
21
+ def close
22
+ write_raw("\n") if pretty?
23
+ writer.close_object
24
+ super
25
+ end
26
+
27
+ private
28
+
29
+ def indent_spaces
30
+ options.fetch(:indent_spaces, DEFAULT_INDENT_SPACES)
31
+ end
32
+
33
+ def pretty?
34
+ options.fetch(:pretty, true)
35
+ end
16
36
  end
17
37
 
18
38
  end
@@ -2,7 +2,9 @@ module Abroad
2
2
  module Serializers
3
3
 
4
4
  class Serializer
5
- attr_reader :stream, :locale, :encoding
5
+ DEFAULT_ENCODING = Encoding::UTF_8
6
+
7
+ attr_reader :stream, :locale, :options
6
8
 
7
9
  class << self
8
10
  def from_stream(stream, locale)
@@ -22,10 +24,14 @@ module Abroad
22
24
  end
23
25
  end
24
26
 
25
- def initialize(stream, locale, encoding = Encoding::UTF_8)
27
+ def initialize(stream, locale, options = {})
26
28
  @stream = stream
27
29
  @locale = locale
28
- @encoding = encoding
30
+ @options = options
31
+ end
32
+
33
+ def encoding
34
+ options.fetch(:encoding, DEFAULT_ENCODING)
29
35
  end
30
36
 
31
37
  def write_key_value(key, value)
@@ -7,7 +7,7 @@ module Abroad
7
7
  class XmlSerializer < Serializer
8
8
  attr_reader :writer
9
9
 
10
- def initialize(stream, locale, encoding = Encoding::UTF_8)
10
+ def initialize(stream, locale, options = {})
11
11
  super
12
12
  @writer = XmlWriteStream.from_stream(stream)
13
13
  writer.write_header(encoding: encoding.to_s)
@@ -5,7 +5,7 @@ module Abroad
5
5
  class RailsSerializer < YamlSerializer
6
6
  attr_reader :trie
7
7
 
8
- def initialize(stream, locale, encoding = Encoding::UTF_8)
8
+ def initialize(stream, locale, options = {})
9
9
  super
10
10
  @trie = Abroad::Serializers::Trie.new
11
11
  end
@@ -8,7 +8,7 @@ module Abroad
8
8
  class YamlSerializer < Serializer
9
9
  attr_reader :writer
10
10
 
11
- def initialize(stream, locale, encoding = Encoding::UTF_8)
11
+ def initialize(stream, locale, options = {})
12
12
  super
13
13
  @writer = YamlWriteStream.from_stream(stream, encoding)
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module Abroad
2
- VERSION = '1.0.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -21,6 +21,6 @@ describe Json::KeyValueSerializer do
21
21
  serializer.write_key_value('foo', 'bar')
22
22
  end
23
23
 
24
- expect(result).to eq('{"foo":"bar"}')
24
+ expect(result).to eq("{\n \"foo\":\"bar\"}")
25
25
  end
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abroad
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-21 00:00:00.000000000 Z
11
+ date: 2016-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: htmlentities
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.0'
47
+ version: '1.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.0'
54
+ version: '1.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement