Added inline docs

This commit is contained in:
neauoire 2019-11-03 10:08:08 -05:00
parent d4380e9887
commit de586b699b
4 changed files with 35 additions and 29 deletions

View File

@ -73,11 +73,6 @@ function Commander (ronin) {
this.setStatus()
}
this.getLastfn = function () {
const pos = this._input.value.substr(0, this._input.selectionStart).lastIndexOf('(')
return this._input.value.substr(pos).split(' ')[0].replace(/\(/g, '').replace(/\)/g, '').trim()
}
this.reindent = function () {
let val = this._input.value.replace(/\n/g, '').replace(/ \)/g, ')').replace(/ +(?= )/g, '').replace(/\( \(/g, '((').replace(/\) \)/g, '))').trim()
let depth = 0
@ -115,14 +110,7 @@ function Commander (ronin) {
if (msg && msg !== this._log.textContent) {
this._log.textContent = `${msg}`
}
// Docs
// const lstFn = this.getLastfn()
// const rect = ronin.surface.getFrame()
// TODO
// const _docs = this.docs.hasDocs(lstFn) === true ? this.docs.print(lstFn) : `${ronin.source}:${this.length()} ${rect.w}x${rect.h}`
// if (_docs !== this._docs.textContent) {
// this._docs.textContent = `${_docs}`
// }
this._docs.textContent = this.getDocs()
}
// Injection
@ -224,10 +212,38 @@ function Commander (ronin) {
setTimeout(() => { this._run.className = '' }, 150)
}
// Docs
this.getCurrentWord = () => {
const pos = this._input.value.substr(0, this._input.selectionStart).lastIndexOf('(')
return this._input.value.substr(pos).split(' ')[0].replace(/\(/g, '').replace(/\)/g, '').trim()
}
this.getCurrentFunction = () => {
const word = this.getCurrentWord()
let mostSimilar = ''
for (const id of Object.keys(ronin.library)) {
if (id.substr(0, word.length) === word) {
mostSimilar = id
}
}
return mostSimilar
}
this.getDocs = (id) => {
const name = this.getCurrentFunction()
const fn = ronin.library[name]
if (!fn) { return }
const fnString = fn.toString()
if (fnString.indexOf(') => {') < 0) { return }
const fnParams = fnString.split(') => {')[0].substr(1).replace(/,/g, '').trim()
return `(${name} ${fnParams})`
}
// Splash
this.splash = `; welcome to ronin
; v2.40
this.splash = `
; Ronin v2.40
(clear)
(def logo-path "M60,60 L195,60 A45,45 0 0,1 240,105 A45,45 0 0,1 195,150 L60,150 M195,150 A45,45 0 0,1 240,195 L240,240 ")
(def pos-x
@ -235,7 +251,8 @@ function Commander (ronin) {
(def pos-y
(sub frame:m 150))
(stroke
(svg pos-x pos-y logo-path) theme:b_high 5)`
(svg pos-x pos-y logo-path) theme:b_high 5)
`
function insert (str, add, i) {
return [str.slice(0, i), `${add}`, str.slice(i)].join('')

View File

@ -4,7 +4,6 @@
function Library (ronin) {
// IO
this.import = async (name, shape, alpha = 1) => { // Imports a graphic file with format.
const src = ronin.cache.get(name)
if (!src) { ronin.log('No data for ' + name); return }

View File

@ -7,6 +7,7 @@
/* global Surface */
/* global Library */
/* global Lisp */
/* global Image */
/* global requestAnimationFrame */
function Ronin () {
@ -38,7 +39,7 @@ function Ronin () {
this.acels.set('File', 'New', 'CmdOrCtrl+N', () => { this.source.new(); this.surface.clear(); this.commander.clear() })
this.acels.set('File', 'Save', 'CmdOrCtrl+S', () => { this.source.save('export.lisp', this.commander._input.value, 'text/plain') })
this.acels.set('File', 'Export Image', 'CmdOrCtrl+E', () => { this.source.download('export.png', ronin.surface.el.toDataURL('image/png', 1.0), 'image/png') })
this.acels.set('File', 'Export Image', 'CmdOrCtrl+E', () => { this.source.download('export.png', this.surface.el.toDataURL('image/png', 1.0), 'image/png') })
this.acels.set('File', 'Open', 'CmdOrCtrl+O', () => { this.source.open('lisp', this.whenOpen) })
this.acels.set('File', 'Revert', 'CmdOrCtrl+W', () => { this.source.revert() })
this.acels.set('View', 'Toggle Guides', 'CmdOrCtrl+Shift+H', () => { this.surface.toggleGuides() })

View File

@ -244,9 +244,6 @@ function Surface (ronin) {
this._guide.height = size.h
this._guide.style.width = (size.w / this.ratio) + 'px'
this._guide.style.height = (size.h / this.ratio) + 'px'
if (fit === true) {
this.fitWindow(size)
}
}
this.copy = function (rect) {
@ -292,14 +289,6 @@ function Surface (ronin) {
})
}
this.fitWindow = function (size) {
console.log('TODO')
// const win = require('electron').remote.getCurrentWindow()
// const pad = { w: ronin.commander.isVisible === true ? 400 : 60, h: 60 }
// if (size.w < 10 || size.h < 10) { return }
// win.setSize(Math.floor((size.w / this.ratio) + pad.w), Math.floor((size.h / this.ratio) + pad.h), true)
}
this.maximize = () => {
this.resize(this.bounds())
}