UNPKG

node-opcua-utils

Version:

pure nodejs OPCUA SDK - module utils

69 lines (68 loc) 3.07 kB
/** * @module node-opcua-utils */ export declare function capitalizeFirstLetter(str: string): string; export declare function isUpperCaseChar(c: string): boolean; export declare function isAlpha(c: string): boolean; export declare function countUpperCaseSlow(str: string): number; export declare function countAlphaSlow(str: string): number; export declare function countUpperCase(str: string): number; export declare function countAlpha(str: string): number; /** * * lowerFirstLetter convert a OPCUA Identifier to a javascript Identifier * * * **rational**: * * OPCUA and Javascript use two different rules to build identifiers. * * OPCUA Identifier usually starts with a upper case letter and word are join together, this is known as * the Pascal case, or CapitalizedWords convention. (for instance HelloWorld) * But sometime, OPCUA identifiers do not follow this convention strictly and we can find various * other convention being applied such as underscore between word, or addition of ACRONYMIC prefixes. * On it's own, this causes great confusion and inconsistency in programming style. * * Javascript uses a slightly different convention called camelCase where word are joined together * and inner words starts with a capital letter whereas first word starts with a lower case letter. * (for instance helloWorld) * * In node-opcua we have taken the opinionated decision to consistently use camelCase convention for * object properties so that all the code look nice and consistent. * the lowerFirstLetter method can be used to easily convert from the OPCUA naming convention * to javascript naming convention by applying the following rules. * * * each ascii sequence in a identifier will be converted to lower camel case. * * when an identifier only contains upper case letter then it will be untouched. ( i.e CQDF => CQFD) * (this rules helps to preserve acronyms) * * when a identifier starts with more than one UpperCase letter but still contain lowercase letter * then the first Uppercase letter excluding the last one will be converted to lower case * ( ie: EURange = > euRange) * * when a identifier contains several sequences delimited with underscores (_) the above rules * will be applied to each of the element of the sequence * ( ie: ALM_FlowOutOfTolerance => ALM_flowOutOfTolerance ( ALM=>ALM , FlowOutOfTolerance=>flowOutOfTolerance) * * **reference**: * * * https://en.wikipedia.org/wiki/Camel_case * * https://en.wikipedia.org/wiki/Hungarian_notation * * http://wiki.c2.com/?UnderscoreVersusCapitalAndLowerCaseVariableNaming * * * * @example * HelloWorld => helloWorld * XAxis => xAxis * EURange => euRange * DATE => DATE * XYZ => XYZ * AB => AB * Ab => ab * A => a * T1ABC8 => T1ABC8 * F_ABC_D => F_ABC_D * ALM_Timeout => ALM_timeout * SV_GasOn => SV_gasOn * DI_VAL_FlowImp => DI_VAL_flowImp */ export declare function lowerFirstLetter(str: string): string;