~ubuntu-branches/ubuntu/oneiric/ruby-activesupport-2.3/oneiric-updates

« back to all changes in this revision

Viewing changes to lib/active_support/vendor/i18n-0.4.1/i18n/gettext/po_parser.rb

  • Committer: Bazaar Package Importer
  • Author(s): Ondřej Surý
  • Date: 2011-06-01 14:30:04 UTC
  • Revision ID: james.westby@ubuntu.com-20110601143004-wy5jrvj06x72qiqs
Tags: upstream-2.3.11
Import upstream version 2.3.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
=begin
 
2
  poparser.rb - Generate a .mo
 
3
 
 
4
  Copyright (C) 2003-2009 Masao Mutoh <mutoh at highway.ne.jp>
 
5
 
 
6
  You may redistribute it and/or modify it under the same
 
7
  license terms as Ruby.
 
8
=end
 
9
 
 
10
#MODIFIED
 
11
# removed include GetText etc
 
12
# added stub translation method _(x)
 
13
require 'racc/parser'
 
14
 
 
15
module GetText
 
16
 
 
17
  class PoParser < Racc::Parser
 
18
 
 
19
    def _(x)
 
20
      x
 
21
    end
 
22
 
 
23
module_eval <<'..end src/poparser.ry modeval..id7a99570e05', 'src/poparser.ry', 108
 
24
  def unescape(orig)
 
25
    ret = orig.gsub(/\\n/, "\n")
 
26
    ret.gsub!(/\\t/, "\t")
 
27
    ret.gsub!(/\\r/, "\r")
 
28
    ret.gsub!(/\\"/, "\"")
 
29
    ret
 
30
  end
 
31
  
 
32
  def parse(str, data, ignore_fuzzy = true)
 
33
    @comments = []
 
34
    @data = data
 
35
    @fuzzy = false
 
36
    @msgctxt = ""
 
37
    $ignore_fuzzy = ignore_fuzzy
 
38
 
 
39
    str.strip!
 
40
    @q = []
 
41
    until str.empty? do
 
42
      case str
 
43
      when /\A\s+/
 
44
        str = $'
 
45
      when /\Amsgctxt/
 
46
        @q.push [:MSGCTXT, $&]
 
47
        str = $'
 
48
      when /\Amsgid_plural/
 
49
        @q.push [:MSGID_PLURAL, $&]
 
50
        str = $'
 
51
      when /\Amsgid/
 
52
        @q.push [:MSGID, $&]
 
53
        str = $'
 
54
      when /\Amsgstr/
 
55
        @q.push [:MSGSTR, $&]
 
56
        str = $'
 
57
      when /\A\[(\d+)\]/
 
58
        @q.push [:PLURAL_NUM, $1]
 
59
        str = $'
 
60
      when /\A\#~(.*)/
 
61
        $stderr.print _("Warning: obsolete msgid exists.\n")
 
62
        $stderr.print "         #{$&}\n"
 
63
        @q.push [:COMMENT, $&]
 
64
        str = $'
 
65
      when /\A\#(.*)/
 
66
        @q.push [:COMMENT, $&]
 
67
        str = $'      
 
68
      when /\A\"(.*)\"/
 
69
        @q.push [:STRING, $1]
 
70
        str = $'
 
71
      else
 
72
        #c = str[0,1]
 
73
        #@q.push [:STRING, c]
 
74
        str = str[1..-1]
 
75
      end
 
76
    end 
 
77
    @q.push [false, '$end']
 
78
    if $DEBUG
 
79
      @q.each do |a,b|
 
80
      puts "[#{a}, #{b}]"
 
81
      end
 
82
    end
 
83
    @yydebug = true if $DEBUG
 
84
    do_parse
 
85
 
 
86
    if @comments.size > 0
 
87
      @data.set_comment(:last, @comments.join("\n"))
 
88
    end
 
89
    @data
 
90
  end
 
91
  
 
92
  def next_token
 
93
    @q.shift
 
94
  end
 
95
 
 
96
  def on_message(msgid, msgstr)
 
97
    if msgstr.size > 0
 
98
      @data[msgid] = msgstr
 
99
      @data.set_comment(msgid, @comments.join("\n"))
 
100
    end
 
101
    @comments.clear
 
102
    @msgctxt = ""
 
103
  end
 
