75 lines
2.4 KiB
CoffeeScript
75 lines
2.4 KiB
CoffeeScript
###
|
|
Crafting Guide - markdown_section_controller.coffee
|
|
|
|
Copyright (c) 2015 by Redwood Labs
|
|
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
|
|
|
|
@modPack = options.modPack
|
|
@title = options.title
|
|
|
|
# BaseController Overrides #####################################################################
|
|
|
|
onDidRender: ->
|
|
@$title = @$('h2')
|
|
@$markdownPanel = @$('.markdown')
|
|
super
|
|
|
|
refresh: ->
|
|
@$title.html @title
|
|
|
|
@$markdownPanel.empty()
|
|
@$markdownPanel.html @_parseMarkdown()
|
|
super
|
|
|
|
# Backbone.View Overrides ######################################################################
|
|
|
|
events: ->
|
|
return _.extend super,
|
|
'click .markdown a': 'routeLinkClick'
|
|
|
|
# Private Methods ##############################################################################
|
|
|
|
_parseMarkdown: ->
|
|
return '' unless @model
|
|
|
|
tree = markdown.parse @model, 'Maruku'
|
|
|
|
findLinkRefs = (node)=>
|
|
logger.verbose "inspecting a #{node[0]}"
|
|
if node[0] is 'link_ref'
|
|
logger.verbose "looking for item named: #{node[2]}"
|
|
item = @modPack.findItemByName node[2]
|
|
if item?
|
|
logger.verbose "found item #{item.slug}, updating link"
|
|
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()
|
|
|
|
logger.verbose "replacing wiki-style links"
|
|
findLinkRefs tree
|
|
logger.verbose "finished"
|
|
|
|
html = markdown.renderJsonML markdown.toHTMLTree tree
|
|
return html
|