UPDATE: Remove docs artifacts that are not needed anymore
generate_docs.rs was used to bootstrap the documentatio effords Unlikely to be used on a regular basis
This commit is contained in:
committed by
Nicolás Hatcher Andrés
parent
b3d4c479f6
commit
94ebf33656
18
.github/workflows/publish-wiki.yml
vendored
18
.github/workflows/publish-wiki.yml
vendored
@@ -1,18 +0,0 @@
|
|||||||
name: Publish wiki
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
paths:
|
|
||||||
- wiki/**
|
|
||||||
- .github/workflows/publish-wiki.yml
|
|
||||||
concurrency:
|
|
||||||
group: publish-wiki
|
|
||||||
cancel-in-progress: true
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
jobs:
|
|
||||||
publish-wiki:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: Andrew-Chen-Wang/github-wiki-action@v4
|
|
||||||
9
Makefile
9
Makefile
@@ -10,9 +10,6 @@ format:
|
|||||||
|
|
||||||
.PHONY: tests
|
.PHONY: tests
|
||||||
tests: lint
|
tests: lint
|
||||||
cargo test
|
|
||||||
./target/debug/documentation
|
|
||||||
cmp functions.md wiki/functions.md || exit 1
|
|
||||||
make remove-artifacts
|
make remove-artifacts
|
||||||
# Regretabbly we need to build the wasm twice, once for the nodejs tests
|
# Regretabbly we need to build the wasm twice, once for the nodejs tests
|
||||||
# and a second one for the vitest.
|
# and a second one for the vitest.
|
||||||
@@ -25,7 +22,6 @@ remove-artifacts:
|
|||||||
rm -f xlsx/hello-calc.xlsx
|
rm -f xlsx/hello-calc.xlsx
|
||||||
rm -f xlsx/hello-styles.xlsx
|
rm -f xlsx/hello-styles.xlsx
|
||||||
rm -f xlsx/widths-and-heights.xlsx
|
rm -f xlsx/widths-and-heights.xlsx
|
||||||
rm -f functions.md
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean: remove-artifacts
|
clean: remove-artifacts
|
||||||
@@ -43,11 +39,6 @@ coverage:
|
|||||||
CARGO_INCREMENTAL=0 RUSTFLAGS='-C instrument-coverage' LLVM_PROFILE_FILE='cargo-test-%p-%m.profraw' cargo test
|
CARGO_INCREMENTAL=0 RUSTFLAGS='-C instrument-coverage' LLVM_PROFILE_FILE='cargo-test-%p-%m.profraw' cargo test
|
||||||
grcov . --binary-path ./target/debug/deps/ -s . -t html --branch --ignore-not-existing --ignore '../*' --ignore "/*" -o target/coverage/html
|
grcov . --binary-path ./target/debug/deps/ -s . -t html --branch --ignore-not-existing --ignore '../*' --ignore "/*" -o target/coverage/html
|
||||||
|
|
||||||
.PHONY: update-docs
|
|
||||||
update-docs:
|
|
||||||
cargo build
|
|
||||||
./target/debug/documentation -o wiki/functions.md
|
|
||||||
|
|
||||||
.PHONY: docs
|
.PHONY: docs
|
||||||
docs:
|
docs:
|
||||||
cargo doc --no-deps
|
cargo doc --no-deps
|
||||||
|
|||||||
@@ -1,195 +0,0 @@
|
|||||||
# List of Functions implemented in IronCalc
|
|
||||||
|
|
||||||
* AND
|
|
||||||
* FALSE
|
|
||||||
* IF
|
|
||||||
* IFERROR
|
|
||||||
* IFNA
|
|
||||||
* IFS
|
|
||||||
* NOT
|
|
||||||
* OR
|
|
||||||
* SWITCH
|
|
||||||
* TRUE
|
|
||||||
* XOR
|
|
||||||
* SIN
|
|
||||||
* COS
|
|
||||||
* TAN
|
|
||||||
* ASIN
|
|
||||||
* ACOS
|
|
||||||
* ATAN
|
|
||||||
* SINH
|
|
||||||
* COSH
|
|
||||||
* TANH
|
|
||||||
* ASINH
|
|
||||||
* ACOSH
|
|
||||||
* ATANH
|
|
||||||
* ABS
|
|
||||||
* PI
|
|
||||||
* SQRT
|
|
||||||
* SQRTPI
|
|
||||||
* ATAN2
|
|
||||||
* POWER
|
|
||||||
* MAX
|
|
||||||
* MIN
|
|
||||||
* PRODUCT
|
|
||||||
* RAND
|
|
||||||
* RANDBETWEEN
|
|
||||||
* ROUND
|
|
||||||
* ROUNDDOWN
|
|
||||||
* ROUNDUP
|
|
||||||
* SUM
|
|
||||||
* SUMIF
|
|
||||||
* SUMIFS
|
|
||||||
* CHOOSE
|
|
||||||
* COLUMN
|
|
||||||
* COLUMNS
|
|
||||||
* INDEX
|
|
||||||
* INDIRECT
|
|
||||||
* HLOOKUP
|
|
||||||
* LOOKUP
|
|
||||||
* MATCH
|
|
||||||
* OFFSET
|
|
||||||
* ROW
|
|
||||||
* ROWS
|
|
||||||
* VLOOKUP
|
|
||||||
* XLOOKUP
|
|
||||||
* CONCATENATE
|
|
||||||
* EXACT
|
|
||||||
* VALUE
|
|
||||||
* T
|
|
||||||
* VALUETOTEXT
|
|
||||||
* CONCAT
|
|
||||||
* FIND
|
|
||||||
* LEFT
|
|
||||||
* LEN
|
|
||||||
* LOWER
|
|
||||||
* MID
|
|
||||||
* RIGHT
|
|
||||||
* SEARCH
|
|
||||||
* TEXT
|
|
||||||
* TRIM
|
|
||||||
* UNICODE
|
|
||||||
* UPPER
|
|
||||||
* ISNUMBER
|
|
||||||
* ISNONTEXT
|
|
||||||
* ISTEXT
|
|
||||||
* ISLOGICAL
|
|
||||||
* ISBLANK
|
|
||||||
* ISERR
|
|
||||||
* ISERROR
|
|
||||||
* ISNA
|
|
||||||
* NA
|
|
||||||
* ISREF
|
|
||||||
* ISODD
|
|
||||||
* ISEVEN
|
|
||||||
* ERROR.TYPE
|
|
||||||
* ISFORMULA
|
|
||||||
* TYPE
|
|
||||||
* SHEET
|
|
||||||
* AVERAGE
|
|
||||||
* AVERAGEA
|
|
||||||
* AVERAGEIF
|
|
||||||
* AVERAGEIFS
|
|
||||||
* COUNT
|
|
||||||
* COUNTA
|
|
||||||
* COUNTBLANK
|
|
||||||
* COUNTIF
|
|
||||||
* COUNTIFS
|
|
||||||
* MAXIFS
|
|
||||||
* MINIFS
|
|
||||||
* YEAR
|
|
||||||
* DAY
|
|
||||||
* MONTH
|
|
||||||
* EOMONTH
|
|
||||||
* DATE
|
|
||||||
* EDATE
|
|
||||||
* TODAY
|
|
||||||
* NOW
|
|
||||||
* PMT
|
|
||||||
* PV
|
|
||||||
* RATE
|
|
||||||
* NPER
|
|
||||||
* FV
|
|
||||||
* PPMT
|
|
||||||
* IPMT
|
|
||||||
* NPV
|
|
||||||
* MIRR
|
|
||||||
* IRR
|
|
||||||
* XIRR
|
|
||||||
* XNPV
|
|
||||||
* REPT
|
|
||||||
* TEXTAFTER
|
|
||||||
* TEXTBEFORE
|
|
||||||
* TEXTJOIN
|
|
||||||
* SUBSTITUTE
|
|
||||||
* ISPMT
|
|
||||||
* RRI
|
|
||||||
* SLN
|
|
||||||
* SYD
|
|
||||||
* NOMINAL
|
|
||||||
* EFFECT
|
|
||||||
* PDURATION
|
|
||||||
* TBILLYIELD
|
|
||||||
* TBILLPRICE
|
|
||||||
* TBILLEQ
|
|
||||||
* DOLLARDE
|
|
||||||
* DOLLARFR
|
|
||||||
* DDB
|
|
||||||
* DB
|
|
||||||
* CUMPRINC
|
|
||||||
* CUMIPMT
|
|
||||||
* BESSELI
|
|
||||||
* BESSELJ
|
|
||||||
* BESSELK
|
|
||||||
* BESSELY
|
|
||||||
* ERF
|
|
||||||
* ERF.PRECISE
|
|
||||||
* ERFC
|
|
||||||
* ERFC.PRECISE
|
|
||||||
* BIN2DEC
|
|
||||||
* BIN2HEX
|
|
||||||
* BIN2OCT
|
|
||||||
* DEC2BIN
|
|
||||||
* DEC2HEX
|
|
||||||
* DEC2OCT
|
|
||||||
* HEX2BIN
|
|
||||||
* HEX2DEC
|
|
||||||
* HEX2OCT
|
|
||||||
* OCT2BIN
|
|
||||||
* OCT2DEC
|
|
||||||
* OCT2HEX
|
|
||||||
* BITAND
|
|
||||||
* BITLSHIFT
|
|
||||||
* BITOR
|
|
||||||
* BITRSHIFT
|
|
||||||
* BITXOR
|
|
||||||
* COMPLEX
|
|
||||||
* 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
|
|
||||||
* CONVERT
|
|
||||||
* DELTA
|
|
||||||
* GESTEP
|
|
||||||
* SUBTOTAL
|
|
||||||
@@ -35,13 +35,3 @@ path = "src/lib.rs"
|
|||||||
[[bin]]
|
[[bin]]
|
||||||
name = "test"
|
name = "test"
|
||||||
path = "src/bin/test.rs"
|
path = "src/bin/test.rs"
|
||||||
|
|
||||||
|
|
||||||
[[bin]]
|
|
||||||
name = "documentation"
|
|
||||||
path = "src/bin/documentation.rs"
|
|
||||||
|
|
||||||
|
|
||||||
[[bin]]
|
|
||||||
name = "generate_docs"
|
|
||||||
path = "src/bin/generate_docs.rs"
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
#![allow(clippy::panic)]
|
|
||||||
#![allow(clippy::expect_used)]
|
|
||||||
|
|
||||||
//! Produces documentation of all the implemented IronCalc functions
|
|
||||||
//! and saves the result to functions.md
|
|
||||||
//!
|
|
||||||
//! Usage: documentation
|
|
||||||
|
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
use ironcalc_base::Model;
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let args: Vec<_> = std::env::args().collect();
|
|
||||||
let output_file = if args.len() == 3 {
|
|
||||||
&args[2]
|
|
||||||
} else if args.len() == 1 {
|
|
||||||
"functions.md"
|
|
||||||
} else {
|
|
||||||
panic!("Usage: {} -o <file.md>", args[0]);
|
|
||||||
};
|
|
||||||
let mut doc = Vec::new();
|
|
||||||
doc.push("# List of Functions implemented in IronCalc\n\n".to_owned());
|
|
||||||
for function in Model::documentation() {
|
|
||||||
doc.push(format!("* {}\n", &function.name));
|
|
||||||
}
|
|
||||||
let data = doc.join("");
|
|
||||||
fs::write(output_file, data).expect("Unable to write file");
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
CUBEKPIMEMBER
|
|
||||||
CUBEMEMBER
|
|
||||||
CUBEMEMBERPROPERTY
|
|
||||||
CUBERANKEDMEMBER
|
|
||||||
CUBESET
|
|
||||||
CUBESETCOUNT
|
|
||||||
CUBEVALUE
|
|
||||||
|
@@ -1,12 +0,0 @@
|
|||||||
DAVERAGE
|
|
||||||
DCOUNT
|
|
||||||
DCOUNTA
|
|
||||||
DGET
|
|
||||||
DMAX
|
|
||||||
DMIN
|
|
||||||
DPRODUCT
|
|
||||||
DSTDEV
|
|
||||||
DSTDEVP
|
|
||||||
DSUM
|
|
||||||
DVAR
|
|
||||||
DVARP
|
|
||||||
|
@@ -1,25 +0,0 @@
|
|||||||
DATE
|
|
||||||
DATEDIF
|
|
||||||
DATEVALUE
|
|
||||||
DAY
|
|
||||||
DAYS
|
|
||||||
DAYS360
|
|
||||||
EDATE
|
|
||||||
EOMONTH
|
|
||||||
HOUR
|
|
||||||
ISOWEEKNUM
|
|
||||||
MINUTE
|
|
||||||
MONTH
|
|
||||||
NETWORKDAYS
|
|
||||||
NETWORKDAYS.INTL
|
|
||||||
NOW
|
|
||||||
SECOND
|
|
||||||
TIME
|
|
||||||
TIMEVALUE
|
|
||||||
TODAY
|
|
||||||
WEEKDAY
|
|
||||||
WEEKNUM
|
|
||||||
WORKDAY
|
|
||||||
WORKDAY.INTL
|
|
||||||
YEAR
|
|
||||||
YEARFRAC
|
|
||||||
|
@@ -1,54 +0,0 @@
|
|||||||
BESSELI
|
|
||||||
BESSELJ
|
|
||||||
BESSELK
|
|
||||||
BESSELY
|
|
||||||
BIN2DEC
|
|
||||||
BIN2HEX
|
|
||||||
BIN2OCT
|
|
||||||
BITAND
|
|
||||||
BITLSHIFT
|
|
||||||
BITOR
|
|
||||||
BITRSHIFT
|
|
||||||
BITXOR
|
|
||||||
COMPLEX
|
|
||||||
CONVERT
|
|
||||||
DEC2BIN
|
|
||||||
DEC2HEX
|
|
||||||
DEC2OCT
|
|
||||||
DELTA
|
|
||||||
ERF
|
|
||||||
ERF.PRECISE
|
|
||||||
ERFC
|
|
||||||
ERFC.PRECISE
|
|
||||||
GESTEP
|
|
||||||
HEX2BIN
|
|
||||||
HEX2DEC
|
|
||||||
HEX2OCT
|
|
||||||
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
|
|
||||||
OCT2BIN
|
|
||||||
OCT2DEC
|
|
||||||
OCT2HEX
|
|
||||||
|
@@ -1,55 +0,0 @@
|
|||||||
ACCRINT
|
|
||||||
ACCRINTM
|
|
||||||
AMORDEGRC
|
|
||||||
AMORLINC
|
|
||||||
COUPDAYBS
|
|
||||||
COUPDAYS
|
|
||||||
COUPDAYSNC
|
|
||||||
COUPNCD
|
|
||||||
COUPNUM
|
|
||||||
COUPPCD
|
|
||||||
CUMIPMT
|
|
||||||
CUMPRINC
|
|
||||||
DB
|
|
||||||
DDB
|
|
||||||
DISC
|
|
||||||
DOLLARDE
|
|
||||||
DOLLARFR
|
|
||||||
DURATION
|
|
||||||
EFFECT
|
|
||||||
FV
|
|
||||||
FVSCHEDULE
|
|
||||||
INTRATE
|
|
||||||
IPMT
|
|
||||||
IRR
|
|
||||||
ISPMT
|
|
||||||
MDURATION
|
|
||||||
MIRR
|
|
||||||
NOMINAL
|
|
||||||
NPER
|
|
||||||
NPV
|
|
||||||
ODDFPRICE
|
|
||||||
ODDFYIELD
|
|
||||||
ODDLPRICE
|
|
||||||
ODDLYIELD
|
|
||||||
PDURATION
|
|
||||||
PMT
|
|
||||||
PPMT
|
|
||||||
PRICE
|
|
||||||
PRICEDISC
|
|
||||||
PRICEMAT
|
|
||||||
PV
|
|
||||||
RATE
|
|
||||||
RECEIVED
|
|
||||||
RRI
|
|
||||||
SLN
|
|
||||||
SYD
|
|
||||||
TBILLEQ
|
|
||||||
TBILLPRICE
|
|
||||||
TBILLYIELD
|
|
||||||
VDB
|
|
||||||
XIRR
|
|
||||||
XNPV
|
|
||||||
YIELD
|
|
||||||
YIELDDISC
|
|
||||||
YIELDMAT
|
|
||||||
|
@@ -1,21 +0,0 @@
|
|||||||
CELL
|
|
||||||
ERROR.TYPE
|
|
||||||
INFO
|
|
||||||
ISBLANK
|
|
||||||
ISERR
|
|
||||||
ISERROR
|
|
||||||
ISEVEN
|
|
||||||
ISFORMULA
|
|
||||||
ISLOGICAL
|
|
||||||
ISNA
|
|
||||||
ISNONTEXT
|
|
||||||
ISNUMBER
|
|
||||||
ISODD
|
|
||||||
ISOMITTED
|
|
||||||
ISREF
|
|
||||||
ISTEXT
|
|
||||||
N
|
|
||||||
NA
|
|
||||||
SHEET
|
|
||||||
SHEETS
|
|
||||||
TYPE
|
|
||||||
|
@@ -1,19 +0,0 @@
|
|||||||
AND
|
|
||||||
BYCOL
|
|
||||||
BYROW
|
|
||||||
FALSE
|
|
||||||
IF
|
|
||||||
IFERROR
|
|
||||||
IFNA
|
|
||||||
IFS
|
|
||||||
LAMBDA
|
|
||||||
LET
|
|
||||||
MAKEARRAY
|
|
||||||
MAP
|
|
||||||
NOT
|
|
||||||
OR
|
|
||||||
REDUCE
|
|
||||||
SCAN
|
|
||||||
SWITCH
|
|
||||||
TRUE
|
|
||||||
XOR
|
|
||||||
|
@@ -1,37 +0,0 @@
|
|||||||
ADDRESS
|
|
||||||
AREAS
|
|
||||||
CHOOSE
|
|
||||||
CHOOSECOLS
|
|
||||||
CHOOSEROWS
|
|
||||||
COLUMN
|
|
||||||
COLUMNS
|
|
||||||
DROP
|
|
||||||
EXPAND
|
|
||||||
FILTER
|
|
||||||
FORMULATEXT
|
|
||||||
GETPIVOTDATA
|
|
||||||
HLOOKUP
|
|
||||||
HSTACK
|
|
||||||
HYPERLINK
|
|
||||||
IMAGE
|
|
||||||
INDEX
|
|
||||||
INDIRECT
|
|
||||||
LOOKUP
|
|
||||||
MATCH
|
|
||||||
OFFSET
|
|
||||||
ROW
|
|
||||||
ROWS
|
|
||||||
RTD
|
|
||||||
SORT
|
|
||||||
SORTBY
|
|
||||||
TAKE
|
|
||||||
TOCOL
|
|
||||||
TOROW
|
|
||||||
TRANSPOSE
|
|
||||||
UNIQUE
|
|
||||||
VLOOKUP
|
|
||||||
VSTACK
|
|
||||||
WRAPCOLS
|
|
||||||
WRAPROWS
|
|
||||||
XLOOKUP
|
|
||||||
XMATCH
|
|
||||||
|
@@ -1,82 +0,0 @@
|
|||||||
ABS
|
|
||||||
ACOS
|
|
||||||
ACOSH
|
|
||||||
ACOT
|
|
||||||
ACOTH
|
|
||||||
AGGREGATE
|
|
||||||
ARABIC
|
|
||||||
ASIN
|
|
||||||
ASINH
|
|
||||||
ATAN
|
|
||||||
ATAN2
|
|
||||||
ATANH
|
|
||||||
BASE
|
|
||||||
CEILING
|
|
||||||
CEILING.MATH
|
|
||||||
CEILING.PRECISE
|
|
||||||
COMBIN
|
|
||||||
COMBINA
|
|
||||||
COS
|
|
||||||
COSH
|
|
||||||
COT
|
|
||||||
COTH
|
|
||||||
CSC
|
|
||||||
CSCH
|
|
||||||
DECIMAL
|
|
||||||
DEGREES
|
|
||||||
EVEN
|
|
||||||
EXP
|
|
||||||
FACT
|
|
||||||
FACTDOUBLE
|
|
||||||
FLOOR
|
|
||||||
FLOOR.MATH
|
|
||||||
FLOOR.PRECISE
|
|
||||||
GCD
|
|
||||||
INT
|
|
||||||
ISO.CEILING
|
|
||||||
LCM
|
|
||||||
LET
|
|
||||||
LN
|
|
||||||
LOG
|
|
||||||
LOG10
|
|
||||||
MDETERM
|
|
||||||
MINVERSE
|
|
||||||
MMULT
|
|
||||||
MOD
|
|
||||||
MROUND
|
|
||||||
MULTINOMIAL
|
|
||||||
MUNIT
|
|
||||||
ODD
|
|
||||||
PI
|
|
||||||
POWER
|
|
||||||
PRODUCT
|
|
||||||
QUOTIENT
|
|
||||||
RADIANS
|
|
||||||
RAND
|
|
||||||
RANDARRAY
|
|
||||||
RANDBETWEEN
|
|
||||||
ROMAN
|
|
||||||
ROUND
|
|
||||||
ROUNDDOWN
|
|
||||||
ROUNDUP
|
|
||||||
SEC
|
|
||||||
SECH
|
|
||||||
SERIESSUM
|
|
||||||
SEQUENCE
|
|
||||||
SIGN
|
|
||||||
SIN
|
|
||||||
SINH
|
|
||||||
SQRT
|
|
||||||
SQRTPI
|
|
||||||
SUBTOTAL
|
|
||||||
SUM
|
|
||||||
SUMIF
|
|
||||||
SUMIFS
|
|
||||||
SUMPRODUCT
|
|
||||||
SUMSQ
|
|
||||||
SUMX2MY2
|
|
||||||
SUMX2PY2
|
|
||||||
SUMXMY2
|
|
||||||
TAN
|
|
||||||
TANH
|
|
||||||
TRUNC
|
|
||||||
|
@@ -1,111 +0,0 @@
|
|||||||
AVEDEV
|
|
||||||
AVERAGE
|
|
||||||
AVERAGEA
|
|
||||||
AVERAGEIF
|
|
||||||
AVERAGEIFS
|
|
||||||
BETA.DIST
|
|
||||||
BETA.INV
|
|
||||||
BINOM.DIST
|
|
||||||
BINOM.DIST.RANGE
|
|
||||||
BINOM.INV
|
|
||||||
CHISQ.DIST
|
|
||||||
CHISQ.DIST.RT
|
|
||||||
CHISQ.INV
|
|
||||||
CHISQ.INV.RT
|
|
||||||
CHISQ.TEST
|
|
||||||
CONFIDENCE.NORM
|
|
||||||
CONFIDENCE.T
|
|
||||||
CORREL
|
|
||||||
COUNT
|
|
||||||
COUNTA
|
|
||||||
COUNTBLANK
|
|
||||||
COUNTIF
|
|
||||||
COUNTIFS
|
|
||||||
COVARIANCE.P
|
|
||||||
COVARIANCE.S
|
|
||||||
DEVSQ
|
|
||||||
EXPON.DIST
|
|
||||||
F.DIST
|
|
||||||
F.DIST.RT
|
|
||||||
F.INV
|
|
||||||
F.INV.RT
|
|
||||||
F.TEST
|
|
||||||
FISHER
|
|
||||||
FISHERINV
|
|
||||||
FORECAST
|
|
||||||
FORECAST.ETS
|
|
||||||
FORECAST.ETS.CONFINT
|
|
||||||
FORECAST.ETS.SEASONALITY
|
|
||||||
FORECAST.ETS.STAT
|
|
||||||
FORECAST.LINEAR
|
|
||||||
FREQUENCY
|
|
||||||
GAMMA
|
|
||||||
GAMMA.DIST
|
|
||||||
GAMMA.INV
|
|
||||||
GAMMALN
|
|
||||||
GAMMALN.PRECISE
|
|
||||||
GAUSS
|
|
||||||
GEOMEAN
|
|
||||||
GROWTH
|
|
||||||
HARMEAN
|
|
||||||
HYPGEOM.DIST
|
|
||||||
INTERCEPT
|
|
||||||
KURT
|
|
||||||
LARGE
|
|
||||||
LINEST
|
|
||||||
LOGEST
|
|
||||||
LOGNORM.DIST
|
|
||||||
LOGNORM.INV
|
|
||||||
MAX
|
|
||||||
MAXA
|
|
||||||
MAXIFS
|
|
||||||
MEDIAN
|
|
||||||
MIN
|
|
||||||
MINA
|
|
||||||
MINIFS
|
|
||||||
MODE.MULT
|
|
||||||
MODE.SNGL
|
|
||||||
NEGBINOM.DIST
|
|
||||||
NORM.DIST
|
|
||||||
NORM.INV
|
|
||||||
NORM.S.DIST
|
|
||||||
NORM.S.INV
|
|
||||||
PEARSON
|
|
||||||
PERCENTILE.EXC
|
|
||||||
PERCENTILE.INC
|
|
||||||
PERCENTRANK.EXC
|
|
||||||
PERCENTRANK.INC
|
|
||||||
PERMUT
|
|
||||||
PERMUTATIONA
|
|
||||||
PHI
|
|
||||||
POISSON.DIST
|
|
||||||
PROB
|
|
||||||
QUARTILE.EXC
|
|
||||||
QUARTILE.INC
|
|
||||||
RANK.AVG
|
|
||||||
RANK.EQ
|
|
||||||
RSQ
|
|
||||||
SKEW
|
|
||||||
SKEW.P
|
|
||||||
SLOPE
|
|
||||||
SMALL
|
|
||||||
STANDARDIZE
|
|
||||||
STDEV.P
|
|
||||||
STDEV.S
|
|
||||||
STDEVA
|
|
||||||
STDEVPA
|
|
||||||
STEYX
|
|
||||||
T.DIST
|
|
||||||
T.DIST.2T
|
|
||||||
T.DIST.RT
|
|
||||||
T.INV
|
|
||||||
T.INV.2T
|
|
||||||
T.TEST
|
|
||||||
TREND
|
|
||||||
TRIMMEAN
|
|
||||||
VAR.P
|
|
||||||
VAR.S
|
|
||||||
VARA
|
|
||||||
VARPA
|
|
||||||
WEIBULL.DIST
|
|
||||||
Z.TEST
|
|
||||||
|
@@ -1,25 +0,0 @@
|
|||||||
MID
|
|
||||||
MIDB
|
|
||||||
NUMBERVALUE
|
|
||||||
PHONETIC
|
|
||||||
PROPER
|
|
||||||
REPLACE
|
|
||||||
REPLACEBs
|
|
||||||
REPT
|
|
||||||
RIGHT
|
|
||||||
RIGHTB
|
|
||||||
SEARCH
|
|
||||||
SEARCHB
|
|
||||||
SUBSTITUTE
|
|
||||||
T
|
|
||||||
TEXT
|
|
||||||
TEXTAFTER
|
|
||||||
TEXTBEFORE
|
|
||||||
TEXTJOIN
|
|
||||||
TEXTSPLIT
|
|
||||||
TRIM
|
|
||||||
UNICHAR
|
|
||||||
UNICODE
|
|
||||||
UPPER
|
|
||||||
VALUE
|
|
||||||
VALUETOTEXT
|
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
REGEXTEST
|
|
||||||
REGEXEXTRACT
|
|
||||||
REGEXREPLACE
|
|
||||||
TRIMRANGE
|
|
||||||
|
@@ -1,154 +0,0 @@
|
|||||||
#![allow(clippy::panic)]
|
|
||||||
#![allow(clippy::expect_used)]
|
|
||||||
|
|
||||||
//! Produces documentation of all the implemented IronCalc functions
|
|
||||||
//! and saves the result to functions.md
|
|
||||||
//!
|
|
||||||
//! Usage: documentation
|
|
||||||
|
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
use ironcalc_base::Model;
|
|
||||||
use serde::Serialize;
|
|
||||||
use std::io::{self, BufRead};
|
|
||||||
|
|
||||||
#[derive(Serialize)]
|
|
||||||
struct FunctionItem {
|
|
||||||
text: String,
|
|
||||||
link: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize)]
|
|
||||||
struct CategoryItem {
|
|
||||||
text: String,
|
|
||||||
collapsed: bool,
|
|
||||||
link: String,
|
|
||||||
items: Vec<FunctionItem>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize)]
|
|
||||||
struct Item {
|
|
||||||
text: String,
|
|
||||||
collapsed: bool,
|
|
||||||
items: Vec<CategoryItem>,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() -> io::Result<()> {
|
|
||||||
// Step 1: Create "docs" directory in the working directory
|
|
||||||
let docs_dir = "docs";
|
|
||||||
fs::create_dir_all(docs_dir)?;
|
|
||||||
|
|
||||||
// Step 2: Read files from the "functions" directory
|
|
||||||
let functions_dir = "functions";
|
|
||||||
|
|
||||||
let mut category_items = Vec::new();
|
|
||||||
|
|
||||||
let mut implemented = Vec::new();
|
|
||||||
for function in Model::documentation() {
|
|
||||||
implemented.push(function.name.clone());
|
|
||||||
}
|
|
||||||
|
|
||||||
for entry in fs::read_dir(functions_dir)? {
|
|
||||||
let entry = entry?;
|
|
||||||
let path = entry.path();
|
|
||||||
|
|
||||||
// Only process files (skip directories)
|
|
||||||
if path.is_file() {
|
|
||||||
// Get the file name without extension
|
|
||||||
if let Some(category) = path.file_stem().and_then(|s| s.to_str()) {
|
|
||||||
// Create a directory in "docs" with the name of the file
|
|
||||||
let target_dir = format!("{}/{}", docs_dir, category);
|
|
||||||
fs::create_dir_all(&target_dir)?;
|
|
||||||
|
|
||||||
// Open the file and read lines
|
|
||||||
let file = fs::File::open(&path)?;
|
|
||||||
let reader = io::BufReader::new(file);
|
|
||||||
|
|
||||||
let mut file_items = Vec::new();
|
|
||||||
|
|
||||||
for line in reader.lines() {
|
|
||||||
let line = line?;
|
|
||||||
let function_name = line.trim().to_lowercase();
|
|
||||||
let function_name_upper_case = function_name.to_uppercase();
|
|
||||||
|
|
||||||
if function_name.is_empty() {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a file with the name from the line, ending with .md
|
|
||||||
let file_name = format!("{}/{}.md", target_dir, function_name);
|
|
||||||
|
|
||||||
if implemented.contains(&function_name_upper_case) {
|
|
||||||
println!("Implemented: {function_name_upper_case}");
|
|
||||||
fs::write(
|
|
||||||
&file_name,
|
|
||||||
format!(
|
|
||||||
r#"
|
|
||||||
---
|
|
||||||
layout: doc
|
|
||||||
outline: deep
|
|
||||||
lang: en-US
|
|
||||||
---
|
|
||||||
|
|
||||||
# {function_name_upper_case}
|
|
||||||
|
|
||||||
::: warning
|
|
||||||
🚧 This function is implemented but currently lacks detailed documentation. For guidance, you may refer to the equivalent functionality in [Microsoft Excel documentation](https://support.microsoft.com/en-us/office/excel-functions-by-category-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb).
|
|
||||||
:::
|
|
||||||
|
|
||||||
"#
|
|
||||||
)
|
|
||||||
.trim(),
|
|
||||||
)?;
|
|
||||||
} else {
|
|
||||||
println!("Not implemented: {function_name_upper_case}");
|
|
||||||
fs::write(
|
|
||||||
&file_name,
|
|
||||||
format!(
|
|
||||||
r#"
|
|
||||||
---
|
|
||||||
layout: doc
|
|
||||||
outline: deep
|
|
||||||
lang: en-US
|
|
||||||
---
|
|
||||||
|
|
||||||
# {function_name_upper_case}
|
|
||||||
|
|
||||||
::: warning
|
|
||||||
🚧 This function is not yet available in IronCalc.
|
|
||||||
[Follow development here](https://github.com/ironcalc/IronCalc/labels/Functions)
|
|
||||||
:::
|
|
||||||
"#
|
|
||||||
)
|
|
||||||
.trim(),
|
|
||||||
)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add the item to file_items
|
|
||||||
let item = FunctionItem {
|
|
||||||
text: function_name_upper_case,
|
|
||||||
link: format!("/functions/{}/{}", category, function_name),
|
|
||||||
};
|
|
||||||
file_items.push(item);
|
|
||||||
}
|
|
||||||
category_items.push(CategoryItem {
|
|
||||||
text: category.to_string(),
|
|
||||||
collapsed: true,
|
|
||||||
link: format!("/functions/{}", category),
|
|
||||||
items: file_items,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let root_item = Item {
|
|
||||||
text: "Functions".to_string(),
|
|
||||||
collapsed: true,
|
|
||||||
items: category_items,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Serialize root_item to JSON and write to functions.json
|
|
||||||
let json_string = serde_json::to_string_pretty(&root_item)?;
|
|
||||||
fs::write("functions.json", json_string)?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user