class GetText::RubyParser::POExtractor
Constants
- ID
- MSGCTXT_ID
- MSGCTXT_PLURAL_ID
- PLURAL_ID
Attributes
comment_tag[RW]
use_comment[RW]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/gettext/tools/parser/ruby.rb, line 29 def initialize(*args) super(*args) @start_block = false @in_block_arguments = false @ignore_next_comma = false @need_definition_name = false @current_po_entry = nil @current_po_entry_nth_attribute = 0 @use_comment = false @comment_tag = nil @last_comment = "" @reset_comment = false @string_mark_stack = [] @string_stack = [] end
Public Instance Methods
on_default(event, token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 283 def on_default(event, token, po) trace(event, token) do process_method = "process_#{event}" start_block = @start_block if respond_to?(process_method) po = __send__(process_method, token, po) end if start_block and event != :on_sp @start_block = false end po end end
process_on_backtick(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 253 def process_on_backtick(token, po) @string_mark_stack << "`" @string_stack << "" po end
process_on_comma(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 226 def process_on_comma(token, po) unless @ignore_next_comma if @current_po_entry @current_po_entry_nth_attribute += 1 end end po end
process_on_comment(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 106 def process_on_comment(token, po) @last_comment = "" if @reset_comment @reset_comment = false if @last_comment.empty? content = token.gsub(/\A#\s*/, "").chomp if comment_to_be_extracted?(content) @last_comment << content end else content = token.gsub(/\A#/, "").chomp @last_comment << "\n" @last_comment << content end po end
process_on_const(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 96 def process_on_const(token, po) case token when "N_", "Nn_" # TODO: Check the next token is :on_lparen process_on_ident(token, po) else po end end
process_on_embexpr_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 215 def process_on_embexpr_beg(token, po) @current_po_entry = nil @current_po_entry_nth_attribute = 0 po end
process_on_heredoc_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 189 def process_on_heredoc_beg(token, po) if token.end_with?("'") @string_mark_stack << "'" else @string_mark_stack << "\"" end @string_stack << "" po end
process_on_heredoc_end(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 199 def process_on_heredoc_end(token, po) process_on_tstring_end(token, po) end
process_on_ident(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 71 def process_on_ident(token, po) store_po_entry(po) return po if @in_block_arguments return po if state.allbits?(Ripper::EXPR_ENDFN) case token when *ID @current_po_entry = POEntry.new(:normal) when *PLURAL_ID @current_po_entry = POEntry.new(:plural) when *MSGCTXT_ID @current_po_entry = POEntry.new(:msgctxt) when *MSGCTXT_PLURAL_ID @current_po_entry = POEntry.new(:msgctxt_plural) end if @current_po_entry @current_po_entry.add_comment(@last_comment) unless @last_comment.empty? @last_comment = "" @current_po_entry.references << "#{filename}:#{lineno}" @current_po_entry_nth_attribute = 0 end po end
process_on_int(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 221 def process_on_int(token, po) @ignore_next_comma = true po end
process_on_kw(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 56 def process_on_kw(token, po) store_po_entry(po) case token when "do" @start_block = true end po end
process_on_lbrace(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 65 def process_on_lbrace(token, po) store_po_entry(po) @start_block = (state == Ripper::EXPR_BEG) po end
process_on_nl(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 240 def process_on_nl(token, po) @reset_comment = true po end
process_on_op(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 45 def process_on_op(token, po) if @start_block @in_block_arguments = (token == "|") else if @in_block_arguments and token == "|" @in_block_arguments = false end end po end
process_on_qsymbols_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 265 def process_on_qsymbols_beg(token, po) @string_mark_stack << token @string_stack << "" po end
process_on_qwords_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 277 def process_on_qwords_beg(token, po) @string_mark_stack << token @string_stack << "" po end
process_on_regexp_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 203 def process_on_regexp_beg(token, po) @string_mark_stack << "\"" @string_stack << "" po end
process_on_regexp_end(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 209 def process_on_regexp_end(token, po) @string_mark_stack.pop @string_stack.pop po end
process_on_rparen(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 235 def process_on_rparen(token, po) store_po_entry(po) po end
process_on_sp(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 122 def process_on_sp(token, po) po end
process_on_symbeg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 245 def process_on_symbeg(token, po) if token.start_with?("%s") or [":'", ":\""].include?(token) @string_mark_stack << ":" @string_stack << "" end po end
process_on_symbols_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 259 def process_on_symbols_beg(token, po) @string_mark_stack << "\"" @string_stack << "" po end
process_on_tstring_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 126 def process_on_tstring_beg(token, po) if token.start_with?("%Q") @string_mark_stack << "\"" elsif token.start_with?("%q") @string_mark_stack << "'" elsif token.start_with?("%") @string_mark_stack << "\"" else @string_mark_stack << token end @string_stack << "" po end
process_on_tstring_content(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 140 def process_on_tstring_content(token, po) case @string_mark_stack.last when "\"", "`" @string_stack.last << token.gsub(/\\./) do |data| case data when "\\n" "\n" when "\\t" "\t" when "\\\\" "\\" when "\\\"" "\"" when "\\\#" "#" else data end end else @string_stack.last << token.gsub(/\\./) do |data| case data when "\\\\" "\\" when "\\'" "'" else data end end end po end
process_on_tstring_end(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 174 def process_on_tstring_end(token, po) @ignore_next_comma = false string_mark = @string_mark_stack.pop case string_mark when "\"", "'" last_string = @string_stack.pop if @current_po_entry and last_string @current_po_entry[@current_po_entry_nth_attribute] = (@current_po_entry[@current_po_entry_nth_attribute] || "") + last_string end end po end
process_on_words_beg(token, po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 271 def process_on_words_beg(token, po) @string_mark_stack << "\"" @string_stack << "" po end
Private Instance Methods
comment_to_be_extracted?(comment)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 324 def comment_to_be_extracted?(comment) return false unless @use_comment return true if @comment_tag.nil? comment.start_with?(@comment_tag) end
debug?()
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 299 def debug? @@debug end
store_po_entry(po)
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 317 def store_po_entry(po) return if @current_po_entry.nil? po << @current_po_entry if @current_po_entry.msgid @current_po_entry = nil @current_po_entry_nth_attribute = 0 end
trace(event_name, token) { || ... }
click to toggle source
# File lib/gettext/tools/parser/ruby.rb, line 303 def trace(event_name, token) if debug? status = [ event_name, token, state, ] status << :start_block if @start_block status << :in_block_arguments if @in_block_arguments pp status end yield end