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 |