code: function strategyForRange(beginLine, beginColumn, endLine, endColumn) {
        var keysToRange = {};
        var content = editorState.getCurrentContent();
        var i = 0;
  
        content.getBlockMap().forEach(function(block, blockKey) {
          if (i >= beginLine && i <= endLine) {
            if (beginLine == endLine) {
              keysToRange[blockKey] = {begin: beginColumn, end: endColumn};
            } else if (i == beginLine) {
              keysToRange[blockKey] = {begin: beginColumn, end: block.getText().length};
            } else if (i == endLine) {
              keysToRange[blockKey] = {begin: 0, end: endColumn};
            } else {
              keysToRange[blockKey] = {begin: 0, end: block.getText().length};
            }
          }
  
          i++;
        });
  
        return function(contentBlock, callback) {
          var key = contentBlock.getKey();
          if (keysToRange.hasOwnProperty(key)) {
            callback(keysToRange[key].begin,
                     Math.min(contentBlock.getText().length,
                              keysToRange[key].end));
          }
        };
      }
docs: Given a range, returns a corresponding 'strategy' for CompositeDecorator: a function that calls its callback for the source code range.