Class: MiddleDrive::Page

Inherits:
Object
  • Object
show all
Defined in:
lib/middle_drive/page.rb

Instance Method Summary collapse

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