parse() accepts filename instead of content