file-prompt
Version:
An interactive prompt for selecting files from a directory.
1 lines • 2.16 kB
JavaScript
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function mapToObject(e,t){var r={};return e.forEach(function(e,n){r[e]=t[n]}),r}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();Object.defineProperty(exports,"__esModule",{value:!0});var Query=function(){function e(t){_classCallCheck(this,e),this.query=null,this.data={},this.rawQueryString=t,e.isValid(t)&&(this.query=String(t).trim().toLowerCase(),this.data=this.parse())}return _createClass(e,null,[{key:"createFrom",value:function(t){try{return t.split(/,| /g).filter(function(e){return""===e?!1:!0}).map(function(t){return new e(t)})}catch(r){return[]}}},{key:"extractNumbers",value:function(e){return e.match(/[\d]+/g).map(function(e){return Number(e)})}},{key:"isValid",value:function(e){return"string"==typeof e&&e.trim().length>0}}]),_createClass(e,[{key:"extractNumbers",value:function(){return e.extractNumbers(this.query)}},{key:"is",value:function(e){return e.toLowerCase()===this.query}},{key:"isAsterik",value:function(){return this.query.length<=2&&/\*$/.test(this.query)}},{key:"isInteger",value:function(){return Number.isInteger(Number(this.query))}},{key:"isStartOf",value:function(e){return e.toLowerCase().startsWith(this.data.value)}},{key:"isRange",value:function(){return/[\d]+[\s]*-[\s]*[\d]/g.test(this.query)}},{key:"isValid",value:function(){return e.isValid(this.query)}},{key:"parse",value:function(){var t={action:"select"},r=this.query;return"-"===this.query.slice(0,1)&&(t.action="unselect",r=this.query.slice(1)),this.isRange()?(t.type="range",t.value=mapToObject(["min","max"],e.extractNumbers(r))):this.isInteger()?(t.type="id",t.value=Number(r)):this.isAsterik()?t.type="all":(t.type="string",t.value=r),t.query=this.rawQueryString,t}},{key:"rawQuery",value:function(){return String(this.rawQueryString)}},{key:"toString",value:function(){return this.query}}]),e}();exports["default"]=Query;