diff --git a/Gruntfile.coffee b/Gruntfile.coffee index dfbd96ab1..a468c0a8b 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -11,10 +11,9 @@ util = require 'util' ######################################################################################################################## LIBRARY_ALIAS_MAPPING = [ - './node_modules/jquery/dist/jquery.js:jquery' './node_modules/backbone/backbone.js:backbone' './node_modules/jade/runtime.js:jade' - './node_modules/markdown/lib/index.js:markdown' + './node_modules/jquery/dist/jquery.js:jquery' './node_modules/underscore/underscore.js:underscore' './node_modules/when/when.js:when' ] @@ -54,9 +53,6 @@ module.exports = (grunt)-> copy: styles: files: [expand:true, cwd:'./src/css', src:'**/*.scss', dest:'./dist/src/css'] - style_extras: - files: - './dist/css/mocha.css': ['./node_modules/mocha/mocha.css'] exorcise: dev: @@ -133,7 +129,7 @@ module.exports = (grunt)-> files: ['./static/**/*'] tasks: ['rsync:static'] coffee: - files: ['./src/**/*.coffee'] + files: ['./src/**/*.coffee', './src/**/*.js'] tasks: ['browserify:dev', 'exorcise'] jade: files: ['./src/**/*.jade'] diff --git a/package.json b/package.json index 91b9e7e6c..0b4d6d4d7 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "crafting-guide-common": "^1.0.0", "jade": "^1.8.2", "jquery": "^2.1.3", - "markdown": "^0.5.0", + "marked": "^0.3.3", "underscore": "^1.7.0", "when": "^3.6.4" } diff --git a/src/coffee/controllers/markdown_section_controller.coffee b/src/coffee/controllers/markdown_section_controller.coffee index b960d803c..36760ba4d 100644 --- a/src/coffee/controllers/markdown_section_controller.coffee +++ b/src/coffee/controllers/markdown_section_controller.coffee @@ -5,10 +5,10 @@ Copyright (c) 2015 by Redwood Labs All rights reserved. ### -BaseController = require './base_controller' -_ = require 'underscore' -{markdown} = require 'markdown' -{Url} = require '../constants' +BaseController = require './base_controller' +convertMarkdown = require 'marked' +_ = require 'underscore' +{Url} = require '../constants' ######################################################################################################################## @@ -31,13 +31,18 @@ module.exports = class MarkdownSectionController extends BaseController onDidRender: -> @$title = @$('h2') @$markdownPanel = @$('.markdown') + super refresh: -> @$title.html @title - @$markdownPanel.empty() - @$markdownPanel.html @_parseMarkdown() + text = @model + text = @_convertWikiLinks text + text = @_convertImageLinks text + + @$markdownPanel.html convertMarkdown text + super # Backbone.View Overrides ###################################################################### @@ -48,33 +53,18 @@ module.exports = class MarkdownSectionController extends BaseController # Private Methods ############################################################################## - _parseMarkdown: -> - return '' unless @model + _ - tree = markdown.parse @model, 'Maruku' + _convertImageLinks: (text)-> + text.replace /\!\[([^\]]*)\]\(([^\)]*)\)/g, (match, altText, fileName)=> + return "![#{altText}](#{@imageBase}/#{fileName})" - 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 if node[0] is 'img' - node[1].href = "#{@imageBase}/#{node[1].href}" - else - for index in [1...node.length] - if _.isArray node[index] - logger.indent() - findLinkRefs node[index] - logger.outdent() + _convertWikiLinks: (text)-> + text.replace /\[\[([^\]]*)\]\]/g, (match, name)=> + result = match + item = @modPack.findItemByName name + if item? + display = @modPack.findItemDisplay item.slug + result = "[#{name}](#{display.itemUrl})" - logger.verbose "replacing wiki-style links" - findLinkRefs tree - logger.verbose "finished" - - html = markdown.renderJsonML markdown.toHTMLTree tree - return html + return result diff --git a/src/coffee/main.coffee b/src/coffee/main.coffee index 2d6290816..4e348f838 100644 --- a/src/coffee/main.coffee +++ b/src/coffee/main.coffee @@ -12,6 +12,7 @@ CraftingGuideRouter = require './crafting_guide_router' FeedbackController = require './controllers/feedback_controller' _ = require './underscore_mixins' backbone = require 'backbone' +marked = require 'marked' views = require './views' {CraftingGuideClient} = require 'crafting-guide-common' {Logger} = require 'crafting-guide-common' @@ -48,6 +49,9 @@ client.onStatusChanged = (c, oldStatus, newStatus)-> backbone.$ = $ +marked.setOptions + sanitize: true + global.feedbackController = new FeedbackController el:'.view__feedback' feedbackController.render() diff --git a/src/jade/templates/markdown_section.jade b/src/jade/templates/markdown_section.jade index 1e77bb761..4d2f8f476 100644 --- a/src/jade/templates/markdown_section.jade +++ b/src/jade/templates/markdown_section.jade @@ -7,4 +7,4 @@ .view__markdown_section.section h2 - .panel.markdown + .panel.markdown \ No newline at end of file diff --git a/src/scss/markdown.scss b/src/scss/markdown.scss index 3c51200e3..761ff7ac1 100644 --- a/src/scss/markdown.scss +++ b/src/scss/markdown.scss @@ -51,6 +51,7 @@ All rights reserved. font-size: $font-size-normal; font-weight: bold; vertical-align: middle; + text-align: center; } td[align="center"] { diff --git a/src/scss/templates/index.scss b/src/scss/templates/index.scss index 61c5eaa87..e2022ba53 100644 --- a/src/scss/templates/index.scss +++ b/src/scss/templates/index.scss @@ -19,6 +19,7 @@ All rights reserved. @import 'item_selector'; @import 'item_selector_element'; @import 'login_page'; +@import 'markdown_section'; @import 'minimal_recipe'; @import 'mod'; @import 'mod_pack'; diff --git a/src/scss/templates/markdown_section.scss b/src/scss/templates/markdown_section.scss new file mode 100644 index 000000000..9f49252c5 --- /dev/null +++ b/src/scss/templates/markdown_section.scss @@ -0,0 +1,12 @@ +/* +Crafting Guide - markdown_section.scss + +Copyright (C) 2015 by Redwood Labs +All rights reserved. +*/ + +.view__markdown_section { + .editor { + width: 100%; + } +}