aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/json.rb
blob: 6c828293e8deb0585a244197aac2c5df1455910e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
require 'active_support/json/encoding'
require 'active_support/json/decoding'

module ActiveSupport
  module JSON
    RESERVED_WORDS = %w(
      abstract      delete        goto          private       transient
      boolean       do            if            protected     try
      break         double        implements    public        typeof
      byte          else          import        return        var
      case          enum          in            short         void
      catch         export        instanceof    static        volatile
      char          extends       int           super         while
      class         final         interface     switch        with
      const         finally       long          synchronized
      continue      float         native        this
      debugger      for           new           throw
      default       function      package       throws
    ) #:nodoc:

    class << self
      def valid_identifier?(key) #:nodoc:
        key.to_s =~ /^[[:alpha:]_$][[:alnum:]_$]*$/ && !reserved_word?(key)
      end

      def reserved_word?(key) #:nodoc:
        RESERVED_WORDS.include?(key.to_s)
      end
    end
  end
end