Module: GetText::GladeParser

Extended by:
GetText
Defined in:
lib/gettext/parser/glade.rb

Constant Summary collapse

TARGET1 =
/<property.*translatable="yes">(.*)/
TARGET2 =
/(.*)<\/property>/
XML_RE =
/<\?xml/
GLADE_RE =
/glade-2.0.dtd/

Constants included from GetText

BOM_UTF8, VERSION

Class Method Summary collapse

Methods included from GetText

N_, Nn_, bindtextdomain, bindtextdomain_to, cgi, cgi=, create_mofiles, create_mofiles_org, gettext, included, locale, msgmerge, ngettext, npgettext, nsgettext, output_charset, p_, pgettext, remove_bom, rgettext, rmsgfmt, rmsgmerge, set_cgi, set_locale, set_output_charset, sgettext, textdomain, update_pofiles, update_pofiles_org

Class Method Details

.add_target(val, file, line_no, targets) ⇒ Object

:nodoc:



80
81
82
83
84
85
86
87
88
89
90
# File 'lib/gettext/parser/glade.rb', line 80

def add_target(val, file, line_no, targets) # :nodoc:
  return unless val.size > 0
  assoc_data = targets.assoc(val)
  val = CGI.unescapeHTML(val)
  if assoc_data 
    targets[targets.index(assoc_data)] = assoc_data << "#{file}:#{line_no}"
  else
    targets << [val.gsub(/\n/, '\n'), "#{file}:#{line_no}"]
  end
  targets
end

.parse(file, targets = []) ⇒ Object

:nodoc:



24
25
26
27
# File 'lib/gettext/parser/glade.rb', line 24

def parse(file, targets = []) # :nodoc: 
  lines = IO.readlines(file)
  parse_lines(file, lines, targets)
end

.parse_lines(file, lines, targets) ⇒ Object

from ary of lines.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/gettext/parser/glade.rb', line 30

def parse_lines(file, lines, targets) # :nodoc:
  cnt = 0
  target = false
  line_no = 0
  val = nil
  
  loop do 
    line = lines.shift
    break unless line
    
    cnt += 1
    if TARGET1 =~ line
      line_no = cnt
      val = $1 + "\n"
      target = true
      if TARGET2 =~ $1
        val = $1
        add_target(val, file, line_no, targets)
        val = nil
        target = false
      end
    elsif target
      if TARGET2 =~ line
        val << $1
        add_target(val, file, line_no, targets)
        val = nil
        target = false
      else
        val << line
      end
    end
  end
  targets
end

.target?(file) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)


68
69
70
71
72
73
74
75
76
77
78
# File 'lib/gettext/parser/glade.rb', line 68

def target?(file) # :nodoc:
  data = IO.readlines(file)
  if XML_RE =~ data[0] and GLADE_RE =~ data[1]
	true
  else
	if File.extname(file) == '.glade'
	  raise _("`%{file}' is not glade-2.0 format.") % {:file => file}
	end
	false
  end
end