@d10f/asciidoc-astro-loader 0.0.14 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -61,36 +61,55 @@ var transformAsciidocCallout = (options) => {
61
61
  };
62
62
 
63
63
  // src/lib/shiki/transformers/transformerPrompt.ts
64
- var transformerPrompt = (options) => {
64
+ var DEFAULT_OPTS = {
65
+ breakOn: "\\",
66
+ cssClasses: "",
67
+ hideBreak: false,
68
+ prompt: "",
69
+ promptAttribute: "custom-prompt"
70
+ };
71
+ var transformerPrompt = (opts) => {
65
72
  return (node) => {
66
- const language = node.getAttribute("language");
67
- const customPrompt = node.getAttribute(
68
- options?.promptAttribute ?? "custom-prompt"
73
+ const config = {
74
+ breakOn: opts?.breakOn ?? DEFAULT_OPTS.breakOn,
75
+ cssClasses: opts?.cssClasses ?? DEFAULT_OPTS.cssClasses,
76
+ hideBreak: opts?.hideBreak ?? DEFAULT_OPTS.hideBreak,
77
+ prompt: opts?.prompt ?? DEFAULT_OPTS.prompt
78
+ };
79
+ if (opts && opts.langs) {
80
+ const lang = node.getAttribute("language");
81
+ const langOpts = opts.langs[lang];
82
+ Object.assign(
83
+ config,
84
+ typeof langOpts === "object" ? langOpts : { prompt: langOpts }
85
+ );
86
+ }
87
+ const promptAttr = node.getAttribute(
88
+ opts?.promptAttribute ?? DEFAULT_OPTS.promptAttribute
69
89
  );
70
- const promptToAdd = customPrompt ?? (options?.langs && options.langs[language]);
71
- let cssClasses = typeof promptToAdd === "object" ? promptToAdd.cssClasses : options?.cssClasses;
72
- if (customPrompt && options?.langs && typeof options.langs[language] === "object") {
73
- cssClasses = options.langs[language].cssClasses;
90
+ if (promptAttr) {
91
+ Object.assign(config, {
92
+ prompt: promptAttr
93
+ });
74
94
  }
95
+ const breakOnRe = new RegExp(
96
+ `\\s+${escapeRegexCharacters(config.breakOn)}\\s*$`
97
+ );
75
98
  let skipNext = false;
99
+ let skipCurrent = false;
76
100
  return {
77
101
  enforce: "pre",
78
102
  line(hast) {
79
- if (!promptToAdd) return;
80
- const skipCurrent = skipNext;
103
+ if (!config.prompt || !config.prompt.trim()) return;
104
+ skipCurrent = skipNext;
81
105
  skipNext = false;
82
106
  const lastChild = hast.children.at(-1);
83
- if (lastChild) {
84
- if (lastChild.children[0].value.match(/\s+\\(?:\\)?\s*$/)) {
85
- skipNext = true;
86
- } else if (
87
- // @ts-expect-error property "children" does exist
88
- lastChild.children[0].value.match(/\s+\\n\s*$/)
89
- ) {
90
- skipNext = true;
91
- lastChild.children[0].value = // @ts-expect-error property "children" does exist
92
- lastChild.children[0].value.replace(
93
- /\s+\\n\s*$/,
107
+ const lastToken = lastChild?.children[0];
108
+ if (lastToken) {
109
+ skipNext = breakOnRe.test(lastToken.value);
110
+ if (skipNext && config.hideBreak) {
111
+ lastToken.value = lastToken.value.replace(
112
+ breakOnRe,
94
113
  ""
95
114
  );
96
115
  }
@@ -100,12 +119,12 @@ var transformerPrompt = (options) => {
100
119
  type: "element",
101
120
  tagName: "span",
102
121
  properties: {
103
- class: cssClasses
122
+ class: config.cssClasses
104
123
  },
105
124
  children: [
106
125
  {
107
126
  type: "text",
108
- value: typeof promptToAdd === "object" ? promptToAdd.prompt : promptToAdd
127
+ value: config.prompt
109
128
  }
110
129
  ]
111
130
  });
package/dist/index.cjs CHANGED
@@ -785,36 +785,55 @@ async function setDocument(doc, converters, templateEngine, { parseData, store }
785
785
  }
786
786
 
787
787
  // src/lib/shiki/transformers/transformerPrompt.ts
788
- var transformerPrompt = (options) => {
788
+ var DEFAULT_OPTS = {
789
+ breakOn: "\\",
790
+ cssClasses: "",
791
+ hideBreak: false,
792
+ prompt: "",
793
+ promptAttribute: "custom-prompt"
794
+ };
795
+ var transformerPrompt = (opts) => {
789
796
  return (node) => {
790
- const language = node.getAttribute("language");
791
- const customPrompt = node.getAttribute(
792
- options?.promptAttribute ?? "custom-prompt"
797
+ const config = {
798
+ breakOn: opts?.breakOn ?? DEFAULT_OPTS.breakOn,
799
+ cssClasses: opts?.cssClasses ?? DEFAULT_OPTS.cssClasses,
800
+ hideBreak: opts?.hideBreak ?? DEFAULT_OPTS.hideBreak,
801
+ prompt: opts?.prompt ?? DEFAULT_OPTS.prompt
802
+ };
803
+ if (opts && opts.langs) {
804
+ const lang = node.getAttribute("language");
805
+ const langOpts = opts.langs[lang];
806
+ Object.assign(
807
+ config,
808
+ typeof langOpts === "object" ? langOpts : { prompt: langOpts }
809
+ );
810
+ }
811
+ const promptAttr = node.getAttribute(
812
+ opts?.promptAttribute ?? DEFAULT_OPTS.promptAttribute
793
813
  );
794
- const promptToAdd = customPrompt ?? (options?.langs && options.langs[language]);
795
- let cssClasses = typeof promptToAdd === "object" ? promptToAdd.cssClasses : options?.cssClasses;
796
- if (customPrompt && options?.langs && typeof options.langs[language] === "object") {
797
- cssClasses = options.langs[language].cssClasses;
814
+ if (promptAttr) {
815
+ Object.assign(config, {
816
+ prompt: promptAttr
817
+ });
798
818
  }
819
+ const breakOnRe = new RegExp(
820
+ `\\s+${escapeRegexCharacters(config.breakOn)}\\s*$`
821
+ );
799
822
  let skipNext = false;
823
+ let skipCurrent = false;
800
824
  return {
801
825
  enforce: "pre",
802
826
  line(hast) {
803
- if (!promptToAdd) return;
804
- const skipCurrent = skipNext;
827
+ if (!config.prompt || !config.prompt.trim()) return;
828
+ skipCurrent = skipNext;
805
829
  skipNext = false;
806
830
  const lastChild = hast.children.at(-1);
807
- if (lastChild) {
808
- if (lastChild.children[0].value.match(/\s+\\(?:\\)?\s*$/)) {
809
- skipNext = true;
810
- } else if (
811
- // @ts-expect-error property "children" does exist
812
- lastChild.children[0].value.match(/\s+\\n\s*$/)
813
- ) {
814
- skipNext = true;
815
- lastChild.children[0].value = // @ts-expect-error property "children" does exist
816
- lastChild.children[0].value.replace(
817
- /\s+\\n\s*$/,
831
+ const lastToken = lastChild?.children[0];
832
+ if (lastToken) {
833
+ skipNext = breakOnRe.test(lastToken.value);
834
+ if (skipNext && config.hideBreak) {
835
+ lastToken.value = lastToken.value.replace(
836
+ breakOnRe,
818
837
  ""
819
838
  );
820
839
  }
@@ -824,12 +843,12 @@ var transformerPrompt = (options) => {
824
843
  type: "element",
825
844
  tagName: "span",
826
845
  properties: {
827
- class: cssClasses
846
+ class: config.cssClasses
828
847
  },
829
848
  children: [
830
849
  {
831
850
  type: "text",
832
- value: typeof promptToAdd === "object" ? promptToAdd.prompt : promptToAdd
851
+ value: config.prompt
833
852
  }
834
853
  ]
835
854
  });
package/dist/index.d.cts CHANGED
@@ -5,7 +5,6 @@ export { transformAsciidocCallout, transformerPrompt } from './lib/shiki/transfo
5
5
  import 'shiki';
6
6
  import 'asciidoctor';
7
7
  import 'astro/zod';
8
- import 'shiki/types';
9
8
 
10
9
  declare function asciidocLoader(_options: AsciidocLoader): {
11
10
  name: string;
package/dist/index.d.ts CHANGED
@@ -5,7 +5,6 @@ export { transformAsciidocCallout, transformerPrompt } from './lib/shiki/transfo
5
5
  import 'shiki';
6
6
  import 'asciidoctor';
7
7
  import 'astro/zod';
8
- import 'shiki/types';
9
8
 
10
9
  declare function asciidocLoader(_options: AsciidocLoader): {
11
10
  name: string;
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  transformAsciidocCallout,
6
6
  transformerPrompt
7
- } from "./chunk-NYOV2AHU.js";
7
+ } from "./chunk-TCLZUBH3.js";
8
8
  import {
9
9
  slugify,
10
10
  splitFilenameComponents
@@ -90,36 +90,55 @@ var transformAsciidocCallout = (options) => {
90
90
  };
91
91
 
92
92
  // src/lib/shiki/transformers/transformerPrompt.ts
93
- var transformerPrompt = (options) => {
93
+ var DEFAULT_OPTS = {
94
+ breakOn: "\\",
95
+ cssClasses: "",
96
+ hideBreak: false,
97
+ prompt: "",
98
+ promptAttribute: "custom-prompt"
99
+ };
100
+ var transformerPrompt = (opts) => {
94
101
  return (node) => {
95
- const language = node.getAttribute("language");
96
- const customPrompt = node.getAttribute(
97
- options?.promptAttribute ?? "custom-prompt"
102
+ const config = {
103
+ breakOn: opts?.breakOn ?? DEFAULT_OPTS.breakOn,
104
+ cssClasses: opts?.cssClasses ?? DEFAULT_OPTS.cssClasses,
105
+ hideBreak: opts?.hideBreak ?? DEFAULT_OPTS.hideBreak,
106
+ prompt: opts?.prompt ?? DEFAULT_OPTS.prompt
107
+ };
108
+ if (opts && opts.langs) {
109
+ const lang = node.getAttribute("language");
110
+ const langOpts = opts.langs[lang];
111
+ Object.assign(
112
+ config,
113
+ typeof langOpts === "object" ? langOpts : { prompt: langOpts }
114
+ );
115
+ }
116
+ const promptAttr = node.getAttribute(
117
+ opts?.promptAttribute ?? DEFAULT_OPTS.promptAttribute
98
118
  );
99
- const promptToAdd = customPrompt ?? (options?.langs && options.langs[language]);
100
- let cssClasses = typeof promptToAdd === "object" ? promptToAdd.cssClasses : options?.cssClasses;
101
- if (customPrompt && options?.langs && typeof options.langs[language] === "object") {
102
- cssClasses = options.langs[language].cssClasses;
119
+ if (promptAttr) {
120
+ Object.assign(config, {
121
+ prompt: promptAttr
122
+ });
103
123
  }
124
+ const breakOnRe = new RegExp(
125
+ `\\s+${escapeRegexCharacters(config.breakOn)}\\s*$`
126
+ );
104
127
  let skipNext = false;
128
+ let skipCurrent = false;
105
129
  return {
106
130
  enforce: "pre",
107
131
  line(hast) {
108
- if (!promptToAdd) return;
109
- const skipCurrent = skipNext;
132
+ if (!config.prompt || !config.prompt.trim()) return;
133
+ skipCurrent = skipNext;
110
134
  skipNext = false;
111
135
  const lastChild = hast.children.at(-1);
112
- if (lastChild) {
113
- if (lastChild.children[0].value.match(/\s+\\(?:\\)?\s*$/)) {
114
- skipNext = true;
115
- } else if (
116
- // @ts-expect-error property "children" does exist
117
- lastChild.children[0].value.match(/\s+\\n\s*$/)
118
- ) {
119
- skipNext = true;
120
- lastChild.children[0].value = // @ts-expect-error property "children" does exist
121
- lastChild.children[0].value.replace(
122
- /\s+\\n\s*$/,
136
+ const lastToken = lastChild?.children[0];
137
+ if (lastToken) {
138
+ skipNext = breakOnRe.test(lastToken.value);
139
+ if (skipNext && config.hideBreak) {
140
+ lastToken.value = lastToken.value.replace(
141
+ breakOnRe,
123
142
  ""
124
143
  );
125
144
  }
@@ -129,12 +148,12 @@ var transformerPrompt = (options) => {
129
148
  type: "element",
130
149
  tagName: "span",
131
150
  properties: {
132
- class: cssClasses
151
+ class: config.cssClasses
133
152
  },
134
153
  children: [
135
154
  {
136
155
  type: "text",
137
- value: typeof promptToAdd === "object" ? promptToAdd.prompt : promptToAdd
156
+ value: config.prompt
138
157
  }
139
158
  ]
140
159
  });
@@ -1,36 +1,19 @@
1
1
  import { c as ShikiTransformerFactory } from '../../../index-C1F2jTPD.cjs';
2
- import { BundledLanguage } from 'shiki/types';
3
- import 'shiki';
2
+ import { BundledLanguage } from 'shiki';
4
3
  import 'asciidoctor';
5
4
  import 'astro/zod';
6
5
 
7
- type PromptOptions = {
6
+ type PromptOptions = Partial<{
8
7
  prompt: string;
9
8
  cssClasses: string;
10
- };
11
- type TransformOptions = {
12
- /**
13
- * String of CSS classes to apply to leading prompt character(s) on
14
- * source code blocks of type console.
15
- */
16
- cssClasses?: string;
17
- /**
18
- * An object mapping each language block to a prompt string. An object
19
- * can also be provided specified with two keys, the prompt and the
20
- * css classes that modify this prompt in particular. Useful when you
21
- * want to style them differently from the
22
- * If not provided, it will default to look at the block attribute.
23
- */
24
- langs?: Partial<Record<BundledLanguage, PromptOptions | string>>;
25
- /**
26
- * The name of the block attribute on the original document to look
27
- * for and use as the prompt for this block.
28
- *
29
- * @default custom-prompt
30
- */
31
- promptAttribute?: string;
32
- };
33
- declare const transformerPrompt: ShikiTransformerFactory<TransformOptions>;
9
+ breakOn: string;
10
+ hideBreak: boolean;
11
+ }>;
12
+ type TransformerOptions$1 = PromptOptions & Partial<{
13
+ langs: Partial<Record<BundledLanguage, PromptOptions | string>>;
14
+ promptAttribute: string;
15
+ }>;
16
+ declare const transformerPrompt: ShikiTransformerFactory<TransformerOptions$1>;
34
17
 
35
18
  type TransformerOptions = Partial<{
36
19
  cssClasses?: string;
@@ -1,36 +1,19 @@
1
1
  import { c as ShikiTransformerFactory } from '../../../index-C1F2jTPD.js';
2
- import { BundledLanguage } from 'shiki/types';
3
- import 'shiki';
2
+ import { BundledLanguage } from 'shiki';
4
3
  import 'asciidoctor';
5
4
  import 'astro/zod';
6
5
 
7
- type PromptOptions = {
6
+ type PromptOptions = Partial<{
8
7
  prompt: string;
9
8
  cssClasses: string;
10
- };
11
- type TransformOptions = {
12
- /**
13
- * String of CSS classes to apply to leading prompt character(s) on
14
- * source code blocks of type console.
15
- */
16
- cssClasses?: string;
17
- /**
18
- * An object mapping each language block to a prompt string. An object
19
- * can also be provided specified with two keys, the prompt and the
20
- * css classes that modify this prompt in particular. Useful when you
21
- * want to style them differently from the
22
- * If not provided, it will default to look at the block attribute.
23
- */
24
- langs?: Partial<Record<BundledLanguage, PromptOptions | string>>;
25
- /**
26
- * The name of the block attribute on the original document to look
27
- * for and use as the prompt for this block.
28
- *
29
- * @default custom-prompt
30
- */
31
- promptAttribute?: string;
32
- };
33
- declare const transformerPrompt: ShikiTransformerFactory<TransformOptions>;
9
+ breakOn: string;
10
+ hideBreak: boolean;
11
+ }>;
12
+ type TransformerOptions$1 = PromptOptions & Partial<{
13
+ langs: Partial<Record<BundledLanguage, PromptOptions | string>>;
14
+ promptAttribute: string;
15
+ }>;
16
+ declare const transformerPrompt: ShikiTransformerFactory<TransformerOptions$1>;
34
17
 
35
18
  type TransformerOptions = Partial<{
36
19
  cssClasses?: string;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  transformAsciidocCallout,
3
3
  transformerPrompt
4
- } from "../../../chunk-NYOV2AHU.js";
4
+ } from "../../../chunk-TCLZUBH3.js";
5
5
  import "../../../chunk-2UGTFP4R.js";
6
6
  export {
7
7
  transformAsciidocCallout,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@d10f/asciidoc-astro-loader",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "description": "An Astro collections loader for Asciidoc files",
5
5
  "author": "D10f",
6
6
  "license": "MIT",