Class: Locraft::StringsGenerator

Inherits:
Generator show all
Includes:
FileUtils
Defined in:
lib/locraft/generators/strings_generator.rb

Direct Known Subclasses

InfoPlistGenerator, XMLStringsGenerator

Instance Method Summary collapse

Methods inherited from Generator

#initialize

Constructor Details

This class inherits a constructor from Locraft::Generator

Instance Method Details

#broadcast_file_generation(f) ⇒ Object



28
29
30
# File 'lib/locraft/generators/strings_generator.rb', line 28

def broadcast_file_generation(f)
  puts "strings file generated: [#{f}]"
end

#destination_dir_for(_, lang_code) ⇒ Object



40
41
42
# File 'lib/locraft/generators/strings_generator.rb', line 40

def destination_dir_for(_, lang_code)
  "#{@config.relative_strings_destination}/#{lang_code}.lproj"
end

#file_templateObject



36
37
38
# File 'lib/locraft/generators/strings_generator.rb', line 36

def file_template
  Utils.resource_file('strings_template.txt')
end

#generate(localizations_hash) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/locraft/generators/strings_generator.rb', line 15

def generate(localizations_hash)
  @config.langs.each do |lang, lang_code|
    localizations = localizations_hash[lang].select { |l| valid_localization?(l) }
    destination_dir = destination_dir_for(lang, lang_code)
    file = "#{destination_dir}/#{strings_file}"
    mkdir_p destination_dir unless Dir.exist?(destination_dir)
    File.open(file, 'w+') do |f|
      f.puts file_template % strings_file_content(localizations)
    end
    broadcast_file_generation(file)
  end
end

#strings_fileObject



44
45
46
# File 'lib/locraft/generators/strings_generator.rb', line 44

def strings_file
  @config.strings_file
end

#strings_file_content(localizations) ⇒ Object



48
49
50
# File 'lib/locraft/generators/strings_generator.rb', line 48

def strings_file_content(localizations)
  localizations.select(&:valid?).map { |l| strings_line_with(l) }.join("\n")
end

#strings_line_with(localization) ⇒ Object



52
53
54
55
56
# File 'lib/locraft/generators/strings_generator.rb', line 52

def strings_line_with(localization)
  content = ''
  content += "/* #{localization.comment} */" unless localization.comment.nil?
  content + %(\n"#{localization.key}" = "#{localization.strict_value}";\n)
end

#valid?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/locraft/generators/strings_generator.rb', line 11

def valid?
  !@config.relative_strings_destination.nil?
end

#valid_localization?(l) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/locraft/generators/strings_generator.rb', line 32

def valid_localization?(l)
  l.valid?
end