precis-js
Version:
A JavaScript implementation of RFC 7564 (The PRECIS Framework).
31 lines (21 loc) • 768 B
text/coffeescript
precis = require '../constants'
### !pragma coverage-skip-next ###
log2 = Math.log2 or (n) -> Math.log(n) / Math.LN2
bits = (n) -> (log2(n) + 1) | 0
precisBits = bits Object.keys(precis.PRECIS_CATEGORY).length - 1
bidiBits = bits Object.keys(precis.BIDI_CLASS).length - 1
precisShift = bidiBits + 1
bidiShift = 1
precisMask = (1 << precisBits) - 1
bidiMask = (1 << bidiBits) - 1
module.exports = class CodepointPropertyReader
constructor: () ->
precisCategory: (codepoint) ->
data = .get codepoint
(data >> precisShift) & precisMask
bidiClass: (codepoint) ->
data = .get codepoint
(data >> bidiShift) & bidiMask
isNonAsciiSpace: (codepoint) ->
data = .get codepoint
data & 1