1 if (typeof(JSAN) != 'undefined' ) {
2 JSAN.use("jquery", []);
9 Text.Markup = function(styles) {
10 if(! (this.markup_styles = styles) ) {
11 console.error('must pass style to new Text.Markup()');
15 Text.Markup.prototype.inflate_regions = function( regions ) {
18 return jQuery.map( regions, function(a,i) {
19 var style = mu.markup_styles[a[0]];
23 console.error('markup style "' + a + '" not defined');
27 if( typeof style == 'object' ) {
28 return [[[style[0],a[1]],999000-ordering],[[style[1],a[2]],-ordering]];
30 return [[[style,a[1]],999000-ordering]];
35 Text.Markup.prototype.markup = function( regions, target_string ) {
36 // expand the two-position markups into two one-position markups and decorate with ordering
37 var markup_defs = this.inflate_regions(regions);
39 // sort the markup definitions in reverse order by coordinate and
41 markup_defs.sort( function(a,b) {
42 return (b[0][1] - a[0][1]) || (b[1] - a[1]);
46 // do the string insertions and return a new string
47 for ( var i = 0; i < markup_defs.length; i++ ) {
48 var def = markup_defs[i][0];
49 target_string = target_string.slice( 0, def[1] ) + def[0] + target_string.slice( def[1] );