Class: GettextScanner
Constant Summary collapse
- SINGLE =
"'((?:[^\\\\]|(?:\\\\'))+?)'"- DOUBLE =
'"((?:[^\\\\]|(?:\\\\"))+?)"'- MSG_PATTERN_SINGLE =
/\W(?:s_|N_|_|_i)\(#{SINGLE}\)/mu- MSG_PATTERN_DOUBLE =
/\W(?:s_|N_|_|_i)\(#{DOUBLE}\)/mu- MSG_PATTERN_PLURAL =
/\Wn_\(#{SINGLE},\s*#{SINGLE},\s*.+?\)/mu
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from String
#interpolate, #strip_q, #strip_q!, #unescape_quote
Class Method Details
.Gettext(source) ⇒ Object
15 16 17 |
# File 'lib/gettext.rb', line 15 def GettextScanner::Gettext(source) GettextScanner.new(source).gettext end |
Instance Method Details
#gettext ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/gettext.rb', line 19 def gettext ret = (scan(MSG_PATTERN_SINGLE) + scan(MSG_PATTERN_DOUBLE)).flatten.uniq.sort plur = scan(MSG_PATTERN_PLURAL).uniq ret += plur.sort ret.collect{|m| case m when String # singular msg Msg.new(m.unescape_quote, nil) when Array # plural msg Msg.new(m[0].unescape_quote, nil, m[1].unescape_quote) end } end |