This repository was archived by the owner on Dec 12, 2022. It is now read-only.
  
  
  - 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
Code Examples
        Derk Norton edited this page Jan 24, 2019 
        ·
        52 revisions
      
    // import the framework module
const bali = require('bali-component-framework');
// constructors
const zero = new bali.Angle();  // defaults to zero
const pi = bali.parse('~pi');  // default units are radians
const piOver4 = new bali.Angle(bali.precision.PI/4);  // from raw value
const fortyFive = bali.Angle.fromLiteral('~45', bali.degrees);  // explicit declaration of units
const oneEighty = bali.parse('~180($units: $degrees)');  // from full source string
const minusPi = bali.Angle.fromLiteral('~-pi');  // normalized to ~pi
// conversions
zero.toBoolean();  // returns false
zero.toNumber();  // returns 0
pi.toBoolean();  // returns true
bali.format(pi);  // returns '~pi'
piOver4.toBoolean();  // returns true
fortyFive.toLiteral(bali.degrees);  // returns '~45'
oneEighty.toString();  // returns '~180($units: $degrees)'
// comparisons
piOver4.isEqualTo(fortyFive);  // returns true
zero.comparedTo(piOver4);  // return -1
oneEighty.comparedTo(fortyFive);  // return 1
minusPi.isEqualTo(pi);  // returns true because of the normalization
// angular operations
bali.Angle.inverse(fortyFive).toLiteral(bali.degrees);  // returns '~-135'
bali.Angle.complement(zero).toLiteral(bali.degrees);  // returns '~90'
bali.Angle.supplement(pi).toNumber();  // returns 0
bali.Angle.conjugate(fortyFive).toLiteral(bali.degrees);  // returns '~-45'
// arithmetic operations
bali.Angle.sum(fortyFive, fortyFive).toLiteral(bali.degrees);  // returns '~90'
bali.Angle.difference(pi, fortyFive).toLiteral(bali.degrees);  // returns '~135'
bali.Angle.scaled(fortyFive, 4).toLiteral();  // returns '~pi'
// trigonometric operations
bali.Angle.sine(pi);  // returns 0
bali.Angle.cosine(fortyFive);  // returns 0.7071067811865476
bali.Angle.tangent(fortyFive);  // returns 1
bali.Angle.arcsine(-1).toLiteral(bali.degrees);  // returns '~-90'
bali.Angle.arccosine(1).toLiteral(bali.degrees);  // returns '~0'
bali.Angle.arctangent(1, -1).toLiteral(bali.degrees);  // returns '~135'// import the framework module
const bali = require('bali-component-framework');
// constructors
const empty = new bali.Binary();  // defaults to an empty base 32 binary string
const d27159 = bali.Binary.fromLiteral("'0110101000010111'", bali.base2);  // base 2 binary string
const d50350 = bali.Binary.fromLiteral("'1100010010101110'", bali.base2);  // base 2 binary string
const h6A17 = bali.Binary.fromLiteral("'6A17'", bali.base16);  // base 16 binary string
const r32 = bali.Binary.fromRandom(40);  // a new random 40 byte base 32 binary string
const jpeg = bali.parse("'\n" +
    "2OGj/83okC3Ic/Qd7sWqTDCbAKUoNNsnpD1ccS1C8Vg4AWlr5v23ekPsPJai\n" +
    "LWpNINAvKZjSiugx3Yp/iOidbolTexeVRt1etX+nem9ozwG5eG4wN7ul8edO\n" +
    "QJvxWZ2KVkBqqWp1gqEo6gSfy5DXL3N/OPJIM/iVuWv49irzowhliOCW7NrO\n" +
    "a6hbC6o4P+yA2AnUeaNwRwYgB6Wu1P4aJe3eWDBRo8lsh6Aq9nR5XHo3hcj1\n" +
    "BIVadYxy+fV9LQN0S8rIXg1MBIymT3KVdgEGUmNX5I+g9t5rOEFANMrma5Sv\n" +
    "uPs6YHNa9Mq3qWlnMyw2mzAVTaK5Q5DTvDaC0A8fwg==\n" +
"'($base: 64, $mediatype: \"image/jpeg\")");  // base 64 binary string with mediatype
// conversions
empty.toBoolean();  // returns false
r32.toBoolean();  // returns true
d27159.toLiteral();  // returns "'D8BH'"
h6A17.toLiteral(bali.base2);  // returns "'0110101000010111'"
jpeg.toLiteral();  // returns '
//    V3HT7ZYDX282VK3LYHFYXJDA9HR9P05550TDP9X47NF72BA2Y5C3H0B9DGLG
//    VDVT8GP3S5N25NN4T86H5WMSJMMAX0RXV2LZJ3M9TVM9ADXJG5A6VNGBAZX7
//    G9QPJLR1Q5W6WC1QQFKZ3STF82DZ2PCXJ9B40TN9D9TR5898X829ZKWHTWQQ
//    6ZSRY9437Y4NQ5NZJXJAYFJHHSC8W2BFSPPFDFM5P2XA70ZYS06R17A7L8VH
//    8W3201X5NVAGW6J5XQG5HC2JMG4PS1X05BV78YAWG8VRBK7N0K2NMXCCFBWZ
//    AZ9D0DT4QKP8BR6MR14CMS7Q55BP04354RTQWK7T1XPYDCW42H1MSBL6Q55G
//    Q3XLMR3LBBTCNDX9D5LL6B1PLCR1ALD2Q51S1MXW6T1D03RZR8
//' in the default base 32
r32.toBase2();  // returns the random binary string in base 2
r32.toBase16();  // returns the random binary string in base 16
r32.toBase32();  // returns the random binary string in base 32
r32.toBase64();  // returns the random binary string in base 64
// comparisons
d27159.isEqualTo(h6A17);  // returns true
empty.isEmpty();  // returns true
empty.comparedTo(r32);  // return -1
r32.getSize();  // return 40 (bytes)
// logical operations
bali.Binary.not(d27159).toLiteral(bali.base2);  // returns "'1001010111101000'"
bali.Binary.and(d27159, d50350).toLiteral(bali.base2);  // returns "'0100000000000110'"
bali.Binary.sans(d27159, d50350).toLiteral(bali.base2);  // returns "'0010101000010001'"
bali.Binary.or(d27159, d50350).toLiteral(bali.base2);  // returns "'1110111010111111'"
bali.Binary.xor(d27159, d50350).toLiteral(bali.base2);  // returns "'1010111010111001'"
// chaining operations
bali.Binary.concatenation(d27159, d50350).toLiteral(bali.base2);  // returns "'01101010000101111100010010101110'"
// iteration
const iterator = r32.getIterator();
while (iterator.hasNext()) {
    var byte = iterator.getNext();
    // do something with the byte
}// import the framework module
const bali = require('bali-component-framework');
// constructors
const zero = new bali.Duration();  // defaults to zero milliseconds
const duration = new bali.Duration('P2Y3M16D');  // raw ISO 8601 format
const days = bali.parse('~P7D');  // 7 days
const week = bali.parse('~P1W');  // 1 week
// conversions
zero.toBoolean();  // returns false
zero.toNumber();  // returns 0 milliseconds
duration.toBoolean();  // returns true
bali.format(duration);  // returns '~P2Y3M16D'
// comparisons
days.isEqualTo(week);  // returns true
zero.comparedTo(days);  // return -1
duration.comparedTo(week);  // return 1
// duration operations
bali.Duration.inverse(week).toLiteral();  // returns '~-P7D'
bali.Duration.sum(duration, week).toLiteral();  // returns '~P2Y3M23D'
bali.Duration.difference(duration, week).toLiteral();  // returns '~P2Y3M9D'
bali.Duration.scaled(week, 3).toLiteral();  // returns '~PT504H'// import the framework module
const bali = require('bali-component-framework');
// constructors
const now = new bali.Moment();  // defaults to the current moment
const moment = new bali.Moment('2017-12-30T17:38:35.726');  // raw ISO 8601 format
const event = bali.parse('<2017-12-30T17:38:35.726>($city: London, $country: England)');  // parameterized
// conversions
now.toBoolean();  // returns true
now.toNumber();  // returns the number of milliseconds since UNIX EPOC
bali.format(moment);  // returns '<2017-12-30T17:38:35.726>'
// comparisons
moment.isEqualTo(event);  // returns true
now.comparedTo(moment);  // return 1
// moment operations
bali.Moment.duration(moment, now).toLiteral();  // returns the duration between moments
const weeks = bali.parse('~P3W');  // three weeks
bali.Moment.earlier(now, weeks).toLiteral();  // returns three weeks ago
bali.Moment.later(now, weeks).toLiteral();  // returns three weeks from now// import the framework module
const bali = require('bali-component-framework');
// constructors
const zero = new bali.Number(-0);  // -0 = 0 (on the complex Riemann Sphere)
const integer = new bali.Number(42);
const infinity = new bali.Number(-Infinity);  // -infinity = infinity (on the complex Riemann Sphere)
const indefinite = new bali.Number(0/0);  // not even on the sphere!
const real = new bali.Number(1.23E-45);
const imaginary = bali.Number.fromLiteral('137i');
const rectangular1 = new bali.Number(3, 4);  // real and imaginary parts
const rectangular2 = bali.Number.fromLiteral('(3, -4i)');
const polar1 = new bali.Number(1, new bali.Angle(bali.precision.PI/3));  // magnitude and phase
const polar2 = bali.Number.fromLiteral('(-1 e^~1.0471975511965976 i)');
// accessors
infinity.getReal();  // returns Infinity
indefinite.getImaginary();  // returns NaN
imaginary.getReal();  // returns 0
imaginary.getMagnitude();  // returns 137
rectangular1.getImaginary();  // returns 4
rectangular1.getMagnitude();  // returns sqrt(3^2 + 4^2) = 5
real.getPhase();  // returns ~0
polar1.getPhase();  // returns ~PI/3 = ~1.047197551196598
// conversions
zero.toNumber();  // returns 0
infinity.toLiteral();  // returns 'infinity'
infinity.toNumber();  // returns Infinity
indefinite.toLiteral();  // returns 'undefined'
imaginary.toNumber();  // returns 137 (the magnitude)
rectangular1.toLiteral();  // returns '(3, 4i)'
rectangular2.toPolar();  // returns '(5 e^~-0.9272952180016122i)'
polar1.toLiteral();  // returns '(0.5, 0.8660254037844386i)'
polar2.toRectangular();  // returns '(-0.5, -0.8660254037844383i)'
// comparisons
zero.isZero();  // returns true
indefinite.isUndefined();  // returns true
infinity.isUndefined();  // returns false
infinity.isInfinite();  // returns true
rectangular1.comparedTo(rectangular2);  // returns 1
polar1.comparedTo(polar2);  // returns 1
zero.comparedTo(rectangular2);  // return -1
polar1.comparedTo(infinity);  // return -1
// numerical operations
bali.Number.inverse(rectangular1).toRectangular();  // returns '(-3, -4i)'
bali.Number.reciprocal(polar1).toPolar();  // returns '(1 e^~-1.047197551196598i)'
bali.Number.conjugate(rectangular2).isEqualTo(rectangular1);  // returns true
bali.Number.sum(rectangular1, rectangular2).toLiteral();  // returns '3'
bali.Number.difference(rectangular1, rectangular2).toLiteral();  // returns '(3, 8i)'
bali.Number.scaled(polar1, 3).toPolar();  // returns '(3 e^~1i)'
bali.Number.product(polar1, polar2).toLiteral();  // returns '(0.5, -0.8660254037844394i)'
bali.Number.quotient(polar1, polar1).toLiteral();  // returns '1'
const exp = bali.Number.exponential(rectangular1, polar1);
exp.toRectangular();  // returns '(-0.28322440499, 0.96078349272i)'
const log = bali.Number.logarithm(rectangular1, exp);
log.toPolar();  // returns '(1 e^~1.047197551204799i)'
polar1.isEqualTo(log);  // returns true// import the framework module
const bali = require('bali-component-framework');
// constructors
const p1 = bali.Probability.fromLiteral('true');
const p2 = new bali.Probability(1);
const p3 = new bali.Probability(0.75);
const p4 = bali.Probability.fromLiteral('false');
const p5 = bali.Probability.fromLiteral('.25');  // no leading zero for probabilities
const p6 = bali.Probability.not(p3);  // p6 = 1 - 0.75 = 0.25
// conversions
p1.toNumber();  // returns 1
p2.toLiteral();  // returns 'true'
p3.toBoolean();  // returns true since 0.75 >= 0.5
p4.toNumber();  // returns 0
p5.toBoolean();  // returns false since 0.25 < 0.5
p6.toLiteral();  // returns '.25' because probabilities don't have a leading zero
// comparisons
p1.isEqualTo(p2);  // returns true because true is the same as the probability one
p3.comparedTo(p2);  // returns -1 because 0.75 < 1 (true)
p4.comparedTo(p1);  // returns -1 because 0 (false) < 1 (true)
p5.isEqualTo(p6);  // returns true
// weighted coin tosses
bali.Probability.coinToss(p2);  // returns true 100% of the time
bali.Probability.coinToss(p3);  // returns true 75% of the time
bali.Probability.coinToss(p4);  // returns false 100% of the time
// logical operations
bali.Probability.not(p1).isEqualTo(p4);  // returns true since not true = false
bali.Probability.and(p3, p6).toNumber();  // returns 0.75 * 0.25 = 0.19
bali.Probability.sans(p3, p6).toNumber();  // returns 0.75 * (1 - 0.25) = 0.56
bali.Probability.or(p3, p6).toNumber();  // returns 0.75 + 0.25 - 0.75 * 0.25 = 0.81
bali.Probability.xor(p3, p6).toNumber();  // returns 0.75 + 0.25 - 2*(0.75 * 0.25) = 0.62