diff --git a/app/templates/play/level/tome/spell_palette_entry_popover.jade b/app/templates/play/level/tome/spell_palette_entry_popover.jade index a8a79503e..39acb7fc4 100644 --- a/app/templates/play/level/tome/spell_palette_entry_popover.jade +++ b/app/templates/play/level/tome/spell_palette_entry_popover.jade @@ -3,30 +3,34 @@ h4 | - code.prop-type= doc.type == 'function' && doc.owner == 'this' ? 'method' : doc.type if doc.type != 'function' - | (read-only) + if writable + | (writable) + else + | (read-only) .description!= marked(doc.description || 'Still undocumented, sorry.') -if doc.example - p.example - strong Example: - div!= marked("```\n" + doc.example + "```") -else if doc.type == 'function' && argumentExamples.length - p.example - strong Example: - div - if language == 'javascript' - code= doc.owner + '.' + doc.name + '(' + argumentExamples.join(', ') + ');' - else if language == 'coffeescript' - code= doc.ownerName + (doc.ownerName == '@' ? '' : '.') + doc.name + ' ' + argumentExamples.join(', ') - else if language == 'python' - code= doc.ownerName + '.' + doc.name + '(' + argumentExamples.join(', ') + ')' - else if language == 'clojure' - code= '(.' + doc.name + ' ' + doc.ownerName + ' ' + argumentExamples.join(', ') + ')' - else if language == 'lua' - code= doc.ownerName + ':' + doc.name + '(' + argumentExamples.join(', ') + ')' - else if language == 'io' - code= (doc.ownerName == 'this' ? '' : doc.ownerName + ' ') + doc.name + '(' + argumentExamples.join(', ') + ')' +if !selectedMethod + if doc.example + p.example + strong Example: + div!= marked("```\n" + doc.example + "```") + else if doc.type == 'function' && argumentExamples.length + p.example + strong Example: + div + if language == 'javascript' + code= doc.owner + '.' + doc.name + '(' + argumentExamples.join(', ') + ');' + else if language == 'coffeescript' + code= doc.ownerName + (doc.ownerName == '@' ? '' : '.') + doc.name + ' ' + argumentExamples.join(', ') + else if language == 'python' + code= doc.ownerName + '.' + doc.name + '(' + argumentExamples.join(', ') + ')' + else if language == 'clojure' + code= '(.' + doc.name + ' ' + doc.ownerName + ' ' + argumentExamples.join(', ') + ')' + else if language == 'lua' + code= doc.ownerName + ':' + doc.name + '(' + argumentExamples.join(', ') + ')' + else if language == 'io' + code= (doc.ownerName == 'this' ? '' : doc.ownerName + ' ') + doc.name + '(' + argumentExamples.join(', ') + ')' if (doc.type != 'function' && doc.type != 'snippet') || doc.name == 'now' p.value @@ -64,3 +68,7 @@ if doc.returns | ) if doc.returns.description div!= marked(doc.returns.description) + +if selectedMethod + p + em Write the body of this method below. \ No newline at end of file diff --git a/app/views/play/level/tome/doc_formatter.coffee b/app/views/play/level/tome/doc_formatter.coffee index dab9a0ee8..1ab73a448 100644 --- a/app/views/play/level/tome/doc_formatter.coffee +++ b/app/views/play/level/tome/doc_formatter.coffee @@ -93,7 +93,7 @@ module.exports = class DocFormatter obj[prop] = null formatPopover: -> - content = popoverTemplate doc: @doc, language: @options.language, value: @formatValue(), marked: marked, argumentExamples: (arg.example or arg.default or arg.name for arg in @doc.args ? []) + content = popoverTemplate doc: @doc, language: @options.language, value: @formatValue(), marked: marked, argumentExamples: (arg.example or arg.default or arg.name for arg in @doc.args ? []), writable: @options.writable, selectedMethod: @options.selectedMethod owner = if @doc.owner is 'this' then @options.thang else window[@doc.owner] content = content.replace /#{spriteName}/g, @options.thang.type ? @options.thang.spriteName # Prefer type, and excluded the quotes we'd get with @formatValue content.replace /\#\{(.*?)\}/g, (s, properties) => @formatValue downTheChain(owner, properties.split('.')) diff --git a/app/views/play/level/tome/spell_list_tab_entry_view.coffee b/app/views/play/level/tome/spell_list_tab_entry_view.coffee index 32d4682b1..877229f54 100644 --- a/app/views/play/level/tome/spell_list_tab_entry_view.coffee +++ b/app/views/play/level/tome/spell_list_tab_entry_view.coffee @@ -61,7 +61,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView found = true break return unless found - docFormatter = new DocFormatter doc: doc, thang: @thang, language: @options.language + docFormatter = new DocFormatter doc: doc, thang: @thang, language: @options.language, selectedMethod: true @$el.find('code').popover( animation: true html: true diff --git a/app/views/play/level/tome/spell_palette_view.coffee b/app/views/play/level/tome/spell_palette_view.coffee index 6ea3d7e70..4482da630 100644 --- a/app/views/play/level/tome/spell_palette_view.coffee +++ b/app/views/play/level/tome/spell_palette_view.coffee @@ -59,7 +59,7 @@ module.exports = class SpellPaletteView extends View for lc in lcs for doc in (lc.get('propertyDocumentation') ? []) if doc.codeLanguages and not (@options.language in doc.codeLanguages) - excludedDocs[doc.name] = doc + excludedDocs['__' + doc.name] = doc continue allDocs['__' + doc.name] ?= [] allDocs['__' + doc.name].push doc @@ -103,8 +103,8 @@ module.exports = class SpellPaletteView extends View doc = _.find (allDocs['__' + prop] ? []), (doc) -> return true if doc.owner is owner return (owner is 'this' or owner is 'more') and (not doc.owner? or doc.owner is 'this') - if not doc and not excludedDocs[prop] - console.log 'could not find doc for', prop, 'from', allDocs['__' + prop], 'for', owner, 'of', propGroups unless doc + if not doc and not excludedDocs['__' + prop] + console.log 'could not find doc for', prop, 'from', allDocs['__' + prop], 'for', owner, 'of', propGroups doc ?= prop if doc @entries.push @addEntry(doc, shortenize, tabbify, owner is 'snippets') @@ -135,7 +135,8 @@ module.exports = class SpellPaletteView extends View null addEntry: (doc, shortenize, tabbify, isSnippet=false) -> - new SpellPaletteEntryView doc: doc, thang: @thang, shortenize: shortenize, tabbify: tabbify, isSnippet: isSnippet, language: @options.language + writable = (if _.isString(doc) then doc else doc.name) in (@thang.apiUserProperties ? []) + new SpellPaletteEntryView doc: doc, thang: @thang, shortenize: shortenize, tabbify: tabbify, isSnippet: isSnippet, language: @options.language, writable: writable onDisableControls: (e) -> @toggleControls e, false onEnableControls: (e) -> @toggleControls e, true diff --git a/app/views/play/level/tome/spell_view.coffee b/app/views/play/level/tome/spell_view.coffee index f9f43da33..a92b708f5 100644 --- a/app/views/play/level/tome/spell_view.coffee +++ b/app/views/play/level/tome/spell_view.coffee @@ -179,9 +179,7 @@ module.exports = class SpellView extends View doc = _.find (e.allDocs['__' + prop] ? []), (doc) -> return true if doc.owner is owner return (owner is 'this' or owner is 'more') and (not doc.owner? or doc.owner is 'this') - console.log 'could not find doc for', prop, 'from', e.allDocs['__' + prop], 'for', owner, 'of', e.propGroups unless doc - doc ?= prop - if doc.snippets?[e.language] + if doc?.snippets?[e.language] entry = content: doc.snippets[e.language].code name: doc.name