X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/74081c8b2e9a8588505c40257556e17274fc80de..8f0bfbd922b46c4d9e484343694aaa141de5b4fc:/redakcja/static/js/button_scripts.js?ds=inline diff --git a/redakcja/static/js/button_scripts.js b/redakcja/static/js/button_scripts.js index 4aa0c95a..953383ce 100644 --- a/redakcja/static/js/button_scripts.js +++ b/redakcja/static/js/button_scripts.js @@ -51,7 +51,7 @@ function ScriptletCenter() this.scriptlets['insert_tag'] = function(context, params, text, move_forward, done) { var start_tag = '<'+params.tag; - var move_cursor = false; + var cursor_inside = false; for (var attr in params.attrs) { start_tag += ' '+attr+'="' + params.attrs[attr] + '"'; @@ -83,6 +83,9 @@ function ScriptletCenter() output += end_tag; } output += token; + + // keep cursor inside tag if some previous scriptlet has already moved it + cursor_inside = move_forward != 0; } else { if(params.nocontent) { @@ -90,12 +93,12 @@ function ScriptletCenter() } else { output = start_tag + end_tag; - move_cursor = true; + cursor_inside = true; } } - if (move_cursor) { - move_forward += params.tag.length+2; + if (cursor_inside) { + move_forward -= params.tag.length+3; } done(output, move_forward); @@ -114,7 +117,6 @@ function ScriptletCenter() }; }); - var partial = true; if(!text) done(text, move_forward); var changed = 0; @@ -155,7 +157,6 @@ function ScriptletCenter() }); if(!text) done(text, move_forward); - var original = text;$ nblck_each(exprs, function(expr, index) { $progress.html(600 + index); @@ -186,24 +187,7 @@ function ScriptletCenter() this.scriptlets['lowercase'] = function(context, params, text, move_forward, done) { if(!text) done(text, move_forward); - - var lcase = text.toLowerCase(); - var ucase = text.toUpperCase(); - - if(lcase == text) repl = ucase; /* was lowercase */ - else if(ucase != text) repl = lcase; /* neither lower- or upper-case */ - else { /* upper case -> camel-case */ - var words = $(lcase.split(/\s/)).map(function() { - if(this.length > 0) { - return this[0].toUpperCase() + this.slice(1); - } else { - return ''; - } - }); - text = words.join(' '); - } - - done(text, move_forward); + done(text.toLowerCase(), move_forward); }.bind(this); @@ -227,7 +211,47 @@ function ScriptletCenter() text = text + buf + '\n' + ebuf; } else { - move_forward += params.tag.length + 2; + text = "" + move_forward -= "".length; + } + + done(text, move_forward); + }.bind(this); + + + this.scriptlets['autotag'] = function(context, params, text, move_forward, done) + { + if(!text.match(/^\n+$/)) done(text, move_forward); + + function insert_done(output, mf) { + text += output; + } + + if (!params.split) params.split = 2; + if (!params.padding) params.padding = 3; + + chunks = text.replace(/^\n+|\n+$/, '').split(new RegExp("\\n{"+params.split+",}")); + text = text.match(/^\n+/); + if (!text) + text = ''; + padding = ''; + for(; params.padding; params.padding--) { + padding += "\n"; + } + + if (params.tag == 'strofa') + tagger = this.scriptlets['insert_stanza']; + else + tagger = this.scriptlets['insert_tag']; + + for (i in chunks) { + if (chunks[i]) { + if (params.tag == 'akap' && chunks[i].match(/^---/)) + tag = 'akap_dialog'; + else tag = params.tag; + tagger(context, {tag: tag}, chunks[i], 0, insert_done); + text += padding; + } } done(text, move_forward);