station 0.0.95 → 0.0.102

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +6 -5
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +1 -1
  5. data/bin/nexmo-developer +11 -3
  6. data/lib/nexmo_developer/.rubocop.yml +3 -0
  7. data/lib/nexmo_developer/.ruby-version +1 -1
  8. data/lib/nexmo_developer/Dockerfile +1 -1
  9. data/lib/nexmo_developer/Gemfile +5 -5
  10. data/lib/nexmo_developer/Gemfile.lock +18 -18
  11. data/lib/nexmo_developer/Guardfile +2 -2
  12. data/lib/nexmo_developer/app/controllers/dashboard_controller.rb +1 -1
  13. data/lib/nexmo_developer/app/presenters/tutorial_list_item.rb +3 -3
  14. data/lib/nexmo_developer/app/services/translator/file_translator.rb +18 -12
  15. data/lib/nexmo_developer/app/services/translator/smartling/api/upload_file.rb +4 -2
  16. data/lib/nexmo_developer/app/services/translator/translation_request.rb +3 -2
  17. data/lib/nexmo_developer/app/services/translator/utils.rb +28 -1
  18. data/lib/nexmo_developer/app/views/contribute/guides/markdown-guide.md +70 -48
  19. data/lib/nexmo_developer/app/webpacker/javascript/components/feedback/Feedback.vue +1 -0
  20. data/lib/nexmo_developer/app/webpacker/stylesheets/layout/_api.scss +1 -0
  21. data/lib/nexmo_developer/lib/tasks/smartling.rake +1 -1
  22. data/lib/nexmo_developer/version.rb +1 -1
  23. data/package.json +13 -13
  24. data/station.gemspec +4 -4
  25. data/yarn.lock +340 -266
  26. metadata +27 -145
  27. data/lib/nexmo_developer/public/packs-test/css/application-5047da33.chunk.css +0 -14950
  28. data/lib/nexmo_developer/public/packs-test/css/application-5047da33.chunk.css.map +0 -1
  29. data/lib/nexmo_developer/public/packs-test/css/application-a5fa0fdb.chunk.css +0 -15085
  30. data/lib/nexmo_developer/public/packs-test/css/application-a5fa0fdb.chunk.css.map +0 -1
  31. data/lib/nexmo_developer/public/packs-test/css/application-f92656e6.chunk.css +0 -13
  32. data/lib/nexmo_developer/public/packs-test/css/application-f92656e6.chunk.css.map +0 -1
  33. data/lib/nexmo_developer/public/packs-test/css/application-f9d1bdbc.chunk.css +0 -13
  34. data/lib/nexmo_developer/public/packs-test/css/application-f9d1bdbc.chunk.css.map +0 -1
  35. data/lib/nexmo_developer/public/packs-test/js/0-e58f598fb97314a89835.chunk.js +0 -59763
  36. data/lib/nexmo_developer/public/packs-test/js/0-e58f598fb97314a89835.chunk.js.map +0 -1
  37. data/lib/nexmo_developer/public/packs-test/js/application-21483bf220c794127fa9.chunk.js +0 -6405
  38. data/lib/nexmo_developer/public/packs-test/js/application-21483bf220c794127fa9.chunk.js.map +0 -1
  39. data/lib/nexmo_developer/public/packs-test/js/application-6e53f67bc3230c42f9dd.chunk.js +0 -7839
  40. data/lib/nexmo_developer/public/packs-test/js/application-6e53f67bc3230c42f9dd.chunk.js.map +0 -1
  41. data/lib/nexmo_developer/public/packs-test/js/application-76d5a80c3775a7e2327a.chunk.js +0 -6405
  42. data/lib/nexmo_developer/public/packs-test/js/application-76d5a80c3775a7e2327a.chunk.js.map +0 -1
  43. data/lib/nexmo_developer/public/packs-test/js/application-c6f3e7a9d98562f76890.chunk.js +0 -6619
  44. data/lib/nexmo_developer/public/packs-test/js/application-c6f3e7a9d98562f76890.chunk.js.map +0 -1
  45. data/lib/nexmo_developer/public/packs-test/js/application-d280e78dd4f9d3d9b466.chunk.js +0 -6405
  46. data/lib/nexmo_developer/public/packs-test/js/application-d280e78dd4f9d3d9b466.chunk.js.map +0 -1
  47. data/lib/nexmo_developer/public/packs-test/js/runtime~application-1c11a8c601900ade80b6.js +0 -155
  48. data/lib/nexmo_developer/public/packs-test/js/runtime~application-1c11a8c601900ade80b6.js.map +0 -1
  49. data/lib/nexmo_developer/public/packs-test/js/vendors~application-6518249ed8d7aa985a8b.chunk.js +0 -61849
  50. data/lib/nexmo_developer/public/packs-test/js/vendors~application-6518249ed8d7aa985a8b.chunk.js.map +0 -1
  51. data/lib/nexmo_developer/public/packs-test/js/vendors~application-bc967911d70f3f4a5151.chunk.js +0 -59077
  52. data/lib/nexmo_developer/public/packs-test/js/vendors~application-bc967911d70f3f4a5151.chunk.js.map +0 -1
  53. data/lib/nexmo_developer/public/packs-test/js/vendors~application-d2bde7a8e622fafdeb1d.chunk.js +0 -61843
  54. data/lib/nexmo_developer/public/packs-test/js/vendors~application-d2bde7a8e622fafdeb1d.chunk.js.map +0 -1
  55. data/lib/nexmo_developer/public/packs-test/js/vendors~application-eb13e7814c54bf76b364.chunk.js +0 -62431
  56. data/lib/nexmo_developer/public/packs-test/js/vendors~application-eb13e7814c54bf76b364.chunk.js.map +0 -1
  57. data/lib/nexmo_developer/public/packs-test/manifest.json +0 -85
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 520397b9e9df2b23552ddacfa1db890c4e64e2d529139da92b27fb69e831127e
4
- data.tar.gz: 359d5422ca1cf98cad2fdd7a6cf4ed20b545c9da4456db451d91445079cca258
3
+ metadata.gz: 731c9ae04b6db8aabd750d8a19a35f6c7a561fa1ef1dfebeaa4038b182c288f2
4
+ data.tar.gz: 80ebc07b60b8757bbcca9469fe64d5fdc7c123cf84e20fc9ffedd912570d07de
5
5
  SHA512:
6
- metadata.gz: 72292c8918fa473782a711990aa5964f29824fe81a0372db5cf7fec53515f1edc153fcd40cf54e3e774eefca1a46ea283f633086f05ce71e96dc0ad5f408fb06
7
- data.tar.gz: '04206032797fa2819f545cf74a5f72b2761da4fd419cba0afa8c588745786332ed87ab76328d524ab75853d5af9bb1c35771805b53a0650d7fb4421c7a079bff'
6
+ metadata.gz: 41c85d4da7b9c1546150b05dcd717a8ce2b5bfc52d92cef4741858d07b58f79995a782aea88e904109b0c5978f390d0962d5789becca2a9cf216e8297f3ead86
7
+ data.tar.gz: ac8d0143cc76403a1138663d7a3120d0a3b292a7ecfff5aca371d7aef01dc99750961a2786a23deb47f02922c81772cbb53803703d55e5bb868065b6312b7e1f
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM ruby:2.5.8-alpine AS build-env
1
+ FROM ruby:2.7.2-alpine AS build-env
2
2
  ARG RAILS_ROOT=/station
3
3
  ARG BUILD_PACKAGES="build-base curl-dev git"
4
4
  ARG DEV_PACKAGES="postgresql-dev yaml-dev zlib-dev nodejs yarn"
@@ -19,11 +19,12 @@ COPY lib/nexmo_developer/Gemfile* package.json yarn.lock $RAILS_ROOT/
19
19
  RUN bundle config --global frozen 1 \
20
20
  && gem update --system \
21
21
  && gem install bundler
22
+
22
23
  RUN bundle install --without development:test:assets -j4 --retry 3 --path=vendor/bundle \
23
24
  # Remove unneeded files (cached *.gem, *.o, *.c)
24
- && rm -rf vendor/bundle/ruby/2.5.0/cache/*.gem \
25
- && find vendor/bundle/ruby/2.5.0/gems/ -name "*.c" -delete \
26
- && find vendor/bundle/ruby/2.5.0/gems/ -name "*.o" -delete
25
+ && rm -rf vendor/bundle/ruby/2.7.0/cache/*.gem \
26
+ && find vendor/bundle/ruby/2.7.0/gems/ -name "*.c" -delete \
27
+ && find vendor/bundle/ruby/2.7.0/gems/ -name "*.o" -delete
27
28
 
28
29
  # Install node dependencies
29
30
  RUN yarn install --frozen-lockfile
@@ -36,7 +37,7 @@ RUN bundle exec rake assets:precompile
36
37
  RUN rm -rf node_modules tmp/cache vendor/assets spec
37
38
 
38
39
  ################ Build step done ###############
39
- FROM ruby:2.5.8-alpine
40
+ FROM ruby:2.7.2-alpine
40
41
  ARG RAILS_ROOT=/station
41
42
 
42
43
  ENV RACK_ENV production
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
1
  source 'https://rubygems.org'
2
- ruby '2.5.8'
2
+ ruby '2.7.2'
@@ -8,7 +8,7 @@ PLATFORMS
8
8
  DEPENDENCIES
9
9
 
10
10
  RUBY VERSION
11
- ruby 2.5.8p224
11
+ ruby 2.7.2p137
12
12
 
13
13
  BUNDLED WITH
14
14
  2.1.4
@@ -3,6 +3,7 @@ require 'optparse'
3
3
 
4
4
  clear_cache = false
5
5
  rake_ci = false
6
+ run_migrations = false
6
7
  rake_smartling_download = false
7
8
  rake_smartling_upload = false
8
9
 
@@ -26,6 +27,9 @@ docs_path = OptionParser.new do |opts|
26
27
  opts.on("--clear-cache", "Clear Rails cache") do
27
28
  clear_cache = true
28
29
  end
30
+ opts.on("--run-migrations", "Runs db migrations") do
31
+ run_migrations = true
32
+ end
29
33
  opts.on("--rake-ci", "Runs ci tasks") do
30
34
  rake_ci = true
31
35
  end
@@ -87,23 +91,27 @@ require 'rake'
87
91
  require 'config/application'
88
92
  require 'rails/command'
89
93
 
94
+ Rails.application.load_tasks
95
+
90
96
  if clear_cache
91
97
  puts "Clearing Rails cache..."
92
98
  Rails::Command.invoke 'runner', ['Rails.cache.clear']
93
99
  end
94
100
 
101
+ if run_migrations
102
+ puts "Running migrations..."
103
+ Rails::Command.invoke 'runner', ["Rake::Task['db:migrate'].invoke"]
104
+ end
105
+
95
106
  if rake_ci
96
107
  puts 'Running Rake tasks...'
97
- Rails.application.load_tasks
98
108
  Rails::Command.invoke 'runner', ["Rake::Task['db:setup'].invoke"]
99
109
  Rails::Command.invoke 'runner', ["Rake::Task['ci:all'].invoke"]
100
110
  elsif rake_smartling_download
101
111
  puts 'Running Smartling download check...'
102
- Rails.application.load_tasks
103
112
  Rails::Command.invoke 'runner', ["Rake::Task['smartling:download'].invoke"]
104
113
  elsif rake_smartling_upload
105
114
  puts 'Running Smartling upload process...'
106
- Rails.application.load_tasks
107
115
 
108
116
  frequency, *paths = ARGV
109
117
  Rails::Command.invoke 'runner', ["Rake::Task['smartling:upload'].invoke(#{paths}, #{frequency})"]
@@ -271,3 +271,6 @@ Rails/SquishedSQLHeredocs:
271
271
 
272
272
  Rails/WhereNot:
273
273
  Enabled: true
274
+
275
+ Lint/DuplicateBranch:
276
+ Enabled: false
@@ -1 +1 @@
1
- 2.5.8
1
+ 2.7.2
@@ -1,5 +1,5 @@
1
1
  # Base image:
2
- FROM ruby:2.5.8
2
+ FROM ruby:2.7.2
3
3
 
4
4
  # Install dependencies
5
5
  RUN apt-get update -qq && apt-get install -y build-essential libpq-dev lsof
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
- ruby '2.5.8'
2
+ ruby '2.7.2'
3
3
 
4
4
  git_source(:github) do |repo_name|
5
5
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
@@ -74,7 +74,7 @@ gem 'icalendar', require: false
74
74
  gem 'neatjson'
75
75
 
76
76
  # Faker, a port of Data::Faker from Perl, is used to easily generate fake data: names, addresses, phone numbers, etc.
77
- gem 'faker', '2.14.0', require: false
77
+ gem 'faker', '2.15.1', require: false
78
78
 
79
79
  # factory_girl_rails provides integration between factory_girl and rails 3 or newer (currently just automatic factory definition loading)
80
80
  gem 'factory_bot_rails', '6.1.0', require: false
@@ -110,7 +110,7 @@ gem 'bootsnap', require: false
110
110
  gem 'diffy', require: false
111
111
 
112
112
  # Automatic Ruby code style checking tool. Aims to enforce the community-driven Ruby Style Guide.
113
- gem 'rubocop', '~> 1.2.0', require: false
113
+ gem 'rubocop', '~> 1.4.2', require: false
114
114
  gem 'rubocop-rails', '~> 2.8', require: false
115
115
 
116
116
  # Volta needs a CSS autoprefixer
@@ -129,9 +129,9 @@ gem 'lograge'
129
129
  gem 'countries'
130
130
  gem 'country_select', '~> 4.0'
131
131
 
132
- gem 'nexmo-oas-renderer', '~> 2.4.0', require: false
132
+ gem 'nexmo-oas-renderer', '~> 2.4.1', require: false
133
133
 
134
- gem 'nexmo_markdown_renderer', '~> 0.5'
134
+ gem 'nexmo_markdown_renderer', '~> 0.7'
135
135
 
136
136
  gem 'smartling'
137
137
 
@@ -163,7 +163,7 @@ GEM
163
163
  em-websocket (0.5.2)
164
164
  eventmachine (>= 0.12.9)
165
165
  http_parser.rb (~> 0.6.0)
166
- erubi (1.9.0)
166
+ erubi (1.10.0)
167
167
  eventmachine (1.2.7)
168
168
  execjs (2.7.0)
169
169
  factory_bot (6.1.0)
@@ -171,7 +171,7 @@ GEM
171
171
  factory_bot_rails (6.1.0)
172
172
  factory_bot (~> 6.1.0)
173
173
  railties (>= 5.0.0)
174
- faker (2.14.0)
174
+ faker (2.15.1)
175
175
  i18n (>= 1.6, < 2)
176
176
  faraday (1.1.0)
177
177
  multipart-post (>= 1.2, < 3)
@@ -258,7 +258,7 @@ GEM
258
258
  activerecord
259
259
  kaminari-core (= 1.2.1)
260
260
  kaminari-core (1.2.1)
261
- listen (3.3.0)
261
+ listen (3.3.1)
262
262
  rb-fsevent (~> 0.10, >= 0.10.3)
263
263
  rb-inotify (~> 0.9, >= 0.9.10)
264
264
  lograge (0.11.2)
@@ -266,7 +266,7 @@ GEM
266
266
  activesupport (>= 4)
267
267
  railties (>= 4)
268
268
  request_store (~> 1.0)
269
- loofah (2.7.0)
269
+ loofah (2.8.0)
270
270
  crass (~> 1.0.2)
271
271
  nokogiri (>= 1.5.9)
272
272
  lumberjack (1.2.8)
@@ -294,8 +294,8 @@ GEM
294
294
  neatjson (0.9)
295
295
  nenv (0.3.0)
296
296
  netrc (0.11.0)
297
- newrelic_rpm (6.13.1)
298
- nexmo-oas-renderer (2.4.0)
297
+ newrelic_rpm (6.14.0)
298
+ nexmo-oas-renderer (2.4.1)
299
299
  activemodel (~> 6.0)
300
300
  activesupport (~> 6.0)
301
301
  banzai (~> 0.1.2)
@@ -308,7 +308,7 @@ GEM
308
308
  sass (~> 3.1)
309
309
  shotgun (~> 0.9)
310
310
  sinatra (~> 2.0)
311
- nexmo_markdown_renderer (0.5.0)
311
+ nexmo_markdown_renderer (0.7.0)
312
312
  activemodel (~> 6.0)
313
313
  banzai (~> 0.1.2)
314
314
  i18n (~> 1.7)
@@ -340,7 +340,7 @@ GEM
340
340
  sawyer (~> 0.8.0, >= 0.5.3)
341
341
  oj (3.10.15)
342
342
  orm_adapter (0.5.0)
343
- parallel (1.19.2)
343
+ parallel (1.20.1)
344
344
  parser (2.7.2.0)
345
345
  ast (~> 2.4.1)
346
346
  pg (1.2.3)
@@ -398,7 +398,7 @@ GEM
398
398
  recaptcha (5.6.0)
399
399
  json
400
400
  redcarpet (3.4.0)
401
- redis (4.2.2)
401
+ redis (4.2.5)
402
402
  regexp_parser (1.8.2)
403
403
  request_store (1.5.0)
404
404
  rack (>= 1.4)
@@ -437,16 +437,16 @@ GEM
437
437
  rspec-snapshot (0.1.2)
438
438
  rspec (> 3.0.0)
439
439
  rspec-support (3.10.0)
440
- rubocop (1.2.0)
440
+ rubocop (1.4.2)
441
441
  parallel (~> 1.10)
442
442
  parser (>= 2.7.1.5)
443
443
  rainbow (>= 2.2.2, < 4.0)
444
444
  regexp_parser (>= 1.8)
445
445
  rexml
446
- rubocop-ast (>= 1.0.1)
446
+ rubocop-ast (>= 1.1.1)
447
447
  ruby-progressbar (~> 1.7)
448
448
  unicode-display_width (>= 1.4.0, < 2.0)
449
- rubocop-ast (1.1.1)
449
+ rubocop-ast (1.2.0)
450
450
  parser (>= 2.7.1.5)
451
451
  rubocop-rails (2.8.1)
452
452
  activesupport (>= 4.2.0)
@@ -529,7 +529,7 @@ GEM
529
529
  activemodel (>= 6.0.0)
530
530
  bindex (>= 0.4.0)
531
531
  railties (>= 6.0.0)
532
- webmock (3.9.5)
532
+ webmock (3.10.0)
533
533
  addressable (>= 2.3.6)
534
534
  crack (>= 0.3.2)
535
535
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -573,7 +573,7 @@ DEPENDENCIES
573
573
  diffy
574
574
  dotenv-rails
575
575
  factory_bot_rails (= 6.1.0)
576
- faker (= 2.14.0)
576
+ faker (= 2.15.1)
577
577
  ffi (>= 1.9.24)
578
578
  geocoder
579
579
  gmaps4rails
@@ -589,8 +589,8 @@ DEPENDENCIES
589
589
  lograge
590
590
  neatjson
591
591
  newrelic_rpm
592
- nexmo-oas-renderer (~> 2.4.0)
593
- nexmo_markdown_renderer (~> 0.5)
592
+ nexmo-oas-renderer (~> 2.4.1)
593
+ nexmo_markdown_renderer (~> 0.7)
594
594
  nokogiri (~> 1.10.9)
595
595
  octokit
596
596
  pg (~> 1.2)
@@ -605,7 +605,7 @@ DEPENDENCIES
605
605
  rspec-collection_matchers
606
606
  rspec-rails (~> 4.0)
607
607
  rspec-snapshot (~> 0.1.2)
608
- rubocop (~> 1.2.0)
608
+ rubocop (~> 1.4.2)
609
609
  rubocop-rails (~> 2.8)
610
610
  ruby-progressbar
611
611
  sassc-rails (~> 2.1)
@@ -624,7 +624,7 @@ DEPENDENCIES
624
624
  woothee
625
625
 
626
626
  RUBY VERSION
627
- ruby 2.5.8p224
627
+ ruby 2.7.2p137
628
628
 
629
629
  BUNDLED WITH
630
630
  2.1.4
@@ -5,7 +5,7 @@
5
5
  # directories %w(app lib config test spec features) \
6
6
  # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
7
 
8
- ## Note: if you are using the `directories` clause above and you are not
8
+ ## NOTE: if you are using the `directories` clause above and you are not
9
9
  ## watching the project directory ('.'), then you will want to move
10
10
  ## the Guardfile to a watched dir and symlink it back, e.g.
11
11
  #
@@ -54,7 +54,7 @@ guard 'livereload' do
54
54
  watch(%r{config/locales/.+\.yml})
55
55
  end
56
56
 
57
- # Note: The cmd option is now required due to the increasing number of ways
57
+ # NOTE: The cmd option is now required due to the increasing number of ways
58
58
  # rspec may be run, below are examples of the most common uses.
59
59
  # * bundler: 'bundle exec rspec'
60
60
  # * bundler binstubs: 'bin/rspec'
@@ -197,7 +197,7 @@ class DashboardController < ApplicationController
197
197
 
198
198
  parts.insert(1, 'top-level') if parts.count < 3
199
199
 
200
- parts = [parts[0], parts[1], parts[2..-1].join('/')] if parts.count > 3
200
+ parts = [parts[0], parts[1], parts[2..].join('/')] if parts.count > 3
201
201
  next if parts[0] == 'migrate'
202
202
 
203
203
  x = @complete_coverage
@@ -62,11 +62,11 @@ class TutorialListItem
62
62
  end
63
63
 
64
64
  def product_url
65
- "/#{I18n.locale}/#{products.join('')}/tutorials"
65
+ "/#{I18n.locale}/#{products.join}/tutorials"
66
66
  end
67
67
 
68
68
  def url
69
- external_link || "/#{I18n.locale}/#{products.join('')}/tutorials/#{filename}/#{first_step}"
69
+ external_link || "/#{I18n.locale}/#{products.join}/tutorials/#{filename}/#{first_step}"
70
70
  end
71
71
 
72
72
  def available_languages
@@ -74,7 +74,7 @@ class TutorialListItem
74
74
  OpenStruct.new(
75
75
  language: language,
76
76
  label: Nexmo::Markdown::CodeLanguage.find(language).label,
77
- url: external_link || "/#{products.join('')}/tutorials/#{filename}/#{first_step}/#{language}"
77
+ url: external_link || "/#{products.join}/tutorials/#{filename}/#{first_step}/#{language}"
78
78
  )
79
79
  end
80
80
  end
@@ -1,5 +1,7 @@
1
1
  module Translator
2
2
  class FileTranslator
3
+ include Utils
4
+
3
5
  attr_reader :doc_path
4
6
 
5
7
  def initialize(doc_path)
@@ -12,41 +14,45 @@ module Translator
12
14
  Translator::TranslationRequest.new(
13
15
  locale: locale_with_region(locale),
14
16
  frequency: frequency,
15
- file_uri: doc_path
17
+ file_uri: uri,
18
+ file_path: full_path
16
19
  )
17
20
  end
18
21
  end
19
22
  end
20
23
 
24
+ def uri
25
+ @uri ||= file_uri(doc_path)
26
+ end
27
+
21
28
  def frontmatter
22
29
  @frontmatter ||= YAML.safe_load(File.read(full_path))
23
30
  end
24
31
 
25
32
  def full_path
26
- @full_path ||= "#{Rails.configuration.docs_base_path}/_documentation/en/#{doc_path}"
33
+ @full_path ||= "#{Rails.configuration.docs_base_path}/#{doc_path}"
27
34
  end
28
35
 
29
36
  def frequency
30
37
  @frequency ||= frontmatter['translation_frequency'] || product_translation_frequency
31
38
  end
32
39
 
33
- def locale_with_region(locale)
34
- case locale.to_s
35
- when 'ja', 'ja-JP'
36
- 'ja-JP'
37
- when 'cn', 'zh-CN'
38
- 'zh-CN'
39
- else
40
- locale.to_s
40
+ def product_from_path
41
+ @product_from_path ||= begin
42
+ Pathname.new(
43
+ doc_path.gsub(%r{(_documentation|_tutorials|_use_cases)/#{I18n.default_locale}/}, '')
44
+ ).dirname.to_s
41
45
  end
42
46
  end
43
47
 
44
48
  def product
45
49
  @product ||= begin
46
50
  products = YAML.safe_load(File.open("#{Rails.configuration.docs_base_path}/config/products.yml"))
47
- product = products['products'].detect { |p| doc_path.starts_with? p['path'] }
51
+ product = products['products'].detect do |p|
52
+ product_from_path.starts_with?(p['path']) || frontmatter['products']&.include?(p['path'])
53
+ end
48
54
 
49
- raise ArgumentError, 'Unable to match document with products list in config/products.yml' unless product
55
+ raise ArgumentError, "Unable to match document with products list in config/products.yml for #{full_path}" unless product
50
56
 
51
57
  product
52
58
  end
@@ -53,8 +53,10 @@ module Translator
53
53
  def file
54
54
  @file ||= begin
55
55
  file = Tempfile.new
56
- file.write Nexmo::Markdown::Pipelines::Smartling::Preprocessor.new.call(
57
- File.read("#{Rails.configuration.docs_base_path}/_documentation/#{I18n.default_locale}/#{@translation_request.file_uri}")
56
+ file.write(
57
+ Nexmo::Markdown::Pipelines::Smartling::Preprocessor.new.call(
58
+ File.read(@translation_request.file_path)
59
+ )
58
60
  )
59
61
  file.rewind
60
62
  file.close
@@ -1,11 +1,12 @@
1
1
  module Translator
2
2
  class TranslationRequest
3
- attr_reader :locale, :frequency, :file_uri
3
+ attr_reader :locale, :frequency, :file_uri, :file_path
4
4
 
5
- def initialize(locale:, frequency:, file_uri:)
5
+ def initialize(locale:, frequency:, file_uri:, file_path:)
6
6
  @locale = locale
7
7
  @frequency = frequency
8
8
  @file_uri = file_uri
9
+ @file_path = file_path
9
10
  end
10
11
  end
11
12
  end
@@ -11,12 +11,33 @@ module Translator
11
11
  end
12
12
  end
13
13
 
14
+ def locale_with_region(locale)
15
+ case locale.to_s
16
+ when 'ja', 'ja-JP'
17
+ 'ja-JP'
18
+ when 'cn', 'zh-CN'
19
+ 'zh-CN'
20
+ else
21
+ locale.to_s
22
+ end
23
+ end
24
+
14
25
  def storage_folder(filename, locale)
15
26
  if filename.starts_with? '_documentation'
16
27
  dir_path = Pathname.new(file_uri(filename)).dirname.to_s
17
28
  "#{Rails.configuration.docs_base_path}/_documentation/#{locale}/#{dir_path}"
29
+ elsif filename.starts_with? '_use_cases'
30
+ "#{Rails.configuration.docs_base_path}/_use_cases/#{locale}"
18
31
  elsif filename.starts_with? 'config/locales'
19
32
  Pathname.new(file_uri(filename)).dirname.to_s
33
+ elsif filename.starts_with? 'config/tutorials'
34
+ pathname = Pathname.new(filename.gsub("config/tutorials/#{I18n.default_locale}/", ''))
35
+ dir_path = pathname.dirname.to_s == '.' ? '' : "/#{pathname.dirname}"
36
+ "#{Rails.configuration.docs_base_path}/config/tutorials/#{locale}#{dir_path}"
37
+ elsif filename.starts_with? '_tutorials'
38
+ pathname = Pathname.new(filename.gsub("_tutorials/#{I18n.default_locale}/", ''))
39
+ dir_path = pathname.dirname.to_s == '.' ? '' : "/#{pathname.dirname}"
40
+ "#{Rails.configuration.docs_base_path}/_tutorials/#{locale}#{dir_path}"
20
41
  else
21
42
  dir_path = Pathname.new(file_uri(filename)).dirname.to_s
22
43
  "#{Rails.configuration.docs_base_path}/_documentation/#{locale}/#{dir_path}"
@@ -36,7 +57,13 @@ module Translator
36
57
  end
37
58
 
38
59
  def file_uri(filename)
39
- filename.gsub(%r{_documentation/[a-z]{2}/}, '')
60
+ if filename.starts_with? '_documentation'
61
+ filename.gsub(%r{_documentation/[a-z]{2}/}, '')
62
+ else
63
+ filename.gsub(%r{(_use_cases|_tutorials|config/tutorials)/#{I18n.default_locale}/(.*)}) do |_|
64
+ "#{$1}/#{$2}"
65
+ end
66
+ end
40
67
  end
41
68
  end
42
69
  end