Class: WebTranslateIt::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/web_translate_it/configuration.rb

Overview

Handles the configuration of your project, both via the the configuration file and via the API. Implementation example, assuming you have a valid .wti file:

configuration = WebTranslateIt::Configuration.new

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root_path = Rails.root, path_to_config_file = ".wti") ⇒ Configuration

Load configuration file from the path.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/web_translate_it/configuration.rb', line 18

def initialize(root_path = Rails.root, path_to_config_file = ".wti")
  self.path_to_config_file = path_to_config_file
  self.path           = root_path
  self.logger         = logger
  if File.exists?(File.expand_path(path_to_config_file, self.path))
    self.api_key        = configuration['api_key']
    self.before_pull    = configuration['before_pull']
    self.after_pull     = configuration['after_pull']
    self.before_push    = configuration['before_push']
    self.after_push     = configuration['after_push']
    project_info        = YAML.load WebTranslateIt::Project.fetch_info(api_key)
    set_locales_to_ignore(configuration)
    set_locales_needed(configuration)
    set_files(project_info['project'])
    set_locales(project_info['project'])
    WebTranslateIt::Connection.turn_silent_on if configuration['silence_errors']
    self.project_name = project_info['project']['name']
  else
    puts StringUtil.failure("\nCan't find a configuration file in #{File.expand_path(path_to_config_file, self.path)}")
    exit(1)
  end
end

Instance Attribute Details

#after_pullObject

Returns the value of attribute after_pull.



15
16
17
# File 'lib/web_translate_it/configuration.rb', line 15

def after_pull
  @after_pull
end

#after_pushObject

Returns the value of attribute after_push.



15
16
17
# File 'lib/web_translate_it/configuration.rb', line 15

def after_push
  @after_push
end

#api_keyObject

Returns the value of attribute api_key.



14
15
16
# File 'lib/web_translate_it/configuration.rb', line 14

def api_key
  @api_key
end

#before_pullObject

Returns the value of attribute before_pull.



15
16
17
# File 'lib/web_translate_it/configuration.rb', line 15

def before_pull
  @before_pull
end

#before_pushObject

Returns the value of attribute before_push.



15
16
17
# File 'lib/web_translate_it/configuration.rb', line 15

def before_push
  @before_push
end

#filesObject

Returns the value of attribute files.



14
15
16
# File 'lib/web_translate_it/configuration.rb', line 14

def files
  @files
end

#ignore_localesObject

Returns the value of attribute ignore_locales.



14
15
16
# File 'lib/web_translate_it/configuration.rb', line 14

def ignore_locales
  @ignore_locales
end

#loggerObject

Returns a logger. If RAILS_DEFAULT_LOGGER is defined, use it, else, define a new logger.



83
84
85
# File 'lib/web_translate_it/configuration.rb', line 83

def logger
  @logger
end

#needed_localesObject

Returns the value of attribute needed_locales.



14
15
16
# File 'lib/web_translate_it/configuration.rb', line 14

def needed_locales
  @needed_locales
end

#pathObject

Returns the value of attribute path.



14
15
16
# File 'lib/web_translate_it/configuration.rb', line 14

def path
  @path
end

#path_to_config_fileObject

Returns the value of attribute path_to_config_file.



15
16
17
# File 'lib/web_translate_it/configuration.rb', line 15

def path_to_config_file
  @path_to_config_file
end

#project_nameObject

Returns the value of attribute project_name.



15
16
17
# File 'lib/web_translate_it/configuration.rb', line 15

def project_name
  @project_name
end

#source_localeObject

Returns the value of attribute source_locale.



14
15
16
# File 'lib/web_translate_it/configuration.rb', line 14

def source_locale
  @source_locale
end

#target_localesObject

Returns the value of attribute target_locales.



14
15
16
# File 'lib/web_translate_it/configuration.rb', line 14

def target_locales
  @target_locales
end

Instance Method Details

#api_urlObject

Convenience method which returns the endpoint for fetching a list of locales for a project.



78
79
80
# File 'lib/web_translate_it/configuration.rb', line 78

def api_url
  "/api/projects/#{api_key}.yaml"
end

#configurationObject



91
92
93
# File 'lib/web_translate_it/configuration.rb', line 91

def configuration
  @configuration ||= YAML.load(parse_erb_in_configuration)
end

#set_files(project) ⇒ Object

Set the project files from the Project API. Implementation example:

configuration = WebTranslateIt::Configuration.new
files = configuration.files # returns an array of TranslationFile


56
57
58
59
60
61
62
63
64
65
# File 'lib/web_translate_it/configuration.rb', line 56

def set_files(project)
  self.files = []
  project['project_files'].each do |project_file|
    if project_file['name'].nil? or project_file['name'].strip == ''
      puts "File #{project_file['id']} not set up"
    else
      self.files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], self.api_key, project_file['updated_at'], project_file['hash_file'], project_file['master_project_file_id'])
    end
  end
end

#set_locales(project) ⇒ Object

Set the project locales from the Project API. Implementation example:

configuration = WebTranslateIt::Configuration.new
locales = configuration.locales # returns an array of locales: ['en', 'fr', 'es', ...]


46
47
48
49
# File 'lib/web_translate_it/configuration.rb', line 46

def set_locales(project)
  self.source_locale  = project['source_locale']['code']
  self.target_locales = project['target_locales'].map{|locale| locale['code']}
end

#set_locales_needed(configuration) ⇒ Object

Set locales to specifically pull from the configuration file, if set



73
74
75
# File 'lib/web_translate_it/configuration.rb', line 73

def set_locales_needed(configuration)
  self.needed_locales = Array(configuration['needed_locales']).map{ |locale| locale.to_s }
end

#set_locales_to_ignore(configuration) ⇒ Object

Set locales to ignore from the configuration file, if set.



68
69
70
# File 'lib/web_translate_it/configuration.rb', line 68

def set_locales_to_ignore(configuration)
  self.ignore_locales = Array(configuration['ignore_locales']).map{ |locale| locale.to_s }
end