Sha256: 1eb3df9cc0b34c469d786cb78b51061f1ee42bffdfc8381bc778e37b7e960f2a

Contents?: true

Size: 1.98 KB

Versions: 44

Compression:

Stored size: 1.98 KB

Contents

require 'ruby2js'

module Ruby2JS
  module Filter
    module CamelCase
      include SEXP

      WHITELIST = %w{
        attr_accessor
      }

      def camelCase(symbol)
        symbol.to_s.gsub(/_[a-z]/) {|match| match[1].upcase}
      end

      def on_send(node)
        if node.children[0] == nil and WHITELIST.include? node.children[1].to_s
          super
        elsif node.children[1] =~ /_.*\w$/
          super S((node.is_method? ? :call : :attr) , node.children[0],
            camelCase(node.children[1]), *node.children[2..-1])
        else
          super
        end
      end

      def on_def(node)
        if node.children[0] =~ /_.*\w$/
          super S(:def , camelCase(node.children[0]), *node.children[1..-1])
        else
          super
        end
      end

      def on_optarg(node)
        if node.children[0] =~ /_.*\w$/
          super S(:optarg , camelCase(node.children[0]), *node.children[1..-1])
        else
          super
        end
      end

      def on_lvar(node)
        if node.children[0] =~ /_.*\w$/
          super S(:lvar , camelCase(node.children[0]), *node.children[1..-1])
        else
          super
        end
      end

      def on_arg(node)
        if node.children[0] =~ /_.*\w$/
          super S(:arg , camelCase(node.children[0]), *node.children[1..-1])
        else
          super
        end
      end

      def on_lvasgn(node)
        if node.children[0] =~ /_.*\w$/
          super S(:lvasgn , camelCase(node.children[0]), *node.children[1..-1])
        else
          super
        end
      end

      def on_sym(node)
        if node.children[0] =~ /_.*\w$/
          super S(:sym , camelCase(node.children[0]), *node.children[1..-1])
        else
          super
        end
      end

      def on_defs(node)
        if node.children[1] =~ /_.*\w$/
          super S(:defs , node.children[0],
            camelCase(node.children[1]), *node.children[2..-1])
        else
          super
        end
      end
    end

    DEFAULTS.push CamelCase
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
ruby2js-2.1.24 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.23 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.22 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.21 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.20 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.19 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.18 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.17 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.16 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.15 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.14 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.13 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.12 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.11 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.10 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.9 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.8 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.7 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.6 lib/ruby2js/filter/camelCase.rb
ruby2js-2.1.5 lib/ruby2js/filter/camelCase.rb