Skip to content

Instantly share code, notes, and snippets.

@donpark
Created March 15, 2012 00:05
Show Gist options
  • Save donpark/2040569 to your computer and use it in GitHub Desktop.
Save donpark/2040569 to your computer and use it in GitHub Desktop.
Parse SDP to JSON in Coffee
parseSDP = (text) ->
return if not text
lines = text.split('\r\n')
readSession lines
readSession = (lines) ->
session = {}
line = null
while line = lines.shift()
name = line.charAt(0)
value = line.slice(2)
if name is 'a' or name is 'b'
(session[name] ?= []).push value
else if name is 't'
(session.t ?= []).push readTime lines, { t: value }
else if name is 'm'
(session.m ?= []).push readMedia lines, { m: value }
else if name
session[name] = value
session
readTime = (lines, entry) ->
line = null
while line = lines.shift()
if line.charAt(0) is 'r'
(entry.r ?= []).push line.slice(2)
else
lines.unshift line
break
entry
readMedia = (lines, entry) ->
line = null
while line = lines.shift()
name = line.charAt(0)
value = line.slice(2)
if name is 'm'
lines.unshift line
break
else if name is 'a' or name is 'b'
(entry[name] ?= []).push value
else if name
entry[name] = value
entry
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment