Module: GetText::GladeParser

Extended by:
GetText, GladeParser
Included in:
GladeParser
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

Instance 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, pgettext, remove_bom, rgettext, rmsgfmt, rmsgmerge, set_cgi, set_current_locale, set_locale, set_output_charset, sgettext, textdomain, textdomain_to, update_pofiles, update_pofiles_org

Instance Method Details

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

:nodoc:



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

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:



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

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.



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
64
# File 'lib/gettext/parser/glade.rb', line 31

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)


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

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