1 /*
  2  * isGraph.js - Character type is graph char
  3  *
  4  * Copyright © 2012-2015, 2018, JEDLSoft
  5  *
  6  * Licensed under the Apache License, Version 2.0 (the "License");
  7  * you may not use this file except in compliance with the License.
  8  * You may obtain a copy of the License at
  9  *
 10  *     http://www.apache.org/licenses/LICENSE-2.0
 11  *
 12  * Unless required by applicable law or agreed to in writing, software
 13  * distributed under the License is distributed on an "AS IS" BASIS,
 14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 15  *
 16  * See the License for the specific language governing permissions and
 17  * limitations under the License.
 18  */
 19 
 20 var IString = require("./IString.js");
 21 var isSpace = require("./isSpace.js");
 22 var isCntrl = require("./isCntrl.js");
 23 
 24 /**
 25  * Return whether or not the first character is any printable character
 26  * other than space.<p>
 27  *
 28  * @static
 29  * @param {string|IString|number} ch character or code point to examine
 30  * @return {boolean} true if the first character is any printable character
 31  * other than space.
 32  */
 33 var isGraph = function (ch) {
 34     var num;
 35     switch (typeof(ch)) {
 36         case 'number':
 37             num = ch;
 38             break;
 39         case 'string':
 40             num = IString.toCodePoint(ch, 0);
 41             break;
 42         case 'undefined':
 43             return false;
 44         default:
 45             num = ch._toCodePoint(0);
 46             break;
 47     }
 48     return typeof(ch) !== 'undefined' && ch.length > 0 && !isSpace(num) && !isCntrl(num);
 49 };
 50 
 51 /**
 52  * @protected
 53  * @param {boolean} sync
 54  * @param {Object|undefined} loadParams
 55  * @param {function(*)|undefined} onLoad
 56  */
 57 isGraph._init = function (sync, loadParams, onLoad) {
 58     isSpace._init(sync, loadParams, function () {
 59         isCntrl._init(sync, loadParams, onLoad);
 60     });
 61 };
 62 
 63 module.exports = isGraph;
 64