Class: MiddleDrive::Page
- Inherits:
-
Object
- Object
- MiddleDrive::Page
- Defined in:
- lib/middle_drive/page.rb
Instance Method Summary collapse
- #build(path) ⇒ Object
- #get_language_column_index(sheet, lang) ⇒ Object
-
#initialize(site) ⇒ Page
constructor
A new instance of Page.
- #load_language_values(hash, sheet, lang) ⇒ Object
Constructor Details
#initialize(site) ⇒ Page
Returns a new instance of Page.
4 5 6 7 |
# File 'lib/middle_drive/page.rb', line 4 def initialize(site) @languages = MiddleDrive::Config.get('site.languages') @pages_document = site.spreadsheets.select { |s| s.title == 'pages' }.first end |
Instance Method Details
#build(path) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/middle_drive/page.rb', line 9 def build(path) locales_path = "#{path}/locales" Dir.mkdir(locales_path) unless File.exists?(locales_path) # each tab is a page pages = {'pages' => {}} # init lang hash lang_keys = {} @languages.each do |lang| lang_keys[lang] = {} end @pages_document.worksheets.each do |page| puts "Building key value pairs for page named #{page.title}" # in very first row we specify page's template pages['pages'][page.title] = page[1, 1] @languages.each do |lang| lang_keys = load_language_values(lang_keys, page, lang) end end @languages.each do |lang| output = {} output[lang] = lang_keys[lang] File.write("#{locales_path}/#{lang}.yml", output.to_yaml) end File.write("#{path}/pages.yml", pages.to_yaml) end |
#get_language_column_index(sheet, lang) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/middle_drive/page.rb', line 54 def get_language_column_index(sheet, lang) (1..MiddleDrive::Config.max_languages).each do |column| return column if sheet[1, column] == lang end 0 end |
#load_language_values(hash, sheet, lang) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/middle_drive/page.rb', line 41 def load_language_values(hash, sheet, lang) column_index = get_language_column_index(sheet, lang) hash[lang][sheet.title] = {} (2..sheet.num_rows).each do |row| key = sheet[row, 1] value = sheet[row, column_index] hash[lang][sheet.title][key] = value end hash end |