Sha256: de77490dc677529d26fe0ae57c02a93604f8f285a7c5b215e66f9e4f2cfba841

Contents?: true

Size: 1.53 KB

Versions: 19

Compression:

Stored size: 1.53 KB

Contents

require 'gettext/tools'
require 'spiderfw/templates/blocks/text'
require 'json'

module Spider; module I18n

    module JavascriptParser
        module_function
        
        GettextRegexp = /\W_\(['"]([^\)'"]+)['"](,\s*[^\)]+\s*)*\)/
        
        

        def target?(file)
            File.extname(file) == '.js'
        end

        def parse(file, ary)
            f = File.new(file)
            cnt = 0
            my_ary = []
            f.each_line do |line|
                cnt += 1
                scanner = ::StringScanner.new(line)
                while scanner.scan_until(GettextRegexp)
                    str = scanner.matched
                    str =~ GettextRegexp
                    found = false
                    (ary+my_ary).each do |msg|
                        if (msg[0] == $1)
                            msg << "#{file}:#{cnt}"
                            found = true
                            break
                        end
                    end
                    my_ary << [$1, "#{file}:#{cnt}"] unless found
                end
            end
            f.close
            unless my_ary.empty?
                dir = File.dirname(file)
                name = File.basename(file, '.js')
                i18n_file = File.join(dir, "#{name}.i18n.json")
                File.open(i18n_file, 'w') do |f|
                    f << my_ary.collect{ |a| a[0] }.to_json
                end
            end
            return ary + my_ary 
        end

    end
    
    ::GetText::RGetText.add_parser(JavascriptParser)

end; end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
spiderfw-0.6.39 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.38 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.37 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.35 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.34 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.33 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.32 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.31 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.30 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.29 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.28 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.27 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.26 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.26.pre1 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.25 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.24 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.23 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.22 lib/spiderfw/i18n/javascript_parser.rb
spiderfw-0.6.21 lib/spiderfw/i18n/javascript_parser.rb