104
      
 
105
  def on_comment(comment)
 
106
    @fuzzy = true if (/fuzzy/ =~ comment)
 
107
    @comments << comment
 
108
  end 
 
109
 
 
110
 
 
111
..end src/poparser.ry modeval..id7a99570e05
 
112
 
 
113
##### racc 1.4.5 generates ###
 
114
 
 
115
racc_reduce_table = [
 
116
 0, 0, :racc_error,
 
117
 0, 10, :_reduce_none,
 
118
 2, 10, :_reduce_none,
 
119
 2, 10, :_reduce_none,
 
120
 2, 10, :_reduce_none,
 
121
 2, 12, :_reduce_5,
 
122
 1, 13, :_reduce_none,
 
123
 1, 13, :_reduce_none,
 
124
 4, 15, :_reduce_8,
 
125
 5, 16, :_reduce_9,
 
126
 2, 17, :_reduce_10,
 
127
 1, 17, :_reduce_none,
 
128
 3, 18, :_reduce_12,
 
129
 1, 11, :_reduce_13,
 
130
 2, 14, :_reduce_14,
 
131
 1, 14, :_reduce_15 ]
 
132
 
 
133
racc_reduce_n = 16
 
134
 
 
135
racc_shift_n = 26
 
136
 
 
137
racc_action_table = [
 
138
     3,    13,     5,     7,     9,    15,    16,    17,    20,    17,
 
139
    13,    17,    13,    13,    11,    17,    23,    20,    13,    17 ]
 
140
 
 
141
racc_action_check = [
 
142
     1,    16,     1,     1,     1,    12,    12,    12,    18,    18,
 
143
     7,    14,    15,     9,     3,    19,    20,    21,    23,    25 ]
 
144
 
 
145
racc_action_pointer = [
 
146
   nil,     0,   nil,    14,   nil,   nil,   nil,     3,   nil,     6,
 
147
   nil,   nil,     0,   nil,     4,     5,    -6,   nil,     2,     8,
 
148
     8,    11,   nil,    11,   nil,    12 ]
 
149
 
 
150
racc_action_default = [
 
151
    -1,   -16,    -2,   -16,    -3,   -13,    -4,   -16,    -6,   -16,
 
152
    -7,    26,   -16,   -15,    -5,   -16,   -16,   -14,   -16,    -8,
 
153
   -16,    -9,   -11,   -16,   -10,   -12 ]
 
154
 
 
155
racc_goto_table = [
 
156
    12,    22,    14,     4,    24,     6,     2,     8,    18,    19,
 
157
    10,    21,     1,   nil,   nil,   nil,    25 ]
 
158
 
 
159
racc_goto_check = [
 
160
     5,     9,     5,     3,     9,     4,     2,     6,     5,     5,
 
161
     7,     8,     1,   nil,   nil,   nil,     5 ]
 
162
 
 
163
racc_goto_pointer = [
 
164
   nil,    12,     5,     2,     4,    -7,     6,     9,    -7,   -17 ]
 
165
 
 
166
racc_goto_default = [
 
167
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil ]
 
168
 
 
169
racc_token_table = {
 
170
 false => 0,
 
171
 Object.new => 1,
 
172
 :COMMENT => 2,
 
173
 :MSGID => 3,
 
174
 :MSGCTXT => 4,
 
175
 :MSGID_PLURAL => 5,
 
176
 :MSGSTR => 6,
 
177
 :STRING => 7,
 
178
 :PLURAL_NUM => 8 }
 
179
 
 
180
racc_use_result_var = true
 
181
 
 
182
racc_nt_base = 9
 
183
 
 
184
Racc_arg = [
 
185
 racc_action_table,
 
186
 racc_action_check,
 
187
 racc_action_default,
 
188
 racc_action_pointer,
 
189
 racc_goto_table,
 
190
 racc_goto_check,
 
191
 racc_goto_default,
 
192
 racc_goto_pointer,
 
193
 racc_nt_base,
 
194
 racc_reduce_table,
 
195
 racc_token_table,
 
196
 racc_shift_n,
 
197
 racc_reduce_n,
 
198
 racc_use_result_var ]
 
199
 
 
200
Racc_token_to_s_table = [
 
201
'$end',
 
202
'error',
 
203
'COMMENT',
 
204
'MSGID',
 
205
'MSGCTXT',
 
206
'MSGID_PLURAL',
 
207
'MSGSTR',
 
208
'STRING',
 
209
'PLURAL_NUM',
 
210
'$start',
 
211
'msgfmt',
 
212
'comment',
 
213
'msgctxt',
 
214
'message',
 
215
'string_list',
 
216
'single_message',
 
217
'plural_message',
 
218
'msgstr_plural',
 
219
'msgstr_plural_line']
 
220
 
 
221
Racc_debug_parser = true
 
222
 
 
223
##### racc system variables end #####
 
224
 
 
225
 # reduce 0 omitted
 
226
 
 
227
 # reduce 1 omitted
 
228
 
 
229
 # reduce 2 omitted
 
230
 
 
231
 # reduce 3 omitted
 
232
 
 
233
 # reduce 4 omitted
 
234
 
 
235
module_eval <<'.,.,', 'src/poparser.ry', 25
 
236
  def _reduce_5( val, _values, result )
 
237
    @msgctxt = unescape(val[1]) + "\004"
 
238
   result
 
239
  end
 
240
.,.,
 
241
 
 
242
 # reduce 6 omitted
 
243
 
 
244
 # reduce 7 omitted
 
245
 
 
246
module_eval <<'.,.,', 'src/poparser.ry', 48
 
247
  def _reduce_8( val, _values, result )
 
248
    if @fuzzy and $ignore_fuzzy 
 
249
      if val[1] != ""
 
250
        $stderr.print _("Warning: fuzzy message was ignored.\n")
 
251
        $stderr.print "         msgid '#{val[1]}'\n"
 
252
      else
 
253
        on_message('', unescape(val[3]))
 
254
      end
 
255
      @fuzzy = false
 
256
    else
 
257
      on_message(@msgctxt + unescape(val[1]), unescape(val[3]))
 
258
    end
 
259
    result = ""
 
260
   result
 
261
  end
 
262
.,.,
 
263
 
 
264
module_eval <<'.,.,', 'src/poparser.ry', 65
 
265
  def _reduce_9( val, _values, result )
 
266
    if @fuzzy and $ignore_fuzzy
 
267
      if val[1] != ""
 
268
        $stderr.print _("Warning: fuzzy message was ignored.\n")
 
269
        $stderr.print "msgid = '#{val[1]}\n"
 
270
      else
 
271
        on_message('', unescape(val[3]))
 
272
      end
 
273
      @fuzzy = false
 
274
    else
 
275
      on_message(@msgctxt + unescape(val[1]) + "\000" + unescape(val[3]), unescape(val[4]))
 
276
    end
 
277
    result = ""
 
278
   result
 
279
  end
 
280
.,.,
 
281
 
 
282
module_eval <<'.,.,', 'src/poparser.ry', 76
 
283
  def _reduce_10( val, _values, result )
 
284
    if val[0].size > 0
 
285
      result = val[0] + "\000" + val[1]
 
286
    else
 
287
      result = ""
 
288
    end
 
289
   result
 
290
  end
 
291
.,.,
 
292
 
 
293
 # reduce 11 omitted
 
294
 
 
295
module_eval <<'.,.,', 'src/poparser.ry', 84
 
296
  def _reduce_12( val, _values, result )
 
297
    result = val[2]
 
298
   result
 
299
  end
 
300
.,.,
 
301
 
 
302
module_eval <<'.,.,', 'src/poparser.ry', 91
 
303
  def _reduce_13( val, _values, result )
 
304
    on_comment(val[0])
 
305
   result
 
306
  end
 
307
.,.,
 
308
 
 
309
module_eval <<'.,.,', 'src/poparser.ry', 99
 
310
  def _reduce_14( val, _values, result )
 
311
    result = val.delete_if{|item| item == ""}.join
 
312
   result
 
313
  end
 
314
.,.,
 
315
 
 
316
module_eval <<'.,.,', 'src/poparser.ry', 103
 
317
  def _reduce_15( val, _values, result )
 
318
    result = val[0]
 
319
   result
 
320
  end
 
321
.,.,
 
322
 
 
323
 def _reduce_none( val, _values, result )
 
324
  result
 
325
 end
 
326
 
 
327
  end   # class PoParser
 
328
 
 
329
end   # module GetText