API Docs for:
Show:

File: src\lib\collections\scripts.coffee

# =====================================
# Requires

# External
typeChecker = require('typechecker')

# Local
ElementsCollection = require('./elements')


# =====================================
# Classes

###*
# Scripts collection class. A DocPad
# project's script file paths
# @class ScriptCollection
# @constructor
# @extends ElementsCollection
###
class ScriptsCollection extends ElementsCollection

	###*
	# Add an element to the collection
	# Right now we just support strings
	# @method add
	# @param {Array} values string array of file paths
	# @param {Object} opts
	###
	add: (values,opts) ->
		# Prepare
		opts or= {}
		opts.defer ?= true
		opts.async ?= false
		opts.attrs or= ''
		if typeChecker.isArray(values)
			values = values.slice()
		else if values
			values = [values]
		else
			values = []

		# Build attrs
		opts.attrs += """defer="defer" """  if opts.defer
		opts.attrs += """async="async" """  if opts.async

		# Convert urls into script element html
		for value,key in values
			if typeChecker.isString(value)
				if value[0] is '<'
					continue  # we are an element already, don't bother doing anything
				else if value.indexOf(' ') is -1
					# we are a url
					values[key] = """
						<script #{opts.attrs} src="#{value}"></script>
						"""
				else
					# we are inline
					values[key] = """
						<script #{opts.attrs}>#{value}</script>
						"""

		# Call the super with our values
		super(values, opts)


# =====================================
# Export
module.exports = ScriptsCollection