From 714bbb4a64531268d17ca8f7ae60800ec2046a27 Mon Sep 17 00:00:00 2001 From: Tan Kian-ting Date: Sat, 25 Nov 2023 22:50:23 +0800 Subject: [PATCH] update readme --- .vscode/launch.json | 10 + README.md | 9 +- b.js | 8 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/libclo.Clo.html | 44 ++- docs/enums/canva.FontStyle.html | 80 ----- docs/enums/canva.TextWeight.html | 73 ----- docs/enums/libclo.Direction.html | 14 +- docs/enums/parser.TokenKind.html | 136 --------- docs/functions/canva.fontStyleTofont.html | 62 ---- docs/functions/canva.putText.html | 84 ------ docs/functions/index.processArgv.html | 6 +- .../libclo.calculateTextWidthHeight.html | 10 +- .../libclo.calculateTextWidthHeightAux.html | 16 +- docs/functions/libclo.filterEmptyString.html | 12 +- docs/functions/libclo.hyphenForClo.html | 12 +- docs/functions/libclo.hyphenTkTree.html | 12 +- docs/functions/libclo.ptToPx.html | 6 +- docs/functions/libclo.spacesToBreakpoint.html | 12 +- docs/functions/libclo.splitCJKV.html | 12 +- .../functions/libclo.twoReturnsToNewline.html | 12 +- docs/functions/parser.applyComment.html | 55 ---- docs/functions/parser.applyContent.html | 55 ---- docs/functions/parser.applyImport.html | 55 ---- docs/functions/parser.applyImports.html | 55 ---- docs/functions/parser.applyNotAtText.html | 55 ---- docs/functions/parser.applyParts.html | 57 ---- .../parser.applyPartsWithoutImport.html | 55 ---- docs/functions/parser.applySegment.html | 55 ---- docs/functions/parser.applySemiColon.html | 55 ---- docs/functions/parser.applySpaceNL.html | 55 ---- docs/functions/parser.applyText.html | 55 ---- docs/functions/parser.inputTextToTree.html | 58 ---- docs/functions/parser.treeToJS.html | 58 ---- docs/index.html | 17 +- docs/interfaces/canva.Clo.html | 88 ------ docs/interfaces/canva.CloCommand.html | 77 ----- docs/interfaces/canva.TextStyle.html | 108 ------- docs/interfaces/canva.fontPathPSNamePair.html | 77 ----- docs/interfaces/libclo.Box.html | 22 +- docs/interfaces/libclo.BreakPoint.html | 10 +- docs/interfaces/libclo.CharBox.html | 30 +- docs/interfaces/libclo.FrameBox.html | 26 +- docs/interfaces/libclo.HGlue.html | 8 +- docs/modules/canva.html | 69 ----- docs/modules/index.html | 6 +- docs/modules/libclo.html | 6 +- docs/modules/parser.html | 87 ------ docs/types/canva.PDFDocument.html | 46 --- docs/types/canva.TextStreamUnit.html | 46 --- docs/types/libclo.BoxesItem.html | 6 +- docs/types/parser.tkTree.html | 67 ----- docs/variables/index.helpDesc.html | 6 +- docs/variables/libclo.A4_IN_PX.html | 6 +- docs/variables/libclo.cjkvBlocksInRegex.html | 6 +- docs/variables/libclo.cjkvRegexPattern.html | 6 +- docs/variables/libclo.defaultFrameStyle.html | 6 +- docs/variables/libclo.defaultTextStyle.html | 8 +- docs/variables/parser.CONTENT.html | 46 --- docs/variables/parser.IMPORT.html | 46 --- docs/variables/parser.IMPORTEE.html | 49 ---- docs/variables/parser.IMPORTS.html | 46 --- docs/variables/parser.NOT_AT.html | 46 --- docs/variables/parser.NOT_AT_TEXT.html | 46 --- docs/variables/parser.PROG.html | 55 ---- docs/variables/parser.SEGMENT.html | 46 --- docs/variables/parser.SEMICOLON.html | 46 --- docs/variables/parser.lexer.html | 49 ---- docs/variables/parser.outputEnd.html | 49 ---- docs/variables/parser.outputHead.html | 49 ---- docs/variables/parser.outputMiddle.html | 49 ---- output.pdf | Bin 11595 -> 24741 bytes package-lock.json | 275 +++++++++++++++--- package.json | 1 + src/libclo/breakLines.js | 5 + src/libclo/breakLines.ts | 7 +- src/libclo/index.js | 106 ++++++- src/libclo/index.ts | 119 +++++++- src/parser.ts | 21 +- 80 files changed, 635 insertions(+), 2712 deletions(-) delete mode 100644 docs/enums/canva.FontStyle.html delete mode 100644 docs/enums/canva.TextWeight.html delete mode 100644 docs/enums/parser.TokenKind.html delete mode 100644 docs/functions/canva.fontStyleTofont.html delete mode 100644 docs/functions/canva.putText.html delete mode 100644 docs/functions/parser.applyComment.html delete mode 100644 docs/functions/parser.applyContent.html delete mode 100644 docs/functions/parser.applyImport.html delete mode 100644 docs/functions/parser.applyImports.html delete mode 100644 docs/functions/parser.applyNotAtText.html delete mode 100644 docs/functions/parser.applyParts.html delete mode 100644 docs/functions/parser.applyPartsWithoutImport.html delete mode 100644 docs/functions/parser.applySegment.html delete mode 100644 docs/functions/parser.applySemiColon.html delete mode 100644 docs/functions/parser.applySpaceNL.html delete mode 100644 docs/functions/parser.applyText.html delete mode 100644 docs/functions/parser.inputTextToTree.html delete mode 100644 docs/functions/parser.treeToJS.html delete mode 100644 docs/interfaces/canva.Clo.html delete mode 100644 docs/interfaces/canva.CloCommand.html delete mode 100644 docs/interfaces/canva.TextStyle.html delete mode 100644 docs/interfaces/canva.fontPathPSNamePair.html delete mode 100644 docs/modules/canva.html delete mode 100644 docs/modules/parser.html delete mode 100644 docs/types/canva.PDFDocument.html delete mode 100644 docs/types/canva.TextStreamUnit.html delete mode 100644 docs/types/parser.tkTree.html delete mode 100644 docs/variables/parser.CONTENT.html delete mode 100644 docs/variables/parser.IMPORT.html delete mode 100644 docs/variables/parser.IMPORTEE.html delete mode 100644 docs/variables/parser.IMPORTS.html delete mode 100644 docs/variables/parser.NOT_AT.html delete mode 100644 docs/variables/parser.NOT_AT_TEXT.html delete mode 100644 docs/variables/parser.PROG.html delete mode 100644 docs/variables/parser.SEGMENT.html delete mode 100644 docs/variables/parser.SEMICOLON.html delete mode 100644 docs/variables/parser.lexer.html delete mode 100644 docs/variables/parser.outputEnd.html delete mode 100644 docs/variables/parser.outputHead.html delete mode 100644 docs/variables/parser.outputMiddle.html diff --git a/.vscode/launch.json b/.vscode/launch.json index 2fe5aee..a6a1fc9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -16,6 +16,16 @@ "${workspaceFolder}/**/*.js" ] }, + + { + "type": "node-terminal", + "name": "Debug Current TS File (ts-node)", + "request": "launch", + "command": "source ${workspaceFolder}/activate.sh ; ts-node -- ${fileBasenameNoExtension}", + "cwd": "${fileDirname}" + }, + + { "type": "node", "request": "launch", diff --git a/README.md b/README.md index cfa3a06..df3f525 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ - another personal draught of a typesetting language and engine. - website: https://kianting.info/wiki/w/Project:Clo - license: MIT + - docs : https://buhong.kianting.info/docs/clo/index.html - issue tracking mailing list: `clo@kianting.info` ## How to use @@ -44,7 +45,8 @@ - 20231109-10: Keng-kái oa̍h-chōa ián-sǹg-hoat. - 20231113: the algorithm is basically fixed, and make a `bigFrame` to prepare for convert to boxes and positions. - 20231115-16: grid and basic types laying. - - 231120 fix the line-breaking algorithm + - 20231120: fix the line-breaking algorithm + - 20231125: multiple paragraph basic ## 之後的做法 - 先做一個前處理註冊器,註冊下列的前處理 @@ -64,7 +66,7 @@ (hglue 寬度 伸展值) (vglue 高度 伸展值) (bp 原始模式 斷行模式) ; breakpoint - (nl) ; newline + (br) ; force newline (em 數字) (ex 數字) (span {"font-family" : "Noto Sans" , "font-size" : 16 }) @@ -75,5 +77,8 @@ - `typedoc /path/to/src1 [/path/to/another/src/or/.js ...]` the generated page will be stored in `/docs`. + - set the referee source to my repo: + - `typedoc --sourceLinkTemplate "https://git.kianting.info/?p=clo;a=blob;f={path};hb=HEAD#l{line}" /path/to/src1 ...` + store the documents - `rsync /path/to/docs host@/var/www/docs` \ No newline at end of file diff --git a/b.js b/b.js index 8e28a83..ac8e773 100644 --- a/b.js +++ b/b.js @@ -9,9 +9,11 @@ let clo = new cloLib.Clo(); /* CLO: beginning of middle part*/ clo.mainStream = /* CLO: end of middle part*/ -[`In`, ` `, `the`, ` `, `beginning`, ` `, `was`, ` `, `the`, ` `, `Word,`, ` `, `and`, ` `, `the`, ` `, `Word`, ` `, `was`, ` `, `with`, ` `, `God,`, ` `, `and`, ` `, `the`, ` `, `Word`, ` `, `was`, ` `, `God.`, ` `, `The`, ` `, `same`, ` `, `was`, ` - `, `in`, ` `, `the`, ` `, `beginning`, ` `, `with`, ` `, `God.`, ` `, `All`, ` `, `things`, ` `, `were`, ` `, `made`, ` `, `by`, ` `, `him`, `;`, ` `, `and`, ` `, `without`, ` `, `him`, ` `, `was`, ` `, `not`, ` `, `any`, ` `, `thing`, ` `, `made`, ` `, `that`, ` - `, `was`, ` `, `made.`, ` `, `In`, ` `, `him`, ` `, `was`, ` `, `life`, `;`, ` `, `and`, ` `, `the`, ` `, `life`, ` `, `was`, ` `, `the`, ` `, `light`, ` `, `of`, ` `, `men.`, ` `, `And`, ` `, `the`, ` `, `light`, ` `, `shineth`, ` `, `in`, ` `, `darkness`, `;`, ` `, `and`, ` `, `the`, ` `, `darkness`, ` `, `comprehended`, ` `, `it`, ` `, `not.`, ["hglue", "10000"], " "]; +[`Files`, ` `, `in`, ` `, `the`, ` `, `folder`, ` `, `"%B"`, ` `, `cannot`, ` `, `be`, ` `, `deleted`, ` `, `because`, ` `, `you`, ` `, `do`, ` `, `not`, ` `, `have`, ` `, `permissions`, ` `, `to`, ` `, `see`, ` `, `them.`, ` + +`, `"Goloshes!"`, ` `, `said`, ` `, `Mrs`, ` `, `Conroy.`, ` `, `"That\'s`, ` `, `the`, ` `, `latest.`, ` `, `Whenever`, ` `, `it\'s`, ` `, `wet`, ` `, `underfoot`, ` `, `I`, ` `, `must`, ` `, `put`, ` `, `on`, ` `, `my`, ` `, `goloshes.`, ` `, `Tonight`, ` `, `even`, ` `, `he`, ` `, `wanted`, ` `, `me`, ` `, `to`, ` `, `put`, ` `, `them`, ` `, `on,`, ` `, `but`, ` `, `I`, ` `, `wouldn\'t.`, ` `, `The`, ` `, `next`, ` `, `thing`, ` `, `he\'ll`, ` `, `buy`, ` `, `me`, ` `, `will`, ` `, `be`, ` `, `a`, ` `, `diving`, ` `, `suit."`, ` + + `, `When`, ` `, `the`, ` `, `short`, ` `, `days`, ` `, `of`, ` `, `winter`, ` `, `came`, ` `, `dusk`, ` `, `fell`, ` `, `before`, ` `, `we`, ` `, `had`, ` `, `well`, ` `, `eaten`, ` `, `our`, ` `, `dinners.`, ` `, `When`, ` `, `we`, ` `, `met`, ` `, `in`, ` `, `the`, ` `, `street`, ` `, `the`, ` `, `houses`, ` `, `had`, ` `, `grown`, ` `, `sombre.`, ` `, `The`, ` `, `space`, ` `, `of`, ` `, `sky`, ` `, `above`, ` `, `us`, ` `, `was`, ` `, `the`, ` `, `colour`, ` `, `of`, ` `, `ever-changing`, ` `, `violet`, ` `, `and`, ` `, `towards`, ` `, `it`, ` `, `the`, ` `, `lamps`, ` `, `of`, ` `, `the`, ` `, `street`, ` `, `lifted`, ` `, `their`, ` `, `feeble`, ` `, `lanterns.`, ` `, `The`, ` `, `cold`, ` `, `air`, ` `, `stung`, ` `, `us`, ` `, `and`, ` `, `we`, ` `, `played`, ` `, `till`, ` `, `our`, ` `, `bodies`, ` `, `glowed.`, ` `, `Our`, ` `, `shouts`, ` `, `echoed`, ` `, `in`, ` `, `the`, ` `, `silent`, ` `, `street.`, ` `, `The`, ` `, `career`, ` `, `of`, ` `, `our`, ` `, `play`, ` `, `brought`, ` `, `us`, ` `, `through`, ` `, `the`, ` `, `dark`, ` `, `muddy`, ` `, `lanes`, ` `, `behind`, ` `, `the`, ` `, `houses`, ` `, `where`, ` `, `we`, ` `, `ran`, ` `, `the`, ` `, `gauntlet`, ` `, `of`, ` `, `the`, ` `, `rough`, ` `, `tribes`, ` `, `from`, ` `, `the`, ` `, `cottages,`, ` `, `to`, ` `, `the`, ` `, `back`, ` `, `doors`, ` `, `of`, ` `, `the`, ` `, `dark`, ` `, `dripping`, ` `, `gardens`, ` `, `where`, ` `, `odours`, ` `, `arose`, ` `, `from`, ` `, `the`, ` `, `ashpits,`, ` `, `to`, ` `, `the`, ` `, `dark`, ` `, `odorous`, ` `, `stables`, ` `, `where`, ` `, `a`, ` `, `coachman`, ` `, `smoothed`, ` `, `and`, ` `, `combed`, ` `, `the`, ` `, `horse`, ` `, `or`, ` `, `shook`, ` `, `music`, ` `, `from`, ` `, `the`, ` `, `buckled`, ` `, `harness.`, ` `, `When`, ` `, `we`, ` `, `returned`, ` `, `to`, ` `, `the`, ` `, `street`, ` `, `light`, ` `, `from`, ` `, `the`, ` `, `kitchen`, ` `, `windows`, ` `, `had`, ` `, `filled`, ` `, `the`, ` `, `areas.`, ` `, `If`, ` `, `my`, ` `, `uncle`, ` `, `was`, ` `, `seen`, ` `, `turning`, ` `, `the`, ` `, `corner`, ` `, `we`, ` `, `hid`, ` `, `in`, ` `, `the`, ` `, `shadow`, ` `, `until`, ` `, `we`, ` `, `had`, ` `, `seen`, ` `, `him`, ` `, `safely`, ` `, `housed.`, ` `, `Or`, ` `, `if`, ` `, `Mangan\'s`, ` `, `sister`, ` `, `came`, ` `, `out`, ` `, `on`, ` `, `the`, ` `, `doorstep`, ` `, `to`, ` `, `call`, ` `, `her`, ` `, `brother`, ` `, `in`, ` `, `to`, ` `, `his`, ` `, `tea`, ` `, `we`, ` `, `watched`, ` `, `her`, ` `, `from`, ` `, `our`, ` `, `shadow`, ` `, `peer`, ` `, `up`, ` `, `and`, ` `, `down`, ` `, `the`, ` `, `street.`, ` `, `We`, ` `, `waited`, ` `, `to`, ` `, `see`, ` `, `whether`, ` `, `she`, ` `, `would`, ` `, `remain`, ` `, `or`, ` `, `go`, ` `, `in`, ` `, `and,`, ` `, `if`, ` `, `she`, ` `, `remained,`, ` `, `we`, ` `, `left`, ` `, `our`, ` `, `shadow`, ` `, `and`, ` `, `walked`, ` `, `up`, ` `, `to`, ` `, `Mangan\'s`, ` `, `steps`, ` `, `resignedly.`, ` `, `She`, ` `, `was`, ` `, `waiting`, ` `, `for`, ` `, `us,`, ` `, `her`, ` `, `figure`, ` `, `defined`, ` `, `by`, ` `, `the`, ` `, `light`, ` `, `from`, ` `, `the`, ` `, `half-opened`, ` `, `door.`, ` `, `Her`, ` `, `brother`, ` `, `always`, ` `, `teased`, ` `, `her`, ` `, `before`, ` `, `he`, ` `, `obeyed`, ` `, `and`, ` `, `I`, ` `, `stood`, ` `, `by`, ` `, `the`, ` `, `railings`, ` `, `looking`, ` `, `at`, ` `, `her.`, ` `, `Her`, ` `, `dress`, ` `, `swung`, ` `, `as`, ` `, `she`, ` `, `moved`, ` `, `her`, ` `, `body`, ` `, `and`, ` `, `the`, ` `, `soft`, ` `, `rope`, ` `, `of`, ` `, `her`, ` `, `hair`, ` `, `tossed`, ` `, `from`, ` `, `side`, ` `, `to`, ` `, `side.`, ` `]; /* CLO: beginning of end part*/ clo.generatePdf(); /*CLO : end of end part*/ diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 4cba066..f497438 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA52XUW/aMBDHvwvP1bZ2bbf1jUJoaUuIIFsrVRVygyEejh0lDgVN++4ziQlOnJyjPZX6/vezffbdOa9/egLvRO+mFyC2Rb2zXoxEKP+N+DKjOP2cD38KRUSlbUPYsndzcdYLQkKXCWa9m9cSMOJMzMWe4hMEsyw6IkpzFfb971lJ8OWfZ0zWoWhGnOztjAHlJ2fCBE5WKCj3Ia21vVxdV50HPIqQtIAMJYJQh7XWomGQSg0EWsm4eRLgzV0UYQ+RBCCaYgjtDUdDHmQRZlrAxT4ucZqgxvny49v51YWx3wSj6CcjLbiqxkZcHS+Mzw8/T8hVxgJBONM3rQmr3OtLDRln4rCGdpQSGIg3DSLH8M5MlHy4U6KEmMZDnAYnxhYlBL1rFKWo4r7q0YkTLo897SfrbdN2Co4mArdEyXug581xT8V4p00NSYLzueupqxilvWPqBhSl6WkJRuKeX+iut3zXmBXKW5qhPLiVV3LjcaJfsgZIqQJLSIgSy2qUBKKMEpm+FsxRA3Hu72jWXIEUJBeAseE7nI4FjuopfQptYbelc/9yMXYX3kvTrVesowS49sHvzfaW8mCTjtkMr/VENHCG1sLNNbJ6yhgxC1aXAtQlXqGMivykas3AwBpaO7ehx7RhW1pNNQaIBhlFAud9lixFeF9rxqf6coxFiwtQg9tc+tnuPyaSXsBcK0LlCTlRLPay7xC2BmYwtAA33MchZiOeVEqWgdRlVpq/8ROMrbRCBvU44XMPCmUhAAhpfKgQPs8LXlwtiwbNFINkSsTg4fEXCFQagCM++AyLLGFyYhd/UMKgwDWowW4YoyTF2ivr2A2L8U7d0OcbzB6J/o4suqFilPb2bihq96GouspfNNwCs+QOpq7vuH5TdVAcpQCKwnjiTWcQohBYCY5jZTiOlTK3QuYAw536iz60l0JgJSx858WOyVUAy5tN7wDIwQx4z527CXy2SgEyJuPB9GnqghSlATgU7/R8MRi5HfDnmZAPb0fPFoNRaqyce4zsoIPISpqQ5bK5uVZYhQygoTim+8M3I24upYqmy4Dip2TyKdeFlststHEU88QKK1TdWGk3WGqjuVz0W7/ZdF4ptBE91GF1uagT6ZmIUF6DbhE0PWxzzPG6y61RMjstIgNO9Y+0Np4SWomH9u8+WXmFzEbrctCWMyZMfcP7vO09pWg1JfTckGafP8wB2FHS8LB4+webpy2EZBMAAA==" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA52VUU/bMBCA/0ueqzE6YFvfShmjm4QqiLZJCCHjXGsvjh3Zl9Jq4r9j0jZx6nJBe3T83Xfns3u9+5cgrDAZJVJnsEoGSclQ+GVhskqBO6o/fxBYKL+X+1UyGg4SLqTKLOhkdNcIBKjyAhxvHUtmJXsMLFuiq/s0fB40ktIaDs6N7WLZeuaV5iiN3nkCqKs6O3m+D2RKPnJl4jNtvr/rUBfSQp27tYCuisbR7HdtX4IqJmEJXDHn2hIm+2UcD8PQcxPciNQIds54G+239w5xehZGW2D5zPg4UtJQlGsimO2pZotQlkvLCujR7BjKc/VdVUBJaoDsjVmBmyIUrQXXZae1m/09ycevn49Pwwc7PnmYXj/M/hx69VvXDiGePf+bL8+V4bmb6htYhD/ESBexPd6amTH0PdI92hAlrBnMWaWwvqlbXCsgtBHb70396p3aBqV6wBSvFEN4hX/LDMUVyIXAQ/Nl14s3QqJp059lXK3+I5GPInLNpfI39K0ocX2LVuoFkSFiCa9YlwL0pbGdkRUpQ6zXluapBei1bTDCVmJqZlQrNwBhcOXrhEhNPfDK7liMbDFMmpXEyY+fv0jhliE8+GRuACurfeJreFJSU407QB/4N7x/AVVnHoriBwAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index a3eef89..a339d75 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/libclo.Clo.html b/docs/classes/libclo.Clo.html index f6753b0..7597f83 100644 --- a/docs/classes/libclo.Clo.html +++ b/docs/classes/libclo.Clo.html @@ -25,7 +25,7 @@ +
  • Defined in libclo/index.ts:410
  • @@ -64,7 +64,7 @@
  • Returns Clo

  • +
  • Defined in libclo/index.ts:419
  • Properties

    @@ -79,7 +79,7 @@
    [index: string]: any
    +
  • Defined in libclo/index.ts:416
  • mainStream: string[]
    @@ -87,7 +87,7 @@
    +
  • Defined in libclo/index.ts:412
  • preprocessors: Function[]
    @@ -95,7 +95,7 @@
    +
  • Defined in libclo/index.ts:414
  • Methods

    @@ -117,7 +117,7 @@
    +
  • Defined in libclo/index.ts:610
  • +
  • Defined in libclo/index.ts:459
  • Returns any

    +
  • Defined in libclo/index.ts:442
  • +
  • Defined in libclo/index.ts:698
  • Returns void

    +
  • Defined in libclo/index.ts:553
  • +
  • Defined in libclo/index.ts:455
  • -

    Returns Promise<[PDFDocument, TextStyle, fontPathPSNamePair]>

    +
  • Defined in libclo/index.ts:501
  • +
  • Defined in libclo/index.ts:744
  • Returns BoxesItem[]

    +
  • Defined in libclo/index.ts:704
  • +
  • Defined in libclo/index.ts:648
  • Returns void

    +
  • Defined in libclo/index.ts:438
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/enums/canva.FontStyle.html b/docs/enums/canva.FontStyle.html deleted file mode 100644 index 6f182c4..0000000 --- a/docs/enums/canva.FontStyle.html +++ /dev/null @@ -1,80 +0,0 @@ -FontStyle | clo
    -
    - -
    -
    -
    -
    - -

    Enumeration FontStyle

    -
    -
    -
    - -
    -
    -

    Enumeration Members

    -
    -
    -

    Enumeration Members

    -
    - -
    ITALIC: 1
    -
    - -
    NORMAL: 0
    -
    - -
    OBLIQUE: 2
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/enums/canva.TextWeight.html b/docs/enums/canva.TextWeight.html deleted file mode 100644 index 383d177..0000000 --- a/docs/enums/canva.TextWeight.html +++ /dev/null @@ -1,73 +0,0 @@ -TextWeight | clo
    -
    - -
    -
    -
    -
    - -

    Enumeration TextWeight

    -
    -
    -
    - -
    -
    -

    Enumeration Members

    -
    -
    -

    Enumeration Members

    -
    - -
    BOLD: 1
    -
    - -
    REGULAR: 0
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/enums/libclo.Direction.html b/docs/enums/libclo.Direction.html index 4ee6071..bc648c7 100644 --- a/docs/enums/libclo.Direction.html +++ b/docs/enums/libclo.Direction.html @@ -24,7 +24,7 @@ etc.

    +
  • Defined in libclo/index.ts:21
  • @@ -43,22 +43,22 @@ etc.

    BTT: 3
    +
  • Defined in libclo/index.ts:25
  • LTR: 0
    +
  • Defined in libclo/index.ts:22
  • RTL: 1
    +
  • Defined in libclo/index.ts:23
  • TTB: 2
    +
  • Defined in libclo/index.ts:24
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/enums/parser.TokenKind.html b/docs/enums/parser.TokenKind.html deleted file mode 100644 index 02642e4..0000000 --- a/docs/enums/parser.TokenKind.html +++ /dev/null @@ -1,136 +0,0 @@ -TokenKind | clo
    -
    - -
    -
    -
    -
    - -

    Enumeration TokenKind

    -
    -
    -
    - -
    -
    -

    Enumeration Members

    -
    -
    -

    Enumeration Members

    -
    - -
    Comment: 10
    -
    - -
    ExcapeAt: 5
    -
    - -
    ExprMark: 4
    -
    - -
    Id: 8
    -
    - -
    Number: 2
    -
    - -
    Op: 3
    -
    - -
    Paren: 6
    -
    - -
    Semicolon: 1
    -
    - -
    Seperator: 0
    -
    - -
    SpaceNL: 7
    -
    - -
    Str: 9
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/canva.fontStyleTofont.html b/docs/functions/canva.fontStyleTofont.html deleted file mode 100644 index a08f7bd..0000000 --- a/docs/functions/canva.fontStyleTofont.html +++ /dev/null @@ -1,62 +0,0 @@ -fontStyleTofont | clo
    -
    - -
    -
    -
    -
    - -

    Function fontStyleTofont

    -
    -
      - -
    • -

      guess the font path and postscript name of a font style with fontconfig's commands

      -
      -
      -

      Parameters

      -
      -

      Returns fontPathPSNamePair

      pair of the font path and postscript name.

      - -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/canva.putText.html b/docs/functions/canva.putText.html deleted file mode 100644 index 33de618..0000000 --- a/docs/functions/canva.putText.html +++ /dev/null @@ -1,84 +0,0 @@ -putText | clo
    -
    - -
    -
    -
    -
    - -

    Function putText

    -
    -
      - -
    • -

      put text in a clo canva.

      -
      -
      -

      Parameters

      -
        -
      • -
        clo: Clo
        -

        : the clo object

        -
        -
      • -
      • -
        str: string
        -

        input string

        -
        -
      • -
      • -
        sty: TextStyle
        -

        input fontstyle

        -
        -
      • -
      • -
        pageNo: number
      • -
      • -
        x: number
        -

        base x-point from left

        -
        -
      • -
      • -
        y: number
        -

        base y-point from top

        -
        -
      -

      Returns Promise<Clo>

      a new updated clo object

      - -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/index.processArgv.html b/docs/functions/index.processArgv.html index 1395090..5a83e94 100644 --- a/docs/functions/index.processArgv.html +++ b/docs/functions/index.processArgv.html @@ -32,7 +32,7 @@

    Returns void

    +
  • Defined in index.ts:33
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.calculateTextWidthHeight.html b/docs/functions/libclo.calculateTextWidthHeight.html index e89a9ab..cb14d54 100644 --- a/docs/functions/libclo.calculateTextWidthHeight.html +++ b/docs/functions/libclo.calculateTextWidthHeight.html @@ -26,13 +26,13 @@

    Parameters

    +
    style: TextStyle

    Returns Promise<BoxesItem[]>

    +
  • Defined in libclo/index.ts:291
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.calculateTextWidthHeightAux.html b/docs/functions/libclo.calculateTextWidthHeightAux.html index 7d13527..3ded441 100644 --- a/docs/functions/libclo.calculateTextWidthHeightAux.html +++ b/docs/functions/libclo.calculateTextWidthHeightAux.html @@ -18,7 +18,7 @@

    Function calculateTextWidthHeightAux

    +
  • Defined in libclo/index.ts:314
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.filterEmptyString.html b/docs/functions/libclo.filterEmptyString.html index 90d8a1d..81d408c 100644 --- a/docs/functions/libclo.filterEmptyString.html +++ b/docs/functions/libclo.filterEmptyString.html @@ -18,7 +18,7 @@

    Function filterEmptyString

    +
  • Defined in libclo/index.ts:235
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.hyphenForClo.html b/docs/functions/libclo.hyphenForClo.html index 89e305f..3223dc0 100644 --- a/docs/functions/libclo.hyphenForClo.html +++ b/docs/functions/libclo.hyphenForClo.html @@ -18,7 +18,7 @@

    Function hyphenForClo

    +
  • Defined in libclo/index.ts:199
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.hyphenTkTree.html b/docs/functions/libclo.hyphenTkTree.html index 2eec815..01e3e0a 100644 --- a/docs/functions/libclo.hyphenTkTree.html +++ b/docs/functions/libclo.hyphenTkTree.html @@ -18,7 +18,7 @@

    Function hyphenTkTree

    +
  • Defined in libclo/index.ts:254
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.ptToPx.html b/docs/functions/libclo.ptToPx.html index c4828de..f8b5a09 100644 --- a/docs/functions/libclo.ptToPx.html +++ b/docs/functions/libclo.ptToPx.html @@ -34,7 +34,7 @@
    +
  • Defined in libclo/index.ts:126
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.spacesToBreakpoint.html b/docs/functions/libclo.spacesToBreakpoint.html index 58b7397..9b9f6b4 100644 --- a/docs/functions/libclo.spacesToBreakpoint.html +++ b/docs/functions/libclo.spacesToBreakpoint.html @@ -18,7 +18,7 @@

    Function spacesToBreakpoint

    +
  • Defined in libclo/index.ts:213
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.splitCJKV.html b/docs/functions/libclo.splitCJKV.html index bd3fe1d..9d395f6 100644 --- a/docs/functions/libclo.splitCJKV.html +++ b/docs/functions/libclo.splitCJKV.html @@ -18,7 +18,7 @@

    Function splitCJKV

    +
  • Defined in libclo/index.ts:179
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/libclo.twoReturnsToNewline.html b/docs/functions/libclo.twoReturnsToNewline.html index 358feae..982caf9 100644 --- a/docs/functions/libclo.twoReturnsToNewline.html +++ b/docs/functions/libclo.twoReturnsToNewline.html @@ -18,7 +18,7 @@

    Function twoReturnsToNewline

    +
  • Defined in libclo/index.ts:142
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/parser.applyComment.html b/docs/functions/parser.applyComment.html deleted file mode 100644 index 782fcd9..0000000 --- a/docs/functions/parser.applyComment.html +++ /dev/null @@ -1,55 +0,0 @@ -applyComment | clo
    -
    - -
    -
    -
    -
    - -

    Function applyComment

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applyContent.html b/docs/functions/parser.applyContent.html deleted file mode 100644 index 6871d46..0000000 --- a/docs/functions/parser.applyContent.html +++ /dev/null @@ -1,55 +0,0 @@ -applyContent | clo
    -
    - -
    -
    -
    -
    - -

    Function applyContent

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applyImport.html b/docs/functions/parser.applyImport.html deleted file mode 100644 index 4b69675..0000000 --- a/docs/functions/parser.applyImport.html +++ /dev/null @@ -1,55 +0,0 @@ -applyImport | clo
    -
    - -
    -
    -
    -
    - -

    Function applyImport

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applyImports.html b/docs/functions/parser.applyImports.html deleted file mode 100644 index 313f50a..0000000 --- a/docs/functions/parser.applyImports.html +++ /dev/null @@ -1,55 +0,0 @@ -applyImports | clo
    -
    - -
    -
    -
    -
    - -

    Function applyImports

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applyNotAtText.html b/docs/functions/parser.applyNotAtText.html deleted file mode 100644 index c824516..0000000 --- a/docs/functions/parser.applyNotAtText.html +++ /dev/null @@ -1,55 +0,0 @@ -applyNotAtText | clo
    -
    - -
    -
    -
    -
    - -

    Function applyNotAtText

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applyParts.html b/docs/functions/parser.applyParts.html deleted file mode 100644 index 219498e..0000000 --- a/docs/functions/parser.applyParts.html +++ /dev/null @@ -1,57 +0,0 @@ -applyParts | clo
    -
    - -
    -
    -
    -
    - -

    Function applyParts

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applyPartsWithoutImport.html b/docs/functions/parser.applyPartsWithoutImport.html deleted file mode 100644 index 4268d34..0000000 --- a/docs/functions/parser.applyPartsWithoutImport.html +++ /dev/null @@ -1,55 +0,0 @@ -applyPartsWithoutImport | clo
    -
    - -
    -
    -
    -
    - -

    Function applyPartsWithoutImport

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applySegment.html b/docs/functions/parser.applySegment.html deleted file mode 100644 index 7532fd0..0000000 --- a/docs/functions/parser.applySegment.html +++ /dev/null @@ -1,55 +0,0 @@ -applySegment | clo
    -
    - -
    -
    -
    -
    - -

    Function applySegment

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applySemiColon.html b/docs/functions/parser.applySemiColon.html deleted file mode 100644 index 44b6fd8..0000000 --- a/docs/functions/parser.applySemiColon.html +++ /dev/null @@ -1,55 +0,0 @@ -applySemiColon | clo
    -
    - -
    -
    -
    -
    - -

    Function applySemiColon

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applySpaceNL.html b/docs/functions/parser.applySpaceNL.html deleted file mode 100644 index 466b1a3..0000000 --- a/docs/functions/parser.applySpaceNL.html +++ /dev/null @@ -1,55 +0,0 @@ -applySpaceNL | clo
    -
    - -
    -
    -
    -
    - -

    Function applySpaceNL

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.applyText.html b/docs/functions/parser.applyText.html deleted file mode 100644 index 3879fbb..0000000 --- a/docs/functions/parser.applyText.html +++ /dev/null @@ -1,55 +0,0 @@ -applyText | clo
    -
    - -
    -
    -
    -
    - -

    Function applyText

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.inputTextToTree.html b/docs/functions/parser.inputTextToTree.html deleted file mode 100644 index 60f7d89..0000000 --- a/docs/functions/parser.inputTextToTree.html +++ /dev/null @@ -1,58 +0,0 @@ -inputTextToTree | clo
    -
    - -
    -
    -
    -
    - -

    Function inputTextToTree

    -
    -
      - -
    • -

      inputText to tkTree (ASTTree)

      -
      -
      -

      Parameters

      -
        -
      • -
        inputText: string
      -

      Returns tkTree

      -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/functions/parser.treeToJS.html b/docs/functions/parser.treeToJS.html deleted file mode 100644 index e3310c5..0000000 --- a/docs/functions/parser.treeToJS.html +++ /dev/null @@ -1,58 +0,0 @@ -treeToJS | clo
    -
    - -
    -
    -
    -
    - -

    Function treeToJS

    -
    -
      - -
    • -

      Convert tree (ASTTree; tkTree) to JS Code.

      -
      -
      -

      Parameters

      -
      -

      Returns string

      -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 3a0d9c5..e0ebddb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -72,8 +72,17 @@
      (hglue 寬度 伸展值)
    (vglue 高度 伸展值)
    (bp 原始模式 斷行模式) ; breakpoint
    (nl) ; newline
    (em 數字)
    (ex 數字)
    (span {"font-family" : "Noto Sans" , "font-size" : 16 })
    (vbox 高度 內容)

    How to generate documents

    +

    store the documents

    +
    @@ -108,10 +117,8 @@ the generated page will be stored in /src.
    +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/canva.Clo.html b/docs/interfaces/canva.Clo.html deleted file mode 100644 index 07b3a91..0000000 --- a/docs/interfaces/canva.Clo.html +++ /dev/null @@ -1,88 +0,0 @@ -Clo | clo
    -
    - -
    -
    -
    -
    - -

    Interface Clo

    -
    -

    a clo document

    -
    -
    -
    -

    Hierarchy

    -
      -
    • Clo
    -
    -
    -
    - -
    -
    -

    Properties

    -
    -
    -

    Properties

    -
    - -
    PDFCanvas: PDFDocument
    -
    - -
    mainFontStyle?: FontStyle
    -
    - -
    mainText: TextStreamUnit[]
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/interfaces/canva.CloCommand.html b/docs/interfaces/canva.CloCommand.html deleted file mode 100644 index 32cc089..0000000 --- a/docs/interfaces/canva.CloCommand.html +++ /dev/null @@ -1,77 +0,0 @@ -CloCommand | clo
    -
    - -
    -
    -
    -
    - -

    Interface CloCommand

    -
    -

    Hierarchy

    -
      -
    • CloCommand
    -
    -
    -
    - -
    -
    -

    Properties

    -
    -
    -

    Properties

    -
    - -
    -
    - -
    cmdName: string
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/interfaces/canva.TextStyle.html b/docs/interfaces/canva.TextStyle.html deleted file mode 100644 index bf6a4f7..0000000 --- a/docs/interfaces/canva.TextStyle.html +++ /dev/null @@ -1,108 +0,0 @@ -TextStyle | clo
    -
    - -
    -
    -
    -
    - -

    Interface TextStyle

    -
    -

    Font Style Interface

    -
      -
    • family : eg. "FreeSans"
    • -
    • size : in px, not in pt.
    • -
    • textWeight : TextWeight.REGULAR ,etc
    • -
    • fontStyle : FontStyle.ITALIC ,etc
    • -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • TextStyle
    -
    -
    -
    - -
    -
    -

    Properties

    -
    -
    -

    Properties

    -
    - -
    color?: string
    -
    - -
    family: string
    -
    - -
    fontStyle: FontStyle
    -
    - -
    size: number
    -
    - -
    textWeight: TextWeight
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/interfaces/canva.fontPathPSNamePair.html b/docs/interfaces/canva.fontPathPSNamePair.html deleted file mode 100644 index 2f4c7d8..0000000 --- a/docs/interfaces/canva.fontPathPSNamePair.html +++ /dev/null @@ -1,77 +0,0 @@ -fontPathPSNamePair | clo
    -
    - -
    -
    -
    -
    - -

    Interface fontPathPSNamePair

    -
    -

    Hierarchy

    -
      -
    • fontPathPSNamePair
    -
    -
    -
    - -
    -
    -

    Properties

    -
    -
    -

    Properties

    -
    - -
    path: string
    -
    - -
    psName: string
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/interfaces/libclo.Box.html b/docs/interfaces/libclo.Box.html index f039494..3f9a8d4 100644 --- a/docs/interfaces/libclo.Box.html +++ b/docs/interfaces/libclo.Box.html @@ -36,7 +36,7 @@
  • FrameBox
  • CharBox
  • +
  • Defined in libclo/index.ts:70
  • @@ -58,37 +58,37 @@
    content: null | string | Box[]
    +
  • Defined in libclo/index.ts:77
  • direction: Direction
    +
  • Defined in libclo/index.ts:74
  • height: number
    +
  • Defined in libclo/index.ts:76
  • -
    textStyle: null | TextStyle
    +
  • Defined in libclo/index.ts:73
  • width: number
    +
  • Defined in libclo/index.ts:75
  • x: null | number
    +
  • Defined in libclo/index.ts:71
  • y: null | number
    +
  • Defined in libclo/index.ts:72
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/libclo.BreakPoint.html b/docs/interfaces/libclo.BreakPoint.html index 0c2eb89..1088207 100644 --- a/docs/interfaces/libclo.BreakPoint.html +++ b/docs/interfaces/libclo.BreakPoint.html @@ -21,7 +21,7 @@ +
  • Defined in libclo/index.ts:36
  • @@ -38,12 +38,12 @@
    newLined: BoxesItem
    +
  • Defined in libclo/index.ts:38
  • original: BoxesItem
    +
  • Defined in libclo/index.ts:37
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/libclo.CharBox.html b/docs/interfaces/libclo.CharBox.html index 2eb5e53..956d92f 100644 --- a/docs/interfaces/libclo.CharBox.html +++ b/docs/interfaces/libclo.CharBox.html @@ -35,7 +35,7 @@ +
  • Defined in libclo/index.ts:53
  • @@ -62,63 +62,63 @@
    content: null | string | Box[]
    +
  • Defined in libclo/index.ts:77
  • direction: Direction
    +
  • Defined in libclo/index.ts:74
  • height: number
    +
  • Defined in libclo/index.ts:76
  • maxX: number
    +
  • Defined in libclo/index.ts:55
  • maxY: number
    +
  • Defined in libclo/index.ts:57
  • minX: number
    +
  • Defined in libclo/index.ts:54
  • minY: number
    +
  • Defined in libclo/index.ts:56
  • -
    textStyle: null | TextStyle
    +
  • Defined in libclo/index.ts:73
  • width: number
    +
  • Defined in libclo/index.ts:75
  • x: null | number
    +
  • Defined in libclo/index.ts:71
  • y: null | number
    +
  • Defined in libclo/index.ts:72
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/libclo.FrameBox.html b/docs/interfaces/libclo.FrameBox.html index 4c3c258..f7ec4fc 100644 --- a/docs/interfaces/libclo.FrameBox.html +++ b/docs/interfaces/libclo.FrameBox.html @@ -31,7 +31,7 @@ +
  • Defined in libclo/index.ts:48
  • @@ -55,54 +55,54 @@
    baseLineskip: null | number
    +
  • Defined in libclo/index.ts:50
  • content: null | string | Box[]
    +
  • Defined in libclo/index.ts:77
  • direction: Direction
    +
  • Defined in libclo/index.ts:74
  • directionInsideLine: Direction
    +
  • Defined in libclo/index.ts:49
  • height: number
    +
  • Defined in libclo/index.ts:76
  • -
    textStyle: null | TextStyle
    +
  • Defined in libclo/index.ts:73
  • width: number
    +
  • Defined in libclo/index.ts:75
  • x: null | number
    +
  • Defined in libclo/index.ts:71
  • y: null | number
    +
  • Defined in libclo/index.ts:72
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/libclo.HGlue.html b/docs/interfaces/libclo.HGlue.html index 334c099..a760ae5 100644 --- a/docs/interfaces/libclo.HGlue.html +++ b/docs/interfaces/libclo.HGlue.html @@ -28,7 +28,7 @@ +
  • Defined in libclo/index.ts:32
  • @@ -44,7 +44,7 @@
    stretchFactor: number
    +
  • Defined in libclo/index.ts:33
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/canva.html b/docs/modules/canva.html deleted file mode 100644 index ef34d40..0000000 --- a/docs/modules/canva.html +++ /dev/null @@ -1,69 +0,0 @@ -canva | clo
    -
    - -
    -
    -
    -
    - -

    Module canva

    -
    -
    -

    Index

    -
    -

    Enumerations

    -
    -
    -

    Interfaces

    -
    -
    -

    Type Aliases

    -
    -
    -

    Functions

    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/modules/index.html b/docs/modules/index.html index 1ae6766..c836f03 100644 --- a/docs/modules/index.html +++ b/docs/modules/index.html @@ -16,7 +16,7 @@
  • index
  • Module index

    +
  • Defined in index.ts:1
  • Index

    @@ -46,10 +46,8 @@ +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/libclo.html b/docs/modules/libclo.html index 4ef996c..af0db3e 100644 --- a/docs/modules/libclo.html +++ b/docs/modules/libclo.html @@ -16,7 +16,7 @@
  • libclo
  • Module libclo

    +
  • Defined in libclo/index.ts:1
  • Index

    @@ -78,10 +78,8 @@ +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/parser.html b/docs/modules/parser.html deleted file mode 100644 index 715836d..0000000 --- a/docs/modules/parser.html +++ /dev/null @@ -1,87 +0,0 @@ -parser | clo
    -
    - -
    -
    - -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/types/canva.PDFDocument.html b/docs/types/canva.PDFDocument.html deleted file mode 100644 index 2c87e59..0000000 --- a/docs/types/canva.PDFDocument.html +++ /dev/null @@ -1,46 +0,0 @@ -PDFDocument | clo
    -
    - -
    -
    -
    -
    - -

    Type alias PDFDocument

    -
    PDFDocument: PDFKit.PDFDocument
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/types/canva.TextStreamUnit.html b/docs/types/canva.TextStreamUnit.html deleted file mode 100644 index d818ef1..0000000 --- a/docs/types/canva.TextStreamUnit.html +++ /dev/null @@ -1,46 +0,0 @@ -TextStreamUnit | clo
    -
    - -
    -
    -
    -
    - -

    Type alias TextStreamUnit

    -
    TextStreamUnit: string | CloCommand
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/types/libclo.BoxesItem.html b/docs/types/libclo.BoxesItem.html index da76c9a..870c895 100644 --- a/docs/types/libclo.BoxesItem.html +++ b/docs/types/libclo.BoxesItem.html @@ -18,7 +18,7 @@

    Type alias BoxesItem

    BoxesItem: HGlue | Box | BreakPoint | BoxesItem[]
    +
  • Defined in libclo/index.ts:41
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/parser.tkTree.html b/docs/types/parser.tkTree.html deleted file mode 100644 index c2662f9..0000000 --- a/docs/types/parser.tkTree.html +++ /dev/null @@ -1,67 +0,0 @@ -tkTree | clo
    -
    - -
    -
    -
    -
    - -

    Type alias tkTree

    -
    tkTree: string | tkTree[]
    -

    convert a tkTree AST to S-expr string

    -
    -
    -

    Param

    the tkTree

    - -

    Returns

    S-expr String

    -

    export function tkTreeToSExp(t: tkTree): string{ - var str = "";

    -

    if (Array.isArray(t)){ - let strArray = t.map((x)=>tkTreeToSExp(x)); - str = "(" + strArray.join("◎") + ")"; - }else{ - if (t=== undefined){ - str = "%undefined" - }else{ - str = t; - } - }

    -

    return str; -}

    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/index.helpDesc.html b/docs/variables/index.helpDesc.html index 42f726b..db1efac 100644 --- a/docs/variables/index.helpDesc.html +++ b/docs/variables/index.helpDesc.html @@ -21,7 +21,7 @@
    +
  • Defined in index.ts:9
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/libclo.A4_IN_PX.html b/docs/variables/libclo.A4_IN_PX.html index 8ff3f99..969b276 100644 --- a/docs/variables/libclo.A4_IN_PX.html +++ b/docs/variables/libclo.A4_IN_PX.html @@ -28,7 +28,7 @@
    width: number
    +
  • Defined in libclo/index.ts:84
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/libclo.cjkvBlocksInRegex.html b/docs/variables/libclo.cjkvBlocksInRegex.html index 7e75535..5585299 100644 --- a/docs/variables/libclo.cjkvBlocksInRegex.html +++ b/docs/variables/libclo.cjkvBlocksInRegex.html @@ -28,7 +28,7 @@
    +
  • Defined in libclo/index.ts:114
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/libclo.cjkvRegexPattern.html b/docs/variables/libclo.cjkvRegexPattern.html index dbcbcce..c2bb8ef 100644 --- a/docs/variables/libclo.cjkvRegexPattern.html +++ b/docs/variables/libclo.cjkvRegexPattern.html @@ -18,7 +18,7 @@

    Variable cjkvRegexPatternConst

    cjkvRegexPattern: RegExp = ...
    +
  • Defined in libclo/index.ts:116
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/libclo.defaultFrameStyle.html b/docs/variables/libclo.defaultFrameStyle.html index 9892df7..a07bfaa 100644 --- a/docs/variables/libclo.defaultFrameStyle.html +++ b/docs/variables/libclo.defaultFrameStyle.html @@ -18,7 +18,7 @@

    Variable defaultFrameStyleConst

    defaultFrameStyle: FrameBox = ...
    +
  • Defined in libclo/index.ts:94
  • +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/libclo.defaultTextStyle.html b/docs/variables/libclo.defaultTextStyle.html index 04e0219..2e3fd63 100644 --- a/docs/variables/libclo.defaultTextStyle.html +++ b/docs/variables/libclo.defaultTextStyle.html @@ -16,9 +16,9 @@
  • libclo
  • defaultTextStyle
  • Variable defaultTextStyleConst

    -
    defaultTextStyle: TextStyle = ...
    +
  • libclo
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/parser.CONTENT.html b/docs/variables/parser.CONTENT.html deleted file mode 100644 index f12d412..0000000 --- a/docs/variables/parser.CONTENT.html +++ /dev/null @@ -1,46 +0,0 @@ -CONTENT | clo
    -
    - -
    -
    -
    -
    - -

    Variable CONTENTConst

    -
    CONTENT: Rule<TokenKind, tkTree> = ...
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.IMPORT.html b/docs/variables/parser.IMPORT.html deleted file mode 100644 index 2d6b01d..0000000 --- a/docs/variables/parser.IMPORT.html +++ /dev/null @@ -1,46 +0,0 @@ -IMPORT | clo
    -
    - -
    -
    -
    -
    - -

    Variable IMPORTConst

    -
    IMPORT: Rule<TokenKind, tkTree> = ...
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.IMPORTEE.html b/docs/variables/parser.IMPORTEE.html deleted file mode 100644 index 98e22ae..0000000 --- a/docs/variables/parser.IMPORTEE.html +++ /dev/null @@ -1,49 +0,0 @@ -IMPORTEE | clo
    -
    - -
    -
    -
    -
    - -

    Variable IMPORTEE

    -
    IMPORTEE: Parser<TokenKind, Token<TokenKind>> = ...
    -

    IMPORTEE: Number, Op, Paren, Id, Str, Comment,

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.IMPORTS.html b/docs/variables/parser.IMPORTS.html deleted file mode 100644 index 2d285f6..0000000 --- a/docs/variables/parser.IMPORTS.html +++ /dev/null @@ -1,46 +0,0 @@ -IMPORTS | clo
    -
    - -
    -
    -
    -
    - -

    Variable IMPORTSConst

    -
    IMPORTS: Rule<TokenKind, tkTree> = ...
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.NOT_AT.html b/docs/variables/parser.NOT_AT.html deleted file mode 100644 index 95552af..0000000 --- a/docs/variables/parser.NOT_AT.html +++ /dev/null @@ -1,46 +0,0 @@ -NOT_AT | clo
    -
    - -
    -
    -
    -
    - -

    Variable NOT_AT

    -
    NOT_AT: Parser<TokenKind, Token<TokenKind>> = ...
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.NOT_AT_TEXT.html b/docs/variables/parser.NOT_AT_TEXT.html deleted file mode 100644 index 44433b9..0000000 --- a/docs/variables/parser.NOT_AT_TEXT.html +++ /dev/null @@ -1,46 +0,0 @@ -NOT_AT_TEXT | clo
    -
    - -
    -
    -
    -
    - -

    Variable NOT_AT_TEXTConst

    -
    NOT_AT_TEXT: Rule<TokenKind, tkTree> = ...
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.PROG.html b/docs/variables/parser.PROG.html deleted file mode 100644 index a31efb0..0000000 --- a/docs/variables/parser.PROG.html +++ /dev/null @@ -1,55 +0,0 @@ -PROG | clo
    -
    - -
    -
    -
    -
    - -

    Variable PROGConst

    -
    PROG: Rule<TokenKind, tkTree> = ...
    - -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.SEGMENT.html b/docs/variables/parser.SEGMENT.html deleted file mode 100644 index 3468d1c..0000000 --- a/docs/variables/parser.SEGMENT.html +++ /dev/null @@ -1,46 +0,0 @@ -SEGMENT | clo
    -
    - -
    -
    -
    -
    - -

    Variable SEGMENTConst

    -
    SEGMENT: Rule<TokenKind, tkTree> = ...
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.SEMICOLON.html b/docs/variables/parser.SEMICOLON.html deleted file mode 100644 index 06a20ab..0000000 --- a/docs/variables/parser.SEMICOLON.html +++ /dev/null @@ -1,46 +0,0 @@ -SEMICOLON | clo
    -
    - -
    -
    -
    -
    - -

    Variable SEMICOLONConst

    -
    SEMICOLON: Rule<TokenKind, tkTree> = ...
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.lexer.html b/docs/variables/parser.lexer.html deleted file mode 100644 index 8d9fe73..0000000 --- a/docs/variables/parser.lexer.html +++ /dev/null @@ -1,49 +0,0 @@ -lexer | clo
    -
    - -
    -
    -
    -
    - -

    Variable lexerConst

    -
    lexer: Lexer<TokenKind> = ...
    -

    Parsing

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.outputEnd.html b/docs/variables/parser.outputEnd.html deleted file mode 100644 index 287e1fb..0000000 --- a/docs/variables/parser.outputEnd.html +++ /dev/null @@ -1,49 +0,0 @@ -outputEnd | clo
    -
    - -
    -
    -
    -
    - -

    Variable outputEnd

    -
    outputEnd: string = ...
    -

    the end part of the output JS code : after content part

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.outputHead.html b/docs/variables/parser.outputHead.html deleted file mode 100644 index 864f736..0000000 --- a/docs/variables/parser.outputHead.html +++ /dev/null @@ -1,49 +0,0 @@ -outputHead | clo
    -
    - -
    -
    -
    -
    - -

    Variable outputHead

    -
    outputHead: string = ...
    -

    the head part of the output JS code : before import

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/parser.outputMiddle.html b/docs/variables/parser.outputMiddle.html deleted file mode 100644 index 9272394..0000000 --- a/docs/variables/parser.outputMiddle.html +++ /dev/null @@ -1,49 +0,0 @@ -outputMiddle | clo
    -
    - -
    -
    -
    -
    - -

    Variable outputMiddle

    -
    outputMiddle: string = ...
    -

    the middle part of the output JS code : between import part and content part

    -
    -
    -
    - -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/output.pdf b/output.pdf index 11d94c0b40653cf2cf6c77dd8a94c05fdd197d9e..a010b9fb2f214cf3efdf860151937a3432a2c069 100644 GIT binary patch literal 24741 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 delta 10324 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 diff --git a/package-lock.json b/package-lock.json index 485944b..e359d9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "fontkit": "^2.0.2", "hyphen": "^1.7.0", "jsdom": "^22.1.0", + "memfs": "^4.6.0", "minimist": "^1.2.8", "npx": "^10.2.2", "pdf-lib": "^1.17.1", @@ -776,11 +777,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@swc/helpers/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -2702,6 +2698,12 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "peer": true + }, "node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -3324,6 +3326,14 @@ "node": ">= 6" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "engines": { + "node": ">=10.18" + } + }, "node_modules/hyphen": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.7.0.tgz", @@ -3992,6 +4002,41 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-joy": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/json-joy/-/json-joy-9.9.1.tgz", + "integrity": "sha512-/d7th2nbQRBQ/nqTkBe6KjjvDciSwn9UICmndwk3Ed/Bk9AqkTRm4PnLVfXG4DKbT0rEY0nKnwE7NqZlqKE6kg==", + "dependencies": { + "arg": "^5.0.2", + "hyperdyperid": "^1.2.0" + }, + "bin": { + "jj": "bin/jj.js", + "json-pack": "bin/json-pack.js", + "json-pack-test": "bin/json-pack-test.js", + "json-patch": "bin/json-patch.js", + "json-patch-test": "bin/json-patch-test.js", + "json-pointer": "bin/json-pointer.js", + "json-pointer-test": "bin/json-pointer-test.js", + "json-unpack": "bin/json-unpack.js" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "quill-delta": "^5", + "rxjs": "7", + "tslib": "2" + } + }, + "node_modules/json-joy/node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4040,11 +4085,6 @@ "tslib": "^2.4.0" } }, - "node_modules/legacy-swc-helpers/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4090,12 +4130,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "peer": true + }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "peer": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -4254,6 +4306,25 @@ "node": ">= 12" } }, + "node_modules/memfs": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.6.0.tgz", + "integrity": "sha512-I6mhA1//KEZfKRQT9LujyW6lRbX7RkC24xKododIDO3AGShcaFAMKElv1yFGWX8fD4UaSiwasr3NeQ5TdtHY1A==", + "dependencies": { + "json-joy": "^9.2.0", + "thingies": "^1.11.1" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -9684,6 +9755,11 @@ "tslib": "^1.11.1" } }, + "node_modules/pdf-lib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/pdfkit": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.13.0.tgz", @@ -9724,11 +9800,6 @@ "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==" }, - "node_modules/pdfkit/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -9875,6 +9946,20 @@ } ] }, + "node_modules/quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "peer": true, + "dependencies": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10040,6 +10125,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", @@ -10436,6 +10530,17 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thingies": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.14.1.tgz", + "integrity": "sha512-ktiTHLvVsS5Cifx8zbvg7x4clgf3AS+52gMSGlW+fvk8xYzog8f9qHvivjpQF56NHCKKpj4O1wI6tH92V4a0rQ==", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -10555,9 +10660,9 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tslint": { "version": "6.1.3", @@ -10590,6 +10695,12 @@ "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" } }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", @@ -10602,6 +10713,12 @@ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -11808,13 +11925,6 @@ "requires": { "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - } } }, "@tootallnate/once": { @@ -13216,6 +13326,12 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "peer": true + }, "fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -13667,6 +13783,11 @@ "debug": "4" } }, + "hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==" + }, "hyphen": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.7.0.tgz", @@ -14133,6 +14254,22 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "json-joy": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/json-joy/-/json-joy-9.9.1.tgz", + "integrity": "sha512-/d7th2nbQRBQ/nqTkBe6KjjvDciSwn9UICmndwk3Ed/Bk9AqkTRm4PnLVfXG4DKbT0rEY0nKnwE7NqZlqKE6kg==", + "requires": { + "arg": "^5.0.2", + "hyperdyperid": "^1.2.0" + }, + "dependencies": { + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + } + } + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -14175,13 +14312,6 @@ "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", "requires": { "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - } } }, "levn": { @@ -14219,12 +14349,24 @@ "p-locate": "^5.0.0" } }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "peer": true + }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "peer": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -14342,6 +14484,15 @@ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true }, + "memfs": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.6.0.tgz", + "integrity": "sha512-I6mhA1//KEZfKRQT9LujyW6lRbX7RkC24xKododIDO3AGShcaFAMKElv1yFGWX8fD4UaSiwasr3NeQ5TdtHY1A==", + "requires": { + "json-joy": "^9.2.0", + "thingies": "^1.11.1" + } + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -18450,6 +18601,13 @@ "@pdf-lib/upng": "^1.0.1", "pako": "^1.0.11", "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "pdfkit": { @@ -18491,11 +18649,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==" - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" } } }, @@ -18600,6 +18753,17 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "peer": true, + "requires": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -18714,6 +18878,15 @@ "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "peer": true, + "requires": { + "tslib": "^2.1.0" + } + }, "safe-array-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", @@ -19000,6 +19173,12 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "thingies": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.14.1.tgz", + "integrity": "sha512-ktiTHLvVsS5Cifx8zbvg7x4clgf3AS+52gMSGlW+fvk8xYzog8f9qHvivjpQF56NHCKKpj4O1wI6tH92V4a0rQ==", + "requires": {} + }, "tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -19080,9 +19259,9 @@ } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "tslint": { "version": "6.1.3", @@ -19103,6 +19282,14 @@ "semver": "^5.3.0", "tslib": "^1.13.0", "tsutils": "^2.29.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "tsutils": { @@ -19112,6 +19299,14 @@ "dev": true, "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "type-check": { diff --git a/package.json b/package.json index df0bcad..462239a 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "fontkit": "^2.0.2", "hyphen": "^1.7.0", "jsdom": "^22.1.0", + "memfs": "^4.6.0", "minimist": "^1.2.8", "npx": "^10.2.2", "pdf-lib": "^1.17.1", diff --git a/src/libclo/breakLines.js b/src/libclo/breakLines.js index 14a7836..c7319be 100644 --- a/src/libclo/breakLines.js +++ b/src/libclo/breakLines.js @@ -34,6 +34,11 @@ class BreakLineAlgorithm { return item.width; } } + /**segement node of one paragraph into lines. + * @args items: nodes of a line + * @args linewidth: the line width + * @returns segmented nodes into lines + */ segmentedNodes(items, lineWidth) { let lineWidthFixed = lineWidth; this.totalCost(items, lineWidthFixed); diff --git a/src/libclo/breakLines.ts b/src/libclo/breakLines.ts index 7ab8c0d..f3f6a3c 100644 --- a/src/libclo/breakLines.ts +++ b/src/libclo/breakLines.ts @@ -49,7 +49,12 @@ export class BreakLineAlgorithm { return item.width; } } - + + /**segement node of one paragraph into lines. + * @args items: nodes of a line + * @args linewidth: the line width + * @returns segmented nodes into lines + */ segmentedNodes(items : BoxesItem[], lineWidth : number) : BoxesItem[][]{ let lineWidthFixed = lineWidth; diff --git a/src/libclo/index.js b/src/libclo/index.js index 9d9e8a8..fe92ce1 100644 --- a/src/libclo/index.js +++ b/src/libclo/index.js @@ -32,12 +32,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Clo = exports.calculateTextWidthHeightAux = exports.calculateTextWidthHeight = exports.hyphenTkTree = exports.filterEmptyString = exports.spacesToBreakpoint = exports.hyphenForClo = exports.splitCJKV = exports.twoReturnsToNewline = exports.ptToPx = exports.cjkvRegexPattern = exports.cjkvBlocksInRegex = exports.defaultFrameStyle = exports.defaultTextStyle = exports.A4_IN_PX = exports.Direction = void 0; +exports.Clo = exports.applyVOffset = exports.putInVBox = exports.calculateTextWidthHeightAux = exports.calculateTextWidthHeight = exports.hyphenTkTree = exports.filterEmptyString = exports.spacesToBreakpoint = exports.hyphenForClo = exports.splitCJKV = exports.twoReturnsToNewline = exports.ptToPx = exports.cjkvRegexPattern = exports.cjkvBlocksInRegex = exports.defaultFrameStyle = exports.defaultTextStyle = exports.A4_IN_PX = exports.Direction = void 0; const canva_1 = require("../canva"); const fontkit = __importStar(require("fontkit")); const breakLines = __importStar(require("./breakLines")); const PDFDocument = require('pdfkit'); -const fs = __importStar(require("fs")); +const memfs_1 = require("memfs"); /** * TYPES */ @@ -60,7 +60,7 @@ var Direction; exports.A4_IN_PX = { "width": 793.7, "height": 1122.5 }; exports.defaultTextStyle = { - family: "FreeSerif", + family: "Noto Sans CJK TC", size: ptToPx(12), textWeight: canva_1.TextWeight.REGULAR, fontStyle: canva_1.FontStyle.ITALIC, @@ -103,7 +103,7 @@ exports.ptToPx = ptToPx; * REGISTER PART */ /** - * convert '\n\n' to newline command ["nl"] + * convert '\n\n' to new paragraph command ["br"] * @param arr the input `tkTree` * @param clo the `Clo` object * @returns the input tktree @@ -123,7 +123,7 @@ function twoReturnsToNewline(arr, clo) { for (let j = 0; j < middle.length; j++) { var item = middle[j]; if (!Array.isArray(item) && item == "\n\n") { - result.push(["nl"]); // push a newline command to the result `tkTree` + result.push(["br"]); // push a newline command to the result `tkTree` } else { result.push(middle[j]); @@ -303,6 +303,7 @@ function calculateTextWidthHeightAux(element, style, styleCache, fontCache) { result.push(item); } return [result, styleCache, fontCache]; + // break point of a line } else if (element[0] == "bp") { var beforeNewLine = (yield calculateTextWidthHeightAux(element[1], style, styleCache, fontCache))[0]; @@ -318,17 +319,65 @@ function calculateTextWidthHeightAux(element, style, styleCache, fontCache) { newLined: afterNewLine, }; return [breakPointNode, styleCache, fontCache]; + // hglue } else if (element[0] == "hglue" && !Array.isArray(element[1])) { - let hGlue = { stretchFactor: parseFloat(element[1]) }; + let hGlue = { + isHorizonalGlue: true, + stretchFactor: parseFloat(element[1]) + }; return [hGlue, styleCache, fontCache]; } + // new line
    + else if (element[0] == "br") { + let brBoxItem = yield calculateTextWidthHeightAux(["hglue", "10000"], style, styleCache, fontCache); + //
    + let BR = { + isBR: true, + original: brBoxItem[0], + newLined: brBoxItem[0] + }; + return [BR, styleCache, fontCache]; + } else { return [yield calculateTextWidthHeight(element, style), styleCache, fontCache]; } }); } exports.calculateTextWidthHeightAux = calculateTextWidthHeightAux; +/** + * put childrenBox inside VBox + */ +function putInVBox(childrenBox, parentBox) { + var voffset = Array(childrenBox.length).fill(0); + for (var i = 0; i < childrenBox.length - 1; i++) { + voffset[i + 1] = voffset[i] + childrenBox[i].height; + } + console.log("~", voffset); + for (var i = 0; i < childrenBox.length; i++) { + childrenBox[i] = applyVOffset(childrenBox[i], voffset[i]); + childrenBox[i].y += voffset[i]; + } + parentBox.content = childrenBox; + return parentBox; +} +exports.putInVBox = putInVBox; +/** + * apply vertical offset to a box + * @param box the box to be applied + * @param voffset the vertical offset + * @returns applied box + */ +function applyVOffset(box, voffset) { + if (box.y !== null) { + box.y += voffset; + } + if (Array.isArray(box.content)) { + box.content = box.content.map((x) => applyVOffset(x, voffset)); + } + return box; +} +exports.applyVOffset = applyVOffset; /** * whole document-representing class */ @@ -375,14 +424,28 @@ class Clo { } // generate the width and height of the stream let defaultFontStyle = this.attrs.defaultFrameStyle.textStyle; - let a = yield calculateTextWidthHeight(preprocessed, defaultFontStyle); + // calculate the width and height of each chars + let calculated = yield calculateTextWidthHeight(preprocessed, defaultFontStyle); + // + let paragraphized = this.paragraphize(calculated); let breakLineAlgorithms = new breakLines.BreakLineAlgorithm(); - let segmentedNodes = breakLineAlgorithms.segmentedNodes(a, this.attrs.defaultFrameStyle.width); - let segmentedNodesToBox = this.segmentedNodesToFrameBox(segmentedNodes, this.attrs.defaultFrameStyle); - let boxesFixed = this.fixenBoxesPosition(segmentedNodesToBox); + let segmentedNodes = paragraphized.map((x) => breakLineAlgorithms.segmentedNodes(x, this.attrs.defaultFrameStyle.width)); + let segmentedNodesToBox = segmentedNodes.map((x) => this.segmentedNodesToFrameBoxAux(x, this.attrs.defaultFrameStyle)); + let boxWithParagraph = putInVBox(segmentedNodesToBox, this.attrs.defaultFrameStyle); + console.log(boxWithParagraph); + // fix the bug of main Frame x & y + if (boxWithParagraph.x !== null) { + boxWithParagraph.x *= 0.75; + } + if (boxWithParagraph.y !== null) { + boxWithParagraph.y *= 0.75; + } + let boxesFixed = this.fixenBoxesPosition(boxWithParagraph); + boxesFixed.content.map((e) => { console.log(e.y); }); // generate pdf const doc = new PDFDocument({ size: 'A4' }); - doc.pipe(fs.createWriteStream('output.pdf')); + // let fsMemory = memfs(); + doc.pipe(memfs_1.vol.createWriteStream('output.pdf')); this.grid(doc); let styleCache = {}; let fontPairCache = { path: "", psName: "" }; @@ -391,6 +454,20 @@ class Clo { doc.end(); }); } + paragraphize(calculated) { + var res = [[]]; + for (var i = 0; i < calculated.length; i++) { + if ("isBR" in (calculated[i])) { + res[res.length - 1] = res[res.length - 1].concat(calculated[i]); + res.push([]); + } + else { + res[res.length - 1] = res[res.length - 1].concat(calculated[i]); + } + } + res = res.filter((x) => x.length !== 0); + return res; + } putText(doc, box, styleCache, fontPairCache) { return __awaiter(this, void 0, void 0, function* () { var fontPair; @@ -402,13 +479,16 @@ class Clo { fontPair = (0, canva_1.fontStyleTofont)(box.textStyle); styleCache = box.textStyle; fontPairCache = fontPair; + let textColor = box.textStyle.color; if (fontPair.path.match(/\.ttc$/g)) { doc + .fillColor(textColor !== undefined ? textColor : "#000000") .font(fontPair.path, fontPair.psName) .fontSize(box.textStyle.size * 0.75); } else { doc + .fillColor(textColor !== undefined ? textColor : "#000000") .font(fontPair.path) .fontSize(box.textStyle.size * 0.75); // 0.75 must added! } @@ -516,7 +596,7 @@ class Clo { * @param frame the frame to be layed out. * @returns the big `Box`. */ - segmentedNodesToFrameBox(segmentedNodes, frame) { + segmentedNodesToFrameBoxAux(segmentedNodes, frame) { let baseLineskip = frame.baseLineskip; let boxArrayEmpty = []; let bigBox = { @@ -549,6 +629,8 @@ class Clo { bigBoxContent.push(currentLineBox); } bigBox.content = bigBoxContent; + let bigBoxHeight = bigBoxContent.map((x) => x.height).reduce((x, y) => x + y, 0); + bigBox.height = bigBoxHeight; return bigBox; } /** diff --git a/src/libclo/index.ts b/src/libclo/index.ts index f48f448..d074e9c 100644 --- a/src/libclo/index.ts +++ b/src/libclo/index.ts @@ -6,6 +6,7 @@ const PDFDocument = require('pdfkit'); import * as fs from "fs"; import { Style } from "util"; import { time } from "console"; +import {memfs} from "memfs"; /** @@ -24,12 +25,17 @@ export enum Direction{ TTB, BTT, } - /** * Horizonal glue. * - stretchFactor : the stretch factor in float */ export interface HGlue{ + isHorizonalGlue : true, + stretchFactor: number +} + +export interface VGlue{ + isHorizonalGlue : false, stretchFactor: number } @@ -38,6 +44,11 @@ export interface BreakPoint{ newLined : BoxesItem } +/** BR is like html br */ +export interface BR extends BreakPoint{ + isBR : true; +} + export type BoxesItem = HGlue | Box | BreakPoint | BoxesItem[] ; /** @@ -85,7 +96,7 @@ export const A4_IN_PX = {"width" : 793.7, "height" : 1122.5}; export const defaultTextStyle : TextStyle = { - family : "FreeSerif", + family : "Noto Sans CJK TC", size : ptToPx(12), textWeight : TextWeight.REGULAR, fontStyle : FontStyle.ITALIC, @@ -134,7 +145,7 @@ export function ptToPx(pt : number) : number{ */ /** - * convert '\n\n' to newline command ["nl"] + * convert '\n\n' to new paragraph command ["br"] * @param arr the input `tkTree` * @param clo the `Clo` object * @returns the input tktree @@ -156,7 +167,7 @@ export function twoReturnsToNewline(arr : tkTree, clo : Clo): tkTree{ for (let j = 0; j < middle.length; j++){ var item = middle[j]; if (!Array.isArray(item) && item == "\n\n"){ - result.push(["nl"]); // push a newline command to the result `tkTree` + result.push(["br"]); // push a newline command to the result `tkTree` } else{ result.push(middle[j]); @@ -372,7 +383,7 @@ export async function calculateTextWidthHeightAux(element : tkTree, - + // break point of a line }else if(element[0] == "bp"){ @@ -391,18 +402,66 @@ export async function calculateTextWidthHeightAux(element : tkTree, newLined : afterNewLine, } + return [breakPointNode, styleCache, fontCache]; + // hglue }else if(element[0] == "hglue" && !Array.isArray(element[1])){ - let hGlue : HGlue = {stretchFactor : parseFloat(element[1])} + let hGlue : HGlue = { + isHorizonalGlue : true, + stretchFactor : parseFloat(element[1])} return [hGlue, styleCache, fontCache]; } + // new line
    + else if(element[0] == "br"){ + let brBoxItem = await calculateTextWidthHeightAux(["hglue", "10000"], + style, styleCache, fontCache); + //
    + let BR : BR = { + isBR : true, + original : brBoxItem[0], + newLined : brBoxItem[0]}; + return [BR, styleCache, fontCache]; + } else{ return [await calculateTextWidthHeight(element, style), styleCache, fontCache]; } } +/** + * put childrenBox inside VBox + */ +export function putInVBox(childrenBox: Box[], parentBox: Box) : Box{ + var voffset = Array(childrenBox.length).fill(0); + for (var i=0;iapplyVOffset(x, voffset)); + } + return box; +} /** * whole document-representing class @@ -468,20 +527,34 @@ export class Clo{ let defaultFontStyle : TextStyle = this.attrs.defaultFrameStyle.textStyle; + // calculate the width and height of each chars + let calculated = await calculateTextWidthHeight(preprocessed, defaultFontStyle); + + // + let paragraphized = this.paragraphize(calculated); - let a = await calculateTextWidthHeight(preprocessed, defaultFontStyle); let breakLineAlgorithms = new breakLines.BreakLineAlgorithm(); - let segmentedNodes = breakLineAlgorithms.segmentedNodes(a, this.attrs.defaultFrameStyle.width); + let segmentedNodes = paragraphized.map((x)=>breakLineAlgorithms.segmentedNodes(x, this.attrs.defaultFrameStyle.width)); + + let segmentedNodesToBox = segmentedNodes.map((x)=> + this.segmentedNodesToFrameBoxAux(x, this.attrs.defaultFrameStyle)); - let segmentedNodesToBox = - this.segmentedNodesToFrameBox(segmentedNodes, this.attrs.defaultFrameStyle); + let boxWithParagraph = putInVBox(segmentedNodesToBox, this.attrs.defaultFrameStyle); + console.log(boxWithParagraph); - let boxesFixed = this.fixenBoxesPosition(segmentedNodesToBox); + // fix the bug of main Frame x & y + if(boxWithParagraph.x !== null) + {boxWithParagraph.x *= 0.75} + if(boxWithParagraph.y !== null) + {boxWithParagraph.y *= 0.75} + + let boxesFixed = this.fixenBoxesPosition(boxWithParagraph); + (boxesFixed.content).map((e)=>{console.log(e.y)}); // generate pdf @@ -498,6 +571,21 @@ export class Clo{ } + paragraphize(calculated : BoxesItem[]): BoxesItem[][]{ + var res : BoxesItem[][] = [[]]; + for (var i=0;i(calculated[i])){ + res[res.length-1] = res[res.length-1].concat(calculated[i]); + res.push([]); + }else{ + res[res.length-1] = res[res.length-1].concat(calculated[i]); + } + } + + res = res.filter((x)=>x.length !== 0); + return res; + } + async putText(doc : PDFKit.PDFDocument, box : Box, styleCache : TextStyle, fontPairCache : fontPathPSNamePair): Promise<[PDFKit.PDFDocument, TextStyle, fontPathPSNamePair]>{ @@ -512,13 +600,16 @@ export class Clo{ fontPair = fontStyleTofont(box.textStyle); styleCache = box.textStyle; fontPairCache = fontPair; + let textColor = box.textStyle.color; if (fontPair.path.match(/\.ttc$/g)){ doc + .fillColor(textColor !== undefined ? textColor : "#000000") .font(fontPair.path, fontPair.psName) .fontSize(box.textStyle.size * 0.75);} else{ doc + .fillColor(textColor !== undefined ? textColor : "#000000") .font(fontPair.path) .fontSize(box.textStyle.size * 0.75); // 0.75 must added! } @@ -630,8 +721,6 @@ export class Clo{ } } - - box.content[i] = this.fixenBoxesPosition(box.content[i]); } } @@ -645,7 +734,7 @@ export class Clo{ * @param frame the frame to be layed out. * @returns the big `Box`. */ - segmentedNodesToFrameBox(segmentedNodes : BoxesItem[][], frame : FrameBox) : Box{ + segmentedNodesToFrameBoxAux(segmentedNodes : BoxesItem[][], frame : FrameBox) : Box{ let baseLineskip = frame.baseLineskip; let boxArrayEmpty : Box[] = []; let bigBox : Box = { @@ -686,6 +775,8 @@ export class Clo{ } bigBox.content = bigBoxContent; + let bigBoxHeight = bigBoxContent.map((x)=>x.height).reduce((x,y)=>x+y, 0); + bigBox.height = bigBoxHeight; return bigBox; } diff --git a/src/parser.ts b/src/parser.ts index 8100f55..867b8f7 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -1,6 +1,7 @@ /** * parser.ts - parser and js generator of clo. */ +import { text } from 'pdfkit'; import * as p from 'typescript-parsec'; import { Token } from 'typescript-parsec'; @@ -60,6 +61,7 @@ export const lexer = p.buildLexer([ [true, /^[\+\-\*\/\&\|\!\^\<\>\~\=\?]+/g, TokenKind.Op], [true, /^\@/g, TokenKind.ExprMark], [true, /^[()\[\]{}]/g, TokenKind.Paren], + [true, /^[\`]([^\`]|[\\].)*[\`]/g, TokenKind.Str], [true, /^[\"]([^\"]|[\\].)*[\"]/g, TokenKind.Str], [true, /^[\']([^\']|[\\].)*[\']/g, TokenKind.Str], [true, /^[()\[\]{}]/g, TokenKind.Paren], @@ -141,9 +143,12 @@ export function applyNotAtText(value : Token): tkTree{ }; export function applyText (input : tkTree): tkTree[]{ + return ["%text", input]; }; + + export function applyContent(input : tkTree[]): tkTree[]{ return ["%content", input]; }; @@ -269,6 +274,16 @@ clo.generatePdf(); /*CLO : end of end part*/ ` +export function splitText(input : tkTree): tkTree{ + var ret; + if (!Array.isArray(input)){ + ret = input.split(/(\s+)/); + }else{ + ret = input.map((x)=>splitText(x)); + } + return ret; +} + /** * Convert `tree` (ASTTree; `tkTree`) to JS Code. */ @@ -312,15 +327,17 @@ export function treeToJS(tree : tkTree): string{ } } if (head == "%text"){ - let textContents = tree[1]; + var textContents = splitText(tree[1]); if (Array.isArray(textContents)){ + textContents = textContents.flat().filter((x)=>{return x !== ""}); let decoratedArray = textContents .flatMap(x=>String(x)) + .map(x=>x.replace("\'", "\\\'")) .map(x=>x.replace("\`","\\\`")); return "[`" + decoratedArray.join("\`, \`") + "`]"; }else{ - let decorated = textContents.replace("\`","\\\`"); + let decorated = textContents.replace("\`","\\\`").replace("\'", "\\\'"); return "[`" + decorated + "`]"; } -- 2.39.2