Method: Sequel::SequelMethods#split_symbol

Defined in:
lib/sequel/core.rb

#split_symbol(sym) ⇒ Object

Splits the symbol into three parts, if symbol splitting is enabled (not the default). Each part will either be a string or nil. If symbol splitting is disabled, returns an array with the first and third parts being nil, and the second part beind a string version of the symbol.

For columns, these parts are the table, column, and alias. For tables, these parts are the schema, table, and alias.



245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
# File 'lib/sequel/core.rb', line 245

def split_symbol(sym)
  unless v = Sequel.synchronize{SPLIT_SYMBOL_CACHE[sym]}
    if split_symbols?
      v = case s = sym.to_s
      when /\A((?:(?!__).)+)__((?:(?!___).)+)___(.+)\z/
        [$1.freeze, $2.freeze, $3.freeze].freeze
      when /\A((?:(?!___).)+)___(.+)\z/
        [nil, $1.freeze, $2.freeze].freeze
      when /\A((?:(?!__).)+)__(.+)\z/
        [$1.freeze, $2.freeze, nil].freeze
      else
        [nil, s.freeze, nil].freeze
      end
    else
      v = [nil,sym.to_s.freeze,nil].freeze
    end
    Sequel.synchronize{SPLIT_SYMBOL_CACHE[sym] = v}
  end
  v
end