#--
# Facets
# Copyright (c) Thomas Sawyer
#
# Ruby License
#
# This module is free software. You may use, modify, and/or redistribute this
# software under the same terms as Ruby.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.
#++

# Author::    Thomas Sawyer
# Copyright:: Copyright (c) 2005 Thomas Sawyer
# License::   Ruby License

# = Facets
#
# This the base system. It automitically loads the facets methods
# considered base and appends the facets locations to the load path.
#
# == Synopsis
#
#   require 'facets'
#   require 'string/blank'
#   require 'functor'
#

$: << File.join( File.dirname(__FILE__), 'facets/core' )
$: << File.join( File.dirname(__FILE__), 'facets/more' )

# These are the methods considered "base".
# A method is deemed base if it is obvious,
# simple, unobtrusive and/or widely useful.
#
# This list is still being refined.
#
# Note that the #cmp methods are simply aliases for #<=>,
# they are here b/c String.succ is not compataible
# with it's own #<=> method. The #cmp method proves
# an effective way of dealing with when needed.

# Elementary
require 'facets/core/comparable/cmp'
require 'facets/core/string/cmp'
require 'facets/core/nilclass/to_h'
require 'facets/core/binding/eval'
require 'facets/core/binding/self'
require 'facets/core/binding/caller'
require 'facets/core/module/basename'
require 'facets/core/proc/to_method'
require 'facets/core/kernel/constant'
require 'facets/core/kernel/__callee__'  # better name?
require 'facets/core/kernel/__method__'
require 'facets/core/symbol/to_proc'
require 'facets/core/symbol/to_s'

# Elementary (Know Thyself)
require 'facets/core/hash/to_h'
require 'facets/core/range/to_r'
require 'facets/core/regexp/to_re'
require 'facets/core/time/to_time'

# "Minis" (Shorthands)
require 'facets/core/module/is'
require 'facets/core/kernel/fn'
require 'facets/core/kernel/here'
# TODO need a singleton method !!!
#require 'facets/core/kernel/own' # better name?

# Convenience
require 'facets/core/array/to_h'
require 'facets/core/enumerable/to_h'
require 'facets/core/enumerable/collect_with_index'
require 'facets/core/enumerable/each_slice'
require 'facets/core/file/self/read_list'
require 'facets/core/float/round_to'
require 'facets/core/float/round_at'
require 'facets/core/hash/slice'
require 'facets/core/matchdata/match'
require 'facets/core/matchdata/matchtree'
require 'facets/core/string/blank'
require 'facets/core/string/to_re'

# New Features
require 'facets/core/symbol/not'
require 'facets/core/kernel/as'
require 'facets/core/hash/op_div'
require 'facets/core/array/op_div'

