Class: Rake::GettextTask

Inherits:
TaskLib
  • Object
show all
Defined in:
lib/gettext.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name = :gettext) {|_self| ... } ⇒ GettextTask

Create a gettext task.

Yields:

  • (_self)

Yield Parameters:



53
54
55
56
57
58
59
60
61
62
# File 'lib/gettext.rb', line 53

def initialize(name=:gettext)
  @name = name
  @pattern = nil
  @source_files = nil
  @new_langs = nil
  @verbose = false
  yield self if block_given?
  @pattern = '**/*.rb' if @pattern.nil? && @source_files.nil?
  define
end

Instance Attribute Details

#nameObject

Name of gettext task. (default is :gettext)



40
41
42
# File 'lib/gettext.rb', line 40

def name
  @name
end

#new_langsObject

an array of languages (locales) for wich you want a new catalog



51
52
53
# File 'lib/gettext.rb', line 51

def new_langs
  @new_langs
end

#patternObject

Glob pattern to match source files. (default is ‘*/.rb’)



46
47
48
# File 'lib/gettext.rb', line 46

def pattern
  @pattern
end

#source_filesObject

an array of file names (a FileList is acceptable) that will be scanned for i18n strings



49
50
51
# File 'lib/gettext.rb', line 49

def source_files
  @source_files
end

#verboseObject

True if verbose test output desired. (default is false)



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

def verbose
  @verbose
end

Instance Method Details

#defineObject

Create the tasks defined by this task lib.



65
66
67
68
69
70
71
72
73
# File 'lib/gettext.rb', line 65

def define
  desc "Ri18n gettext task" + (@name==:gettext ? "" : " for #{@name}")
  task @name do
    msg_list = get_new_messages
    I18nService.instance.update_catalogs(msg_list)
    I18nService.instance.create_catalogs(msg_list, new_langs )
  end
  self
end

#file_listObject

:nodoc:



75
76
77
78
79
80
# File 'lib/gettext.rb', line 75

def file_list # :nodoc:
  result = []
  result += @source_files.to_a if @source_files
  result += FileList[ @pattern ].to_a if @pattern
  FileList[result]
end

#get_new_messagesObject

:nodoc:



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/gettext.rb', line 82

def get_new_messages # :nodoc:
  list = []
  file_list.each{|fn|
    next unless test(?f, fn)
    File.open(fn) do |f|
      new_strings = GettextScanner::Gettext(f.read)
      if @verbose
        unless new_strings.empty?
          puts "I18n messages in #{fn}:"
          new_strings.each{|s| puts " * #{s}"}
        end
      end
      list += new_strings
    end
  }
  NewMsgList.new(list.uniq)
end