Update markdown processing to handle more cases

This commit is contained in:
Andrew Miner
2015-03-24 19:05:13 -07:00
parent 4a45be71f9
commit d964047974
3 changed files with 50 additions and 4 deletions
@@ -6,18 +6,21 @@ All rights reserved.
###
BaseController = require './base_controller'
{Url} = require '../constants'
########################################################################################################################
module.exports = class MarkdownSectionController extends BaseController
constructor: (options={})->
if not options.modPack? then throw new Error 'options.modPack is required'
options.model ?= ''
options.title ?= 'Description'
options.templateName = 'markdown_section'
super options
@title = options.title
@modPack = options.modPack
@title = options.title
# BaseController Overrides #####################################################################
@@ -30,11 +33,42 @@ module.exports = class MarkdownSectionController extends BaseController
@$title.html @title
@$markdownPanel.empty()
@$markdownPanel.html _.parseMarkdown @model
@$markdownPanel.html @_parseMarkdown()
super
# Backbone.View Overrides ######################################################################
events: ->
return _.extend super,
'click .markdown': 'routeLinkClick'
'click .markdown a': 'routeLinkClick'
# Private Methods ##############################################################################
_parseMarkdown: ->
return '' unless @model
tree = markdown.parse @model, 'Maruku'
refs = tree[1].references
findLinkRefs = (node)=>
logger.debug "inspecting a #{node[0]}"
if node[0] is 'link_ref'
name = node[2]
logger.debug "found a link_ref for #{name}"
item = @modPack.findItemByName node[2]
if item?
logger.debug "found related item: #{item}"
node[0] = 'link'
node[1].href = Url.item itemSlug:item.slug.item, modSlug:item.slug.mod
delete node[1].ref
else
for index in [1...node.length]
if _.isArray node[index]
logger.indent()
findLinkRefs node[index]
logger.outdent()
findLinkRefs tree
html = markdown.renderJsonML markdown.toHTMLTree tree
return html