Sha256: e5848a60d24e926c5f7b0d951ad4fb26459eb618fc1ca36ca4aad6ed0992250d

Contents?: true

Size: 1.98 KB

Versions: 11

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? ? :send : :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

11 entries across 11 versions & 1 rubygems

Version Path
ruby2js-1.15.1 lib/ruby2js/filter/camelCase.rb
ruby2js-1.15.0 lib/ruby2js/filter/camelCase.rb
ruby2js-1.14.1 lib/ruby2js/filter/camelCase.rb
ruby2js-1.14.0 lib/ruby2js/filter/camelCase.rb
ruby2js-1.13.1 lib/ruby2js/filter/camelCase.rb
ruby2js-1.13.0 lib/ruby2js/filter/camelCase.rb
ruby2js-1.12.2 lib/ruby2js/filter/camelCase.rb
ruby2js-1.12.1 lib/ruby2js/filter/camelCase.rb
ruby2js-1.12.0 lib/ruby2js/filter/camelCase.rb
ruby2js-1.11.1 lib/ruby2js/filter/camelCase.rb
ruby2js-1.11.0 lib/ruby2js/filter/camelCase.rb