penguin/AstroJS

Javascript framework for my blog

botanjs/src/Components/Vim/State/Marks.js

raw ยท 886 bytes

(function(){
	var ns = __namespace( "Components.Vim.State" );

	/** @type {System.Debug} */
	var debug = __import( "System.Debug" );

	var beep = __import( "Components.Vim.Beep" );

	var Keys = "'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"[]^.<>";

	var Marks = function()
	{
		this.__marks = {};
	};

	Marks.prototype.set = function( t, line, col )
	{
		if( Keys.indexOf( t ) == -1 )
		{
			beep();
			return false;
		}

		this.__marks[ t ] = [ line, col ];
		return true;
	};

	Marks.prototype.save = function()
	{
		var saved = {};
		// A-z
		for( var i = 1; i < 53; i ++ )
		{
			var k = Keys[ i ];
			if( this.__marks[ k ] != undefined )
			{
				saved[ k ] = this.__marks[ k ];
			}
		}

		return saved;
	};

	Marks.prototype.get = function( t )
	{
		return this.__marks[ t ];
	};

	__const( Marks, "Keys", Keys );

	ns[ NS_EXPORT ]( EX_CLASS, "Marks", Marks );

})();