Class: I18n::Migrations::Backends::GoogleSpreadsheetsBackend
- Inherits:
-
Object
- Object
- I18n::Migrations::Backends::GoogleSpreadsheetsBackend
- Defined in:
- lib/i18n/migrations/backends/google_spreadsheets_backend.rb
Instance Method Summary collapse
-
#initialize(config) ⇒ GoogleSpreadsheetsBackend
constructor
A new instance of GoogleSpreadsheetsBackend.
- #parse_metadatum(text) ⇒ Object
- #pull(locale) ⇒ Object
- #pull_from_sheet(sheet, locale) ⇒ Object
- #push(locale, force: false) ⇒ Object
- #push_to_sheet(sheet, locale) ⇒ Object
- #sync_migrations(migrations) ⇒ Object
- #unparse_metadatum(metadatum) ⇒ Object
Constructor Details
#initialize(config) ⇒ GoogleSpreadsheetsBackend
Returns a new instance of GoogleSpreadsheetsBackend.
7 8 9 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 7 def initialize(config) @config = config end |
Instance Method Details
#parse_metadatum(text) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 86 def (text) m = Metadata::Metadatum.new({}) m.notes = text.gsub("[autotranslated]") do m.autotranslated = true '' end.gsub(/\[error: ([^\]]+)\]/) do m.errors << $1 '' end.strip m end |
#pull(locale) ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 11 def pull(locale) return if locale.main_locale? sheet = get_google_spreadsheet(locale.name) pull_from_sheet(sheet, locale) locale.migrate! end |
#pull_from_sheet(sheet, locale) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 40 def pull_from_sheet(sheet, locale) puts "Pulling #{locale.name}" data = {} = Metadata.new count = 0 (2..sheet.num_rows).each do |row| key, value, note = sheet[row, 1], sheet[row, 3], sheet[row, 4] if key.present? locale.assign_complex_key(data, key.split('.'), value.present? ? value : '') if note.present? [key] = (note) end count += 1 #print '.' end end locale.(data, ) locale.write_remote_version(data) puts "\n#{count} keys" end |
#push(locale, force: false) ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 19 def push(locale, force: false) return if locale.main_locale? sheet = get_google_spreadsheet(locale.name) unless force pull_from_sheet(sheet, locale) locale.migrate! end push_to_sheet(sheet, locale) end |
#push_to_sheet(sheet, locale) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 64 def push_to_sheet(sheet, locale) main_data = locale.main_locale.read_data data, = locale. row = 2 puts "Pushing #{locale.name}" main_data.each do |key, value| sheet[row, 1] = key sheet[row, 2] = value sheet[row, 3] = data[key] sheet[row, 4] = ([key]) row += 1 #print '.' end sheet.synchronize locale.write_remote_version(data) puts "\n#{main_data.keys.length} keys" end |
#sync_migrations(migrations) ⇒ Object
36 37 38 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 36 def sync_migrations(migrations) # nothing to do here in this backend end |
#unparse_metadatum(metadatum) ⇒ Object
98 99 100 101 102 103 104 105 106 |
# File 'lib/i18n/migrations/backends/google_spreadsheets_backend.rb', line 98 def () string = [] string << '[autotranslated]' if .autotranslated .errors.each do |error| string << "[error: #{error}]" end string << .notes unless .notes.blank? string.join("\n") end |