From 42ac04be41990be3033fc2f2c9a514e50e90ea52 Mon Sep 17 00:00:00 2001 From: Jeroen Knoops Date: Sun, 20 Jan 2013 20:04:32 +0100 Subject: [PATCH 1/3] Extractor now is subclass of Ruby19Parser to fix haml support --- Gemfile | 2 +- Gemfile.lock | 101 ++++++++--------- gemfiles/rails.2.3.gemfile | 2 +- gemfiles/rails.2.3.gemfile.lock | 44 ++++---- gemfiles/rails.3.0.gemfile | 2 +- gemfiles/rails.3.0.gemfile.lock | 46 ++++---- gemfiles/rails.3.1.gemfile | 2 +- gemfiles/rails.3.1.gemfile.lock | 46 ++++---- gemfiles/rails.3.2.gemfile | 2 +- gemfiles/rails.3.2.gemfile.lock | 103 +++++++++--------- .../ruby_gettext_extractor.rb | 2 +- spec/gettext_i18n_rails/haml_parser_spec.rb | 7 +- 12 files changed, 186 insertions(+), 173 deletions(-) diff --git a/Gemfile b/Gemfile index 10c063cc..87c736f1 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem 'gettext' gem 'haml' gem 'rails' gem 'rake' -gem 'ruby_parser', '~> 2.3' # 3 breaks haml/slim parsing +gem 'ruby_parser' gem 'rspec' gem 'slim' gem 'sqlite3' diff --git a/Gemfile.lock b/Gemfile.lock index 0fb97621..a7ed8992 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,31 +7,31 @@ PATH GEM remote: http://rubygems.org/ specs: - actionmailer (3.2.8) - actionpack (= 3.2.8) + actionmailer (3.2.11) + actionpack (= 3.2.11) mail (~> 2.4.4) - actionpack (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) + actionpack (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) builder (~> 3.0.0) erubis (~> 2.7.0) journey (~> 1.0.4) rack (~> 1.4.0) rack-cache (~> 1.2) rack-test (~> 0.6.1) - sprockets (~> 2.1.3) - activemodel (3.2.8) - activesupport (= 3.2.8) + sprockets (~> 2.2.1) + activemodel (3.2.11) + activesupport (= 3.2.11) builder (~> 3.0.0) - activerecord (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) + activerecord (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) arel (~> 3.0.2) tzinfo (~> 0.3.29) - activeresource (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) - activesupport (3.2.8) + activeresource (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) + activesupport (3.2.11) i18n (~> 0.6) multi_json (~> 1.0) appraisal (0.5.1) @@ -39,70 +39,73 @@ GEM rake arel (3.0.2) builder (3.0.4) - bump (0.3.5) + bump (0.3.9) diff-lcs (1.1.3) erubis (2.7.0) - fast_gettext (0.6.11) - gettext (2.3.3) + fast_gettext (0.7.0) + gettext (2.3.7) + levenshtein locale haml (3.1.7) hike (1.2.1) i18n (0.6.1) journey (1.0.4) - json (1.7.5) + json (1.7.6) + levenshtein (0.2.2) locale (2.0.8) mail (2.4.4) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.19) - multi_json (1.3.7) + multi_json (1.5.0) polyglot (0.3.3) - rack (1.4.1) + rack (1.4.4) rack-cache (1.2) rack (>= 0.4) rack-ssl (1.3.2) rack rack-test (0.6.2) rack (>= 1.0) - rails (3.2.8) - actionmailer (= 3.2.8) - actionpack (= 3.2.8) - activerecord (= 3.2.8) - activeresource (= 3.2.8) - activesupport (= 3.2.8) + rails (3.2.11) + actionmailer (= 3.2.11) + actionpack (= 3.2.11) + activerecord (= 3.2.11) + activeresource (= 3.2.11) + activesupport (= 3.2.11) bundler (~> 1.0) - railties (= 3.2.8) - railties (3.2.8) - actionpack (= 3.2.8) - activesupport (= 3.2.8) + railties (= 3.2.11) + railties (3.2.11) + actionpack (= 3.2.11) + activesupport (= 3.2.11) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) - rake (0.9.2.2) + rake (10.0.3) rdoc (3.12) json (~> 1.4) - rspec (2.11.0) - rspec-core (~> 2.11.0) - rspec-expectations (~> 2.11.0) - rspec-mocks (~> 2.11.0) - rspec-core (2.11.1) - rspec-expectations (2.11.3) + rspec (2.12.0) + rspec-core (~> 2.12.0) + rspec-expectations (~> 2.12.0) + rspec-mocks (~> 2.12.0) + rspec-core (2.12.2) + rspec-expectations (2.12.1) diff-lcs (~> 1.1.3) - rspec-mocks (2.11.3) - ruby_parser (2.3.1) - sexp_processor (~> 3.0) - sexp_processor (3.2.0) - slim (1.0.4) - temple (~> 0.3.4) - tilt (~> 1.3.2) - sprockets (2.1.3) + rspec-mocks (2.12.1) + ruby_parser (3.1.1) + sexp_processor (~> 4.1) + sexp_processor (4.1.3) + slim (1.3.6) + temple (~> 0.5.5) + tilt (~> 1.3.3) + sprockets (2.2.2) hike (~> 1.2) + multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - sqlite3 (1.3.6) - temple (0.3.5) + sqlite3 (1.3.7) + temple (0.5.5) thor (0.16.0) tilt (1.3.3) treetop (1.4.12) @@ -122,6 +125,6 @@ DEPENDENCIES rails rake rspec - ruby_parser (~> 2.3) + ruby_parser slim sqlite3 diff --git a/gemfiles/rails.2.3.gemfile b/gemfiles/rails.2.3.gemfile index 8d19fab4..97f17aa5 100644 --- a/gemfiles/rails.2.3.gemfile +++ b/gemfiles/rails.2.3.gemfile @@ -7,7 +7,7 @@ gem "bump" gem "gettext" gem "haml" gem "rake" -gem "ruby_parser", "~> 2.3" +gem "ruby_parser" gem "rspec" gem "slim" gem "sqlite3" diff --git a/gemfiles/rails.2.3.gemfile.lock b/gemfiles/rails.2.3.gemfile.lock index 5aa76ce0..4fc49d64 100644 --- a/gemfiles/rails.2.3.gemfile.lock +++ b/gemfiles/rails.2.3.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /Users/mgrosser/code/tools/gettext_i18n_rails + remote: /Users/jeroenknoops/projects/github/gettext_i18n_rails specs: gettext_i18n_rails (0.8.0) fast_gettext (>= 0.4.8) @@ -20,12 +20,14 @@ GEM appraisal (0.5.1) bundler rake - bump (0.3.5) + bump (0.3.9) diff-lcs (1.1.3) - fast_gettext (0.6.11) - gettext (2.3.3) + fast_gettext (0.7.0) + gettext (2.3.7) + levenshtein locale haml (3.1.7) + levenshtein (0.2.2) locale (2.0.8) rack (1.1.3) rails (2.3.14) @@ -35,23 +37,23 @@ GEM activeresource (= 2.3.14) activesupport (= 2.3.14) rake (>= 0.8.3) - rake (0.9.2.2) - rspec (2.11.0) - rspec-core (~> 2.11.0) - rspec-expectations (~> 2.11.0) - rspec-mocks (~> 2.11.0) - rspec-core (2.11.1) - rspec-expectations (2.11.3) + rake (10.0.3) + rspec (2.12.0) + rspec-core (~> 2.12.0) + rspec-expectations (~> 2.12.0) + rspec-mocks (~> 2.12.0) + rspec-core (2.12.2) + rspec-expectations (2.12.1) diff-lcs (~> 1.1.3) - rspec-mocks (2.11.3) - ruby_parser (2.3.1) - sexp_processor (~> 3.0) - sexp_processor (3.2.0) - slim (1.0.4) - temple (~> 0.3.4) - tilt (~> 1.3.2) - sqlite3 (1.3.6) - temple (0.3.5) + rspec-mocks (2.12.1) + ruby_parser (3.1.1) + sexp_processor (~> 4.1) + sexp_processor (4.1.3) + slim (1.3.6) + temple (~> 0.5.5) + tilt (~> 1.3.3) + sqlite3 (1.3.7) + temple (0.5.5) tilt (1.3.3) PLATFORMS @@ -66,6 +68,6 @@ DEPENDENCIES rails (~> 2.3.0) rake rspec - ruby_parser (~> 2.3) + ruby_parser slim sqlite3 diff --git a/gemfiles/rails.3.0.gemfile b/gemfiles/rails.3.0.gemfile index 45e5b604..052f4e90 100644 --- a/gemfiles/rails.3.0.gemfile +++ b/gemfiles/rails.3.0.gemfile @@ -7,7 +7,7 @@ gem "bump" gem "gettext" gem "haml" gem "rake" -gem "ruby_parser", "~> 2.3" +gem "ruby_parser" gem "rspec" gem "slim" gem "sqlite3" diff --git a/gemfiles/rails.3.0.gemfile.lock b/gemfiles/rails.3.0.gemfile.lock index d1e3b1ff..72c74e43 100644 --- a/gemfiles/rails.3.0.gemfile.lock +++ b/gemfiles/rails.3.0.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /Users/mgrosser/code/tools/gettext_i18n_rails + remote: /Users/jeroenknoops/projects/github/gettext_i18n_rails specs: gettext_i18n_rails (0.8.0) fast_gettext (>= 0.4.8) @@ -39,16 +39,18 @@ GEM rake arel (2.0.10) builder (2.1.2) - bump (0.3.5) + bump (0.3.9) diff-lcs (1.1.3) erubis (2.6.6) abstract (>= 1.0.0) - fast_gettext (0.6.11) - gettext (2.3.3) + fast_gettext (0.7.0) + gettext (2.3.7) + levenshtein locale haml (3.1.7) i18n (0.5.0) - json (1.7.5) + json (1.7.6) + levenshtein (0.2.2) locale (2.0.8) mail (2.2.19) activesupport (>= 2.3.6) @@ -76,25 +78,25 @@ GEM rake (>= 0.8.7) rdoc (~> 3.4) thor (~> 0.14.4) - rake (0.9.2.2) + rake (10.0.3) rdoc (3.12) json (~> 1.4) - rspec (2.11.0) - rspec-core (~> 2.11.0) - rspec-expectations (~> 2.11.0) - rspec-mocks (~> 2.11.0) - rspec-core (2.11.1) - rspec-expectations (2.11.3) + rspec (2.12.0) + rspec-core (~> 2.12.0) + rspec-expectations (~> 2.12.0) + rspec-mocks (~> 2.12.0) + rspec-core (2.12.2) + rspec-expectations (2.12.1) diff-lcs (~> 1.1.3) - rspec-mocks (2.11.3) - ruby_parser (2.3.1) - sexp_processor (~> 3.0) - sexp_processor (3.2.0) - slim (1.0.4) - temple (~> 0.3.4) - tilt (~> 1.3.2) - sqlite3 (1.3.6) - temple (0.3.5) + rspec-mocks (2.12.1) + ruby_parser (3.1.1) + sexp_processor (~> 4.1) + sexp_processor (4.1.3) + slim (1.3.6) + temple (~> 0.5.5) + tilt (~> 1.3.3) + sqlite3 (1.3.7) + temple (0.5.5) thor (0.14.6) tilt (1.3.3) treetop (1.4.12) @@ -114,6 +116,6 @@ DEPENDENCIES rails (~> 3.0.0) rake rspec - ruby_parser (~> 2.3) + ruby_parser slim sqlite3 diff --git a/gemfiles/rails.3.1.gemfile b/gemfiles/rails.3.1.gemfile index 226df598..ce9024a0 100644 --- a/gemfiles/rails.3.1.gemfile +++ b/gemfiles/rails.3.1.gemfile @@ -7,7 +7,7 @@ gem "bump" gem "gettext" gem "haml" gem "rake" -gem "ruby_parser", "~> 2.3" +gem "ruby_parser" gem "rspec" gem "slim" gem "sqlite3" diff --git a/gemfiles/rails.3.1.gemfile.lock b/gemfiles/rails.3.1.gemfile.lock index 5f8fea33..176105df 100644 --- a/gemfiles/rails.3.1.gemfile.lock +++ b/gemfiles/rails.3.1.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /Users/mgrosser/code/tools/gettext_i18n_rails + remote: /Users/jeroenknoops/projects/github/gettext_i18n_rails specs: gettext_i18n_rails (0.8.0) fast_gettext (>= 0.4.8) @@ -40,16 +40,18 @@ GEM rake arel (2.2.3) builder (3.0.4) - bump (0.3.5) + bump (0.3.9) diff-lcs (1.1.3) erubis (2.7.0) - fast_gettext (0.6.11) - gettext (2.3.3) + fast_gettext (0.7.0) + gettext (2.3.7) + levenshtein locale haml (3.1.7) hike (1.2.1) i18n (0.6.1) - json (1.7.5) + json (1.7.6) + levenshtein (0.2.2) locale (2.0.8) mail (2.3.3) i18n (>= 0.4.0) @@ -82,29 +84,29 @@ GEM rake (>= 0.8.7) rdoc (~> 3.4) thor (~> 0.14.6) - rake (0.9.2.2) + rake (10.0.3) rdoc (3.12) json (~> 1.4) - rspec (2.11.0) - rspec-core (~> 2.11.0) - rspec-expectations (~> 2.11.0) - rspec-mocks (~> 2.11.0) - rspec-core (2.11.1) - rspec-expectations (2.11.3) + rspec (2.12.0) + rspec-core (~> 2.12.0) + rspec-expectations (~> 2.12.0) + rspec-mocks (~> 2.12.0) + rspec-core (2.12.2) + rspec-expectations (2.12.1) diff-lcs (~> 1.1.3) - rspec-mocks (2.11.3) - ruby_parser (2.3.1) - sexp_processor (~> 3.0) - sexp_processor (3.2.0) - slim (1.0.4) - temple (~> 0.3.4) - tilt (~> 1.3.2) + rspec-mocks (2.12.1) + ruby_parser (3.1.1) + sexp_processor (~> 4.1) + sexp_processor (4.1.3) + slim (1.3.6) + temple (~> 0.5.5) + tilt (~> 1.3.3) sprockets (2.0.4) hike (~> 1.2) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - sqlite3 (1.3.6) - temple (0.3.5) + sqlite3 (1.3.7) + temple (0.5.5) thor (0.14.6) tilt (1.3.3) treetop (1.4.12) @@ -124,6 +126,6 @@ DEPENDENCIES rails (~> 3.1.0) rake rspec - ruby_parser (~> 2.3) + ruby_parser slim sqlite3 diff --git a/gemfiles/rails.3.2.gemfile b/gemfiles/rails.3.2.gemfile index 5324651c..0896e0fc 100644 --- a/gemfiles/rails.3.2.gemfile +++ b/gemfiles/rails.3.2.gemfile @@ -7,7 +7,7 @@ gem "bump" gem "gettext" gem "haml" gem "rake" -gem "ruby_parser", "~> 2.3" +gem "ruby_parser" gem "rspec" gem "slim" gem "sqlite3" diff --git a/gemfiles/rails.3.2.gemfile.lock b/gemfiles/rails.3.2.gemfile.lock index 725aad2e..dbc6092a 100644 --- a/gemfiles/rails.3.2.gemfile.lock +++ b/gemfiles/rails.3.2.gemfile.lock @@ -1,5 +1,5 @@ PATH - remote: /Users/mgrosser/code/tools/gettext_i18n_rails + remote: /Users/jeroenknoops/projects/github/gettext_i18n_rails specs: gettext_i18n_rails (0.8.0) fast_gettext (>= 0.4.8) @@ -7,31 +7,31 @@ PATH GEM remote: http://rubygems.org/ specs: - actionmailer (3.2.8) - actionpack (= 3.2.8) + actionmailer (3.2.11) + actionpack (= 3.2.11) mail (~> 2.4.4) - actionpack (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) + actionpack (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) builder (~> 3.0.0) erubis (~> 2.7.0) journey (~> 1.0.4) rack (~> 1.4.0) rack-cache (~> 1.2) rack-test (~> 0.6.1) - sprockets (~> 2.1.3) - activemodel (3.2.8) - activesupport (= 3.2.8) + sprockets (~> 2.2.1) + activemodel (3.2.11) + activesupport (= 3.2.11) builder (~> 3.0.0) - activerecord (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) + activerecord (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) arel (~> 3.0.2) tzinfo (~> 0.3.29) - activeresource (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) - activesupport (3.2.8) + activeresource (3.2.11) + activemodel (= 3.2.11) + activesupport (= 3.2.11) + activesupport (3.2.11) i18n (~> 0.6) multi_json (~> 1.0) appraisal (0.5.1) @@ -39,70 +39,73 @@ GEM rake arel (3.0.2) builder (3.0.4) - bump (0.3.5) + bump (0.3.9) diff-lcs (1.1.3) erubis (2.7.0) - fast_gettext (0.6.11) - gettext (2.3.3) + fast_gettext (0.7.0) + gettext (2.3.7) + levenshtein locale haml (3.1.7) hike (1.2.1) i18n (0.6.1) journey (1.0.4) - json (1.7.5) + json (1.7.6) + levenshtein (0.2.2) locale (2.0.8) mail (2.4.4) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.19) - multi_json (1.3.7) + multi_json (1.5.0) polyglot (0.3.3) - rack (1.4.1) + rack (1.4.4) rack-cache (1.2) rack (>= 0.4) rack-ssl (1.3.2) rack rack-test (0.6.2) rack (>= 1.0) - rails (3.2.8) - actionmailer (= 3.2.8) - actionpack (= 3.2.8) - activerecord (= 3.2.8) - activeresource (= 3.2.8) - activesupport (= 3.2.8) + rails (3.2.11) + actionmailer (= 3.2.11) + actionpack (= 3.2.11) + activerecord (= 3.2.11) + activeresource (= 3.2.11) + activesupport (= 3.2.11) bundler (~> 1.0) - railties (= 3.2.8) - railties (3.2.8) - actionpack (= 3.2.8) - activesupport (= 3.2.8) + railties (= 3.2.11) + railties (3.2.11) + actionpack (= 3.2.11) + activesupport (= 3.2.11) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) - rake (0.9.2.2) + rake (10.0.3) rdoc (3.12) json (~> 1.4) - rspec (2.11.0) - rspec-core (~> 2.11.0) - rspec-expectations (~> 2.11.0) - rspec-mocks (~> 2.11.0) - rspec-core (2.11.1) - rspec-expectations (2.11.3) + rspec (2.12.0) + rspec-core (~> 2.12.0) + rspec-expectations (~> 2.12.0) + rspec-mocks (~> 2.12.0) + rspec-core (2.12.2) + rspec-expectations (2.12.1) diff-lcs (~> 1.1.3) - rspec-mocks (2.11.3) - ruby_parser (2.3.1) - sexp_processor (~> 3.0) - sexp_processor (3.2.0) - slim (1.0.4) - temple (~> 0.3.4) - tilt (~> 1.3.2) - sprockets (2.1.3) + rspec-mocks (2.12.1) + ruby_parser (3.1.1) + sexp_processor (~> 4.1) + sexp_processor (4.1.3) + slim (1.3.6) + temple (~> 0.5.5) + tilt (~> 1.3.3) + sprockets (2.2.2) hike (~> 1.2) + multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - sqlite3 (1.3.6) - temple (0.3.5) + sqlite3 (1.3.7) + temple (0.5.5) thor (0.16.0) tilt (1.3.3) treetop (1.4.12) @@ -122,6 +125,6 @@ DEPENDENCIES rails (~> 3.2.0) rake rspec - ruby_parser (~> 2.3) + ruby_parser slim sqlite3 diff --git a/lib/gettext_i18n_rails/ruby_gettext_extractor.rb b/lib/gettext_i18n_rails/ruby_gettext_extractor.rb index c781eb4c..4fab995d 100644 --- a/lib/gettext_i18n_rails/ruby_gettext_extractor.rb +++ b/lib/gettext_i18n_rails/ruby_gettext_extractor.rb @@ -19,7 +19,7 @@ def target?(file) # :nodoc: return file =~ /\.rb$/ end - class Extractor < RubyParser + class Extractor < Ruby19Parser def initialize(filename, targets) @filename = filename @targets = Hash.new diff --git a/spec/gettext_i18n_rails/haml_parser_spec.rb b/spec/gettext_i18n_rails/haml_parser_spec.rb index 9c17fe9d..f36945a1 100644 --- a/spec/gettext_i18n_rails/haml_parser_spec.rb +++ b/spec/gettext_i18n_rails/haml_parser_spec.rb @@ -23,10 +23,11 @@ end end - it "ignores 1.9 errors and shows the paths of offending files" do + it "should parse the 1.9" do with_file '= _("xxxx", x: 1)' do |path| - $stderr.should_receive(:puts).with{|x| x =~ /file ignored.*#{path}/ } - parser.parse(path, [1]).should == [1] + parser.parse(path, []).should == [ + ["xxxx", "#{path}:1"] + ] end end From 5552be37f2e88265438d4647d2976a64815d80ed Mon Sep 17 00:00:00 2001 From: Jeroen Knoops Date: Sun, 20 Jan 2013 21:08:21 +0100 Subject: [PATCH 2/3] Added support for Ruby 1.8 --- .../ruby_gettext_extractor.rb | 66 ++++++++++++------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/lib/gettext_i18n_rails/ruby_gettext_extractor.rb b/lib/gettext_i18n_rails/ruby_gettext_extractor.rb index 4fab995d..4255e0ca 100644 --- a/lib/gettext_i18n_rails/ruby_gettext_extractor.rb +++ b/lib/gettext_i18n_rails/ruby_gettext_extractor.rb @@ -1,7 +1,7 @@ # new ruby parser from retoo, that should help extracting "#{_('xxx')}", which is needed especially when parsing haml files require 'ruby_parser' -module RubyGettextExtractor +module RubyGettextExtractor extend self def parse(file, targets = []) # :nodoc: @@ -11,7 +11,15 @@ def parse(file, targets = []) # :nodoc: def parse_string(content, file, targets=[]) # file is just for information in error messages - parser = Extractor.new(file, targets) + + case RUBY_VERSION + when /^1\.8/ then + parser = Extractor18.new(file, targets) + when /^1\.9/ then + parser = Extractor19.new(file, targets) + else + raise "unrecognized RUBY_VERSION #{RUBY_VERSION}" + end parser.run(content) end @@ -19,12 +27,12 @@ def target?(file) # :nodoc: return file =~ /\.rb$/ end - class Extractor < Ruby19Parser + module ExtractorMethods def initialize(filename, targets) @filename = filename @targets = Hash.new @results = [] - + targets.each do |a| k, v = a # things go wrong if k already exists, but this @@ -32,7 +40,7 @@ def initialize(filename, targets) @targets[k] = a @results << a end - + super() end @@ -44,26 +52,26 @@ def run(content) self.parse(safe_content) return @results end - + def extract_string(node) if node.first == :str return node.last elsif node.first == :call type, recv, meth, args = node - + # node has to be in form of "string"+("other_string") return nil unless recv && meth == :+ - + # descent recurrsivly to determine the 'receiver' of the string concatination # "foo" + "bar" + baz" is # ("foo".+("bar")).+("baz") first_part = extract_string(recv) - + if args.first == :arglist && args.size == 2 second_part = extract_string(args.last) - + return nil if second_part.nil? - + return first_part.to_s + second_part.to_s else raise "uuh?" @@ -72,7 +80,7 @@ def extract_string(node) return nil end end - + def extract_key(args, seperator) key = nil if args.size == 2 @@ -80,29 +88,29 @@ def extract_key(args, seperator) else # this could be n_("aaa","aaa2",1) # all strings arguemnts are extracted and joined with \004 or \000 - + arguments = args[1..(-1)] - + res = [] arguments.each do |a| str = extract_string(a) # only add strings res << str if str end - + return nil if res.empty? key = res.join(seperator) end - + return nil unless key - + key.gsub!("\n", '\n') key.gsub!("\t", '\t') key.gsub!("\0", '\0') - + return key end - + def new_call recv, meth, args = nil # we dont care if the method is called on a a object if recv.nil? @@ -113,21 +121,31 @@ def new_call recv, meth, args = nil else # skip end - + if key res = @targets[key] - + unless res res = [key] @results << res @targets[key] = res end - + res << "#{@filename}:#{lexer.lineno}" end end - + super recv, meth, args end end -end + + class Extractor18 < Ruby18Parser + include ExtractorMethods + end + + class Extractor19 < Ruby19Parser + include ExtractorMethods + end + + +end \ No newline at end of file From 0922e28ad7e6cb43af96bc28a60fc77d4a139ba9 Mon Sep 17 00:00:00 2001 From: Jeroen Knoops Date: Sun, 20 Jan 2013 21:32:18 +0100 Subject: [PATCH 3/3] Only run spec for 1.9 when ruby_version is 1.9.. this fixes the travis ree testrun --- spec/gettext_i18n_rails/haml_parser_spec.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/spec/gettext_i18n_rails/haml_parser_spec.rb b/spec/gettext_i18n_rails/haml_parser_spec.rb index f36945a1..c0016961 100644 --- a/spec/gettext_i18n_rails/haml_parser_spec.rb +++ b/spec/gettext_i18n_rails/haml_parser_spec.rb @@ -23,11 +23,13 @@ end end - it "should parse the 1.9" do - with_file '= _("xxxx", x: 1)' do |path| - parser.parse(path, []).should == [ - ["xxxx", "#{path}:1"] - ] + it "should parse the 1.9 if ruby_version is 1.9" do + if RUBY_VERSION =~ /^1\.9/ + with_file '= _("xxxx", x: 1)' do |path| + parser.parse(path, []).should == [ + ["xxxx", "#{path}:1"] + ] + end end end