# @ts-check

import subString_getType from './getType'

###* @type import('./subString').SubString ###
export default (text, start = 0, end = 0) ->

  unless (subString_getType text) == 'string'
    throw new Error "subString: Expected string, got #{ subString_getType text }"

  subString_len = StrLen text

  if start > subString_len then start = subString_len
  if start < 0 then start = subString_len + start

  unless end then end = subString_len
  if end > subString_len then end = subString_len
  if end < 0 then end = subString_len + end

  if start > end then [start, end] = [end, start]

  return SubStr text, start + 1, end - start