"""ttLib.macUtils.py -- Various Mac-specific stuff."""
from io import BytesIO
from fontTools.misc.macRes import ResourceReader, ResourceError


def getSFNTResIndices(path):
	"""Determine whether a file has a 'sfnt' resource fork or not."""
	try:
		reader = ResourceReader(path)
		indices = reader.getIndices('sfnt')
		reader.close()
		return indices
	except ResourceError:
		return []


def openTTFonts(path):
	"""Given a pathname, return a list of TTFont objects. In the case
	of a flat TTF/OTF file, the list will contain just one font object;
	but in the case of a Mac font suitcase it will contain as many
	font objects as there are sfnt resources in the file.
	"""
	from fontTools import ttLib
	fonts = []
	sfnts = getSFNTResIndices(path)
	if not sfnts:
		fonts.append(ttLib.TTFont(path))
	else:
		for index in sfnts:
			fonts.append(ttLib.TTFont(path, index))
		if not fonts:
			raise ttLib.TTLibError("no fonts found in file '%s'" % path)
	return fonts


class SFNTResourceReader(BytesIO):

	"""Simple read-only file wrapper for 'sfnt' resources."""

	def __init__(self, path, res_name_or_index):
		from fontTools import ttLib
		reader = ResourceReader(path)
		if isinstance(res_name_or_index, str):
			rsrc = reader.getNamedResource('sfnt', res_name_or_index)
		else:
			rsrc = reader.getIndResource('sfnt', res_name_or_index)
		if rsrc is None:
			raise ttLib.TTLibError("sfnt resource not found: %s" % res_name_or_index)
		reader.close()
		self.rsrc = rsrc
		super(SFNTResourceReader, self).__init__(rsrc.data)
		self.name = path
