abroad 1.0.0 → 2.0.0

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 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