module Neo4j
# == Keeps configuration for neo4j
#
# The most important configuration is Neo4j::Config[:storage_path] which is used to
# locate where the neo4j database is stored on the filesystem.
# If this directory is empty then a new database will be created, otherwise it will use the
# database from that directory.
#
# ==== Default Configurations
# :storage_path:: default tmp/neo4j where the database is stored
# :timestamps:: default true for Rails Neo4j::Model - if timestamps should be used when saving the model
# :lucene:: default hash keys: :fulltext, :exact configuration how the lucene index is stored
#
class Config
# This code is copied from merb-core/config.rb.
class << self
# Returns the hash of default config values for neo4j
#
# ==== Returns
# Hash:: The defaults for the config.
def defaults
@defaults ||= {
:storage_path => 'tmp/neo4j',
:timestamps => true,
:lucene => {
:fulltext => {"provider" => "lucene", "type" => "fulltext" },
:exact => {"provider" => "lucene", "type" => "exact" }}
}
end
# Yields the configuration.
#
# ==== Block parameters
# c :: The configuration parameters, a hash.
#
# ==== Examples
# Neo4j::Config.use do |config|
# config[:storage_path] = '/var/neo4j'
# end
#
# ==== Returns
# nil
def use
@configuration ||= {}
yield @configuration
nil
end
# Set the value of a config entry.
#
# ==== Parameters
# key :: The key to set the parameter for.
# val :: The value of the parameter.
#
def []=(key, val)
(@configuration ||= setup)[key] = val
end
# Gets the the value of a config entry
#
# ==== Parameters
# key:: The key of the config entry value we want
#
def [](key)
(@configuration ||= setup)[key]
end
# Remove the value of a config entry.
#
# ==== Parameters
# key