Class: Babelyoda::Xib

Inherits:
Object
  • Object
show all
Defined in:
lib/babelyoda/xib.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename, language) ⇒ Xib

Returns a new instance of Xib.



11
12
13
# File 'lib/babelyoda/xib.rb', line 11

def initialize(filename, language)
  @filename, @language = filename, language
end

Instance Attribute Details

#filenameObject (readonly)

Returns the value of attribute filename.



8
9
10
# File 'lib/babelyoda/xib.rb', line 8

def filename
  @filename
end

#languageObject (readonly)

Returns the value of attribute language.



9
10
11
# File 'lib/babelyoda/xib.rb', line 9

def language
  @language
end

Instance Method Details

#basenameObject



24
25
26
# File 'lib/babelyoda/xib.rb', line 24

def basename
  File.basename(File.split(@filename)[1], '.xib')
end

#dirnameObject



20
21
22
# File 'lib/babelyoda/xib.rb', line 20

def dirname
  File.dirname(@filename)
end

#extractable?(development_language) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
# File 'lib/babelyoda/xib.rb', line 15

def extractable?(development_language)
  lproj_part = File.lproj_part(@filename)
  (!lproj_part.nil?) && lproj_part == "#{development_language}.lproj"
end

#import_strings(scm) ⇒ Object



78
79
80
81
# File 'lib/babelyoda/xib.rb', line 78

def import_strings(scm)
  $logger.debug "Importing #{strings_filename} => #{filename}"
  Babelyoda::Ibtool.import_strings(filename, strings_filename)
end

#localizable?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/babelyoda/xib.rb', line 83

def localizable?
  File.exist?(strings_filename)
end

#localize(language, scm) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/babelyoda/xib.rb', line 51

def localize(language, scm)
  $logger.debug "Localizing #{filename} => #{File.localized(filename, language)}..."
  assert_localization_target(language)
  strings_fn = strings_filename(language)
  $logger.error "No strings file found: #{strings_fn}" unless File.exist?(strings_fn)
  Babelyoda::Ibtool.localize(filename, File.localized(filename, language), strings_fn)
end

#localize_incremental(language, scm) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/babelyoda/xib.rb', line 59

def localize_incremental(language, scm)
  assert_localization_target(language)
  unless localizable_incrementally?(scm, language)
    localize(language, scm)
  else
    $logger.debug "Incrementally localizing #{filename} => #{File.localized(filename, language)}..."
    strings_fn = strings_filename(language)
    $logger.error "No strings file found: #{strings_fn}" unless File.exist?(strings_fn)
    
    scm.fetch_versions!(filename) do |filenames|
      Babelyoda::Ibtool.localize_incrementally(filename, File.localized(filename, language), strings_fn, filenames[0])
    end
  end
end

#mv(new_filename) ⇒ Object



37
38
39
40
41
# File 'lib/babelyoda/xib.rb', line 37

def mv(new_filename)
  FileUtils.mkdir_p(File.dirname(new_filename))
  FileUtils.mv(@filename, new_filename)
  @filename = new_filename
end

#resource!Object



32
33
34
35
# File 'lib/babelyoda/xib.rb', line 32

def resource!
  raise "The XIB is already in a resource folder: #{@filename}" unless File.lproj_part(@filename).nil?
  mv(File.localized(@filename, @language))
end

#resourced?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/babelyoda/xib.rb', line 28

def resourced?
  !File.lproj_part(@filename).nil?
end

#stringsObject



47
48
49
# File 'lib/babelyoda/xib.rb', line 47

def strings
  Babelyoda::Ibtool.extract_strings(@filename, @language)
end

#strings?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/babelyoda/xib.rb', line 43

def strings?
  !strings.empty?
end

#strings_filename(language = nil) ⇒ Object



74
75
76
# File 'lib/babelyoda/xib.rb', line 74

def strings_filename(language = nil)
  language ? File.localized(File.join(dirname, "#{basename}.strings"), language) : File.join(dirname, "#{basename}.strings")
end