def initialize(raw_content_or_raw_filename, attributes, identifier, params=nil)
params ||= {}
params = { :mtime => params } if params.is_a?(Time)
params[:binary] = false unless params.has_key?(:binary)
if raw_content_or_raw_filename.nil?
raise "attempted to create an item with no content/filename (identifier #{identifier})"
end
@is_binary = params[:binary]
if @is_binary
@raw_filename = raw_content_or_raw_filename
else
@raw_content = raw_content_or_raw_filename
end
@attributes = attributes.symbolize_keys_recursively
@identifier = identifier.cleaned_identifier.freeze
@attributes.merge!(:mtime => params[:mtime]) if params[:mtime]
@parent = nil
@children = []
@reps = []
end