Atom editor extension for making calculations in markdown tables. Inspired by an Emacs Org mode feature which allows to make TBLFM comments under the table and perform calculations.
Big thanks to authors of two projects which are the calculation engine core:
To define a set of table formulas, you can add a special HTML comment below a given Markdown table (TBLFM is a tribute to an Emacs Org mode :) . Only the first comment under the table will be taken into account.
| Column A | Column B | Column C ||:---------|:---------|:---------|| 123 | 456 | 789 || 0 | 0 | 0 |<!--TBLFM C2=A1+A2; C1=56*78/4 -->
The comment can span multiple lines and contain multiple formulas separated by a semicolon. Formulas are calculated in the order they are written. Table cells are described using spreadsheet notation, columns designated with letters like A,B,C .. Z (and even more AA, AB etc.) and rows with integers 1,2,3 ... You can also use range notation like A1:E23. Moreover, hot-formula-parser contains also a big set of predefined functions which can be used in formulas. The list of these functions (taken by SUPPORTED_FORMULAS function) looks like this:
- ABS,ACCRINT,ACOS,ACOSH,ACOT,ACOTH,ADD,AGGREGATE,AND,ARABIC,ARGS2ARRAY,ASIN,ASINH,ATAN,ATAN2,ATANH,AVEDEV,AVERAGE,AVERAGEA,AVERAGEIF,AVERAGEIFS,
- BASE,BESSELI,BESSELJ,BESSELK,BESSELY,BETA.DIST,BETA.INV,BETADIST,BETAINV,BIN2DEC,BIN2HEX,BIN2OCT,BINOM.DIST,BINOM.DIST.RANGE,BINOM.INV,BINOMDIST,BITAND,BITLSHIFT,BITOR,BITRSHIFT,BITXOR,
- CEILING,CEILINGMATH,CEILINGPRECISE,CHAR,CHISQ.DIST,CHISQ.DIST.RT,CHISQ.INV,CHISQ.INV.RT,CHOOSE,CHOOSE,CLEAN,CODE,COLUMN,COLUMNS,COMBIN,COMBINA,COMPLEX,CONCATENATE,CONFIDENCE,CONFIDENCE.NORM,CONFIDENCE.T,CONVERT,CORREL,COS,COSH,COT,COTH,COUNT,COUNTA,COUNTBLANK,COUNTIF,COUNTIFS,COUNTIN,COUNTUNIQUE,COVARIANCE.P,COVARIANCE.S,CSC,CSCH,CUMIPMT,CUMPRINC,
- DATE,DATEVALUE,DAY,DAYS,DAYS360,DB,DDB,DEC2BIN,DEC2HEX,DEC2OCT,DECIMAL,DEGREES,DELTA,DEVSQ,DIVIDE,DOLLAR,DOLLARDE,DOLLARFR,
- E,EDATE,EFFECT,EOMONTH,EQ,ERF,ERFC,EVEN,EXACT,EXP,EXPON.DIST,EXPONDIST,
- F.DIST,F.DIST.RT,F.INV,F.INV.RT,FACT,FACTDOUBLE,FALSE,FDIST,FDISTRT,FIND,FINV,FINVRT,FISHER,FISHERINV,FIXED,FLATTEN,FLOOR,FORECAST,FREQUENCY,FV,FVSCHEDULE,
- GAMMA,GAMMA.DIST,GAMMA.INV,GAMMADIST,GAMMAINV,GAMMALN,GAMMALN.PRECISE,GAUSS,GCD,GEOMEAN,GESTEP,GROWTH,GTE,
- HARMEAN,HEX2BIN,HEX2DEC,HEX2OCT,HOUR,HTML2TEXT,HYPGEOM.DIST,HYPGEOMDIST,
- IF,IMABS,IMAGINARY,IMARGUMENT,IMCONJUGATE,IMCOS,IMCOSH,IMCOT,IMCSC,IMCSCH,IMDIV,IMEXP,IMLN,IMLOG10,IMLOG2,IMPOWER,IMPRODUCT,IMREAL,IMSEC,IMSECH,IMSIN,IMSINH,IMSQRT,IMSUB,IMSUM,IMTAN,INT,INTERCEPT,INTERVAL,IPMT,IRR,ISBINARY,ISBLANK,ISEVEN,ISLOGICAL,ISNONTEXT,ISNUMBER,ISODD,ISODD,ISOWEEKNUM,ISPMT,ISTEXT,
- JOIN,
- KURT,
- LARGE,LCM,LEFT,LEN,LINEST,LN,LOG,LOG10,LOGEST,LOGNORM.DIST,LOGNORM.INV,LOGNORMDIST,LOGNORMINV,LOWER,LT,LTE,
- MATCH,MAX,MAXA,MEDIAN,MID,MIN,MINA,MINUS,MINUTE,MIRR,MOD,MODE.MULT,MODE.SNGL,MODEMULT,MODESNGL,MONTH,MROUND,MULTINOMIAL,MULTIPLY,
- NE,NEGBINOM.DIST,NEGBINOMDIST,NETWORKDAYS,NOMINAL,NORM.DIST,NORM.INV,NORM.S.DIST,NORM.S.INV,NORMDIST,NORMINV,NORMSDIST,NORMSINV,NOT,NOW,NPER,NPV,NUMBERS,NUMERAL,
- OCT2BIN,OCT2DEC,OCT2HEX,ODD,OR,
- PDURATION,PEARSON,PERCENTILEEXC,PERCENTILEINC,PERCENTRANKEXC,PERCENTRANKINC,PERMUT,PERMUTATIONA,PHI,PI,PMT,POISSON.DIST,POISSONDIST,POW,POWER,PPMT,PROB,PRODUCT,PROPER,PV,
- QUARTILE.EXC,QUARTILE.INC,QUARTILEEXC,QUARTILEINC,QUOTIENT,
- RADIANS,RAND,RANDBETWEEN,RANK.AVG,RANK.EQ,RANKAVG,RANKEQ,RATE,REFERENCE,REGEXEXTRACT,REGEXMATCH REGEXREPLACE,REPLACE,REPT,RIGHT,ROMAN,ROUND,ROUNDDOWN,ROUNDUP,ROW,ROWS,RRI,RSQ,
- SEARCH,SEC,SECH,SECOND,SERIESSUM,SIGN,SIN,SINH,SKEW,SKEW.P,SKEWP,SLN,SLOPE,SMALL,SPLIT,SPLIT,SQRT,SQRTPI,STANDARDIZE,STDEV.P,STDEV.S,STDEVA,STDEVP,STDEVPA,STDEVS,STEYX,SUBSTITUTE,SUBTOTAL,SUM,SUMIF,SUMIFS,SUMPRODUCT,SUMSQ,SUMX2MY2,SUMX2PY2,SUMXMY2,SWITCH,SYD,
- T,T.DIST,T.DIST.2T,T.DIST.RT,T.INV,T.INV.2T,TAN,TANH,TBILLEQ,TBILLPRICE,TBILLYIELD,TDIST,TDIST2T,TDISTRT,TEXT,TIME,TIMEVALUE,TINV,TINV2T,TODAY,TRANSPOSE,TREND,TRIM,TRIMMEAN,TRUE,TRUNC,
- UNICHAR,UNICODE,UNIQUE,UPPER,
- VALUE,VAR.P,VAR.S,VARA,VARP,VARPA,VARS,
- WEEKDAY,WEEKNUM,WEIBULL.DIST WEIBULLDIST,WORKDAY,
- XIRR,XNPV,XOR,
- YEAR,YEARFRAC
To activate table formula recalculation you need to use a new editor command: Markdown Table Calc: Recalculate
This is my first Atom package, please, expect that something can go wrong.
Initial release of markdown table calc
The MIT License (see the LICENSE file for the full text).
Good catch. Let us know what about this package looks wrong to you, and we'll investigate right away.