tr4n5l4te 0.1.8 → 0.1.9

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
  SHA256:
3
- metadata.gz: 31315930a643f75755dcf9f2519553049ba3b8df2f4bf692190245781b276c53
4
- data.tar.gz: 3a09ca03ca46a0fa256f81cef8196239155daeb35dd9fbe3da6d9dd4d3bb6b72
3
+ metadata.gz: 45d5c65129cb215f8944b57099506e55d8d52de535b72aaad71d2307a3fda211
4
+ data.tar.gz: 6a6415d824135ab7135799dc94ac67df1643a00ec942b5ac72df56fb4fa5e5ec
5
5
  SHA512:
6
- metadata.gz: 3baeae8f21ab55ff7c6593e126830a555d8d70d073a1ad5bd066e12aa2f242496902bd38d621837da68275085551da7abf37474d1b488003b231c97a1aca7e1c
7
- data.tar.gz: 9f075f32d79b0ececc80b9879c2d658ecc3e2cd2f2b1dbf116d8ef5be244dd916ea7ad726b0317ad6defd35e631e70dee09b03321bcaf8ec9fa5a33faa7b0465
6
+ metadata.gz: f7e4c5013a566196776e9baf20aa9aa9b901dd941c80098a591cd5c8bf14a521aa057ab536822af225a6939ebd7c87dd8339feb2a2b2385fe84d220e0fad591f
7
+ data.tar.gz: 5d6b0d6f2d60d048c3136155bafba29620a959dcafc2f3b02d0ba624a962580b8654f3036572a25fe1507fab44a8b6dab1cc421cb405fb70d793c291b6f24d6b
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ *0.1.9* (March 05, 2020)
2
+
3
+ * The top-level primary language key was being propagated from the source .yml file to the translated target .yml file. That is now fixed.
4
+ * Now keeps the interpolation tags intact.
5
+
1
6
  *0.1.8* (February 21, 2020)
2
7
 
3
8
  * Address ambiguous translations without stopping the run when the exception occurs.
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tr4n5l4te (0.1.8)
4
+ tr4n5l4te (0.1.9)
5
5
  capybara (~> 2.6)
6
6
  colored (~> 1)
7
7
  midwire_common (~> 0.1)
8
- optimist
8
+ optimist (~> 3.0)
9
9
  poltergeist (~> 1.9)
10
10
 
11
11
  GEM
@@ -33,7 +33,7 @@ GEM
33
33
  thor (~> 0.19)
34
34
  mini_mime (1.0.2)
35
35
  mini_portile2 (2.4.0)
36
- nokogiri (1.10.7)
36
+ nokogiri (1.10.8)
37
37
  mini_portile2 (~> 2.4.0)
38
38
  optimist (3.0.0)
39
39
  parallel (1.19.1)
@@ -53,7 +53,7 @@ GEM
53
53
  rack-test (1.1.0)
54
54
  rack (>= 1.0, < 3)
55
55
  rainbow (3.0.0)
56
- rake (10.5.0)
56
+ rake (13.0.1)
57
57
  rspec (3.9.0)
58
58
  rspec-core (~> 3.9.0)
59
59
  rspec-expectations (~> 3.9.0)
@@ -94,7 +94,7 @@ PLATFORMS
94
94
  DEPENDENCIES
95
95
  bundler (~> 2.0.1)
96
96
  pry-nav
97
- rake (~> 10.0)
97
+ rake (~> 13.0)
98
98
  rspec (~> 3.0)
99
99
  rubocop
100
100
  simplecov (~> 0.11)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Tr4n5l4te
2
2
 
3
- **Version: 0.1.8**
3
+ **Version: 0.1.9**
4
4
 
5
5
  Use Google Translate without an API key.
6
6
 
data/bin/console CHANGED
@@ -7,8 +7,8 @@ require 'tr4n5l4te'
7
7
  # with your gem easier. You can also use a different console, if you like.
8
8
 
9
9
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
10
+ require 'pry'
11
+ Pry.start
12
12
 
13
- require 'irb'
14
- IRB.start
13
+ # require 'irb'
14
+ # IRB.start
@@ -4,6 +4,7 @@ require 'optimist'
4
4
  require 'colored'
5
5
  require 'fileutils'
6
6
  require 'midwire_common/string'
7
+ require 'pry' unless ENV.fetch('GEM_ENV', nil).nil?
7
8
 
8
9
  module Tr4n5l4te
9
10
  class Runner
@@ -30,7 +31,7 @@ module Tr4n5l4te
30
31
 
31
32
  hash = YAML.load_file(options[:yaml_file])
32
33
  translated = process(hash)
33
- store_translation(translated)
34
+ store_translation(replace_lang_key(translated))
34
35
 
35
36
  puts("Processed #{@count} strings in [#{Time.now - start_time}] seconds.".yellow)
36
37
  end
@@ -47,7 +48,7 @@ module Tr4n5l4te
47
48
 
48
49
  def translate(string)
49
50
  @count += 1
50
- puts("[#{string}]") if options[:verbose]
51
+ puts("Translating [#{string}]") if options[:verbose]
51
52
  translator.translate(string, from_lang, options[:lang])
52
53
  end
53
54
 
@@ -56,10 +57,19 @@ module Tr4n5l4te
56
57
  end
57
58
 
58
59
  def from_lang
59
- md = File.basename(options[:yaml_file]).match(/^(\w\w)\.yml$/)
60
- fail "Could not determine language from yaml file: '#{options[:yaml_file]}'" unless md
60
+ @from_lang ||= begin
61
+ md = File.basename(options[:yaml_file]).match(/^(\w\w)\.yml$/)
62
+ fail "Could not determine language from yaml file: '#{options[:yaml_file]}'" unless md
61
63
 
62
- md[1]
64
+ md[1]
65
+ end
66
+ end
67
+
68
+ def replace_lang_key(translated)
69
+ assumed_source_lang = translated.keys.first
70
+ return translated unless assumed_source_lang == from_lang
71
+
72
+ { options[:lang] => translated.values.first }
63
73
  end
64
74
 
65
75
  def store_translation(translated)
@@ -14,13 +14,12 @@ module Tr4n5l4te
14
14
  end
15
15
 
16
16
  def translate(text, from_lang, to_lang)
17
- puts "Translating: #{text}"
18
17
  encoded_text = validate_and_encode(text)
19
18
  return '' if encoded_text == ''
20
19
 
21
20
  smart_visit(translator_url(encoded_text, from_lang, to_lang))
22
21
  result_box = browser.find('.tlid-translation')
23
- result_box.text
22
+ postprocess(result_box.text)
24
23
  rescue Capybara::Ambiguous
25
24
  all_translations = browser.find_all('.tlid-translation')
26
25
  multiples = all_translations.collect(&:text)
@@ -30,11 +29,28 @@ module Tr4n5l4te
30
29
 
31
30
  private
32
31
 
32
+ def preprocess(text)
33
+ @interpolations = text.scan(/(%{.*})/).flatten
34
+ @interpolations.each_with_index do |var, ndx|
35
+ stub = "VAR#{ndx}"
36
+ text.gsub!(%r{#{var}}, stub)
37
+ end
38
+ text
39
+ end
40
+
41
+ def postprocess(text)
42
+ @interpolations.each_with_index do |interp, ndx|
43
+ stub = /VAR#{ndx}/
44
+ text.gsub!(stub, interp)
45
+ end
46
+ text
47
+ end
48
+
33
49
  def validate_and_encode(text)
34
50
  return '' if text.nil?
35
51
  fail "Cannot translate a [#{text.class}]: '#{text}'" unless text.respond_to?(:gsub)
36
52
 
37
- CGI.escape(text.strip)
53
+ CGI.escape(preprocess(text.strip))
38
54
  end
39
55
 
40
56
  def smart_visit(url)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tr4n5l4te
4
- VERSION = '0.1.8'.freeze
4
+ VERSION = '0.1.9'.freeze
5
5
  end
data/tr4n5l4te.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_development_dependency 'bundler', '~> 2.0.1'
24
24
  spec.add_development_dependency 'pry-nav'
25
- spec.add_development_dependency 'rake', '~> 10.0'
25
+ spec.add_development_dependency 'rake', '~> 13.0'
26
26
  spec.add_development_dependency 'rspec', '~> 3.0'
27
27
  spec.add_development_dependency 'rubocop'
28
28
  spec.add_development_dependency 'simplecov', '~> 0.11'
@@ -30,6 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency 'capybara', '~> 2.6'
31
31
  spec.add_dependency 'colored', '~> 1'
32
32
  spec.add_dependency 'midwire_common', '~> 0.1'
33
- spec.add_dependency 'optimist'
33
+ spec.add_dependency 'optimist', '~> 3.0'
34
34
  spec.add_dependency 'poltergeist', '~> 1.9'
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tr4n5l4te
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Blackburn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-21 00:00:00.000000000 Z
11
+ date: 2020-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
48
  type: :development
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: '10.0'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +140,16 @@ dependencies:
140
140
  name: optimist
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: '3.0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0'
152
+ version: '3.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: poltergeist
155
155
  requirement: !ruby/object:Gem::Requirement