Page Menu
Home
Sealhub
Search
Configure Global Search
Log In
Files
F996475
jdd-context.ts
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
jdd-context.ts
View Options
import
{
FileManager
,
FilePointer
,
PathFilePointer
,
}
from
"@sealcode/file-manager"
;
import
type
{
KoaResponsiveImageRouter
}
from
"koa-responsive-image-router"
;
import
{
Renderer
,
marked
}
from
"marked"
;
import
{
FlatTemplatable
}
from
"tempstream"
;
import
{
insert_nbsp
}
from
"./utils/insert_nbsp.js"
;
import
{
get_hyphenator
}
from
"./hyphenation.js"
;
import
{
Token
}
from
"marked"
;
import
slug
from
"slug"
;
export
interface
JDDContext
{
render_image
:
(
file_id
:
FilePointer
|
string
|
null
,
args
:
Parameters
<
KoaResponsiveImageRouter
[
"image"
]
>
[
1
]
)
=>
FlatTemplatable
;
render_markdown
:
(
language
:
string
,
markdown
:
string
)
=>
FlatTemplatable
;
hyphenate
:
(
language
:
string
,
text
:
string
)
=>
Promise
<
string
>
;
encode_file
:
(
photo
:
FilePointer
,
persistent
:
boolean
)
=>
Promise
<
string
>
;
decode_file
:
(
token
:
string
)
=>
Promise
<
PathFilePointer
|
null
>
;
file_manager
:
FileManager
;
language
:
string
;
}
class
RendererWithHeadings
extends
Renderer
{
heading
(
text
:
string
,
depth
:
number
)
:
string
{
const
id
=
slug
(
text
);
return
/* HTML */
` <h
${
depth
}
id="
${
id
}
">
<a class="anchor" href="#
${
id
}
">
<span class="markdown-header-link"></span>
</a>
${
text
}
</h
${
depth
}
>`
;
}
}
export
const
makeSimpleJDDContext
:
(
file_manager
:
FileManager
)
=>
Omit
<
JDDContext
,
"language"
>
=
(
file_manager
)
=>
({
render_image
:
async
(
file
)
=>
{
if
(
typeof
file
==
"string"
)
{
file
=
await
file_manager
.
fromToken
(
file
);
}
const
path
=
(
await
file
?
.
getPath
())
||
"/some-path"
;
return
file
?
/* HTML */
`<img src="file://
${
path
}
}" />`
:
""
;
},
hyphenate
:
async
(
language
:
string
,
text
:
string
)
=>
{
const
hyphenator
=
await
get_hyphenator
(
language
);
return
hyphenator
(
text
);
},
render_markdown
:
async
(
language
,
string
)
=>
{
const
hyphenator
=
await
get_hyphenator
(
language
);
return
string
?
marked
.
parse
(
insert_nbsp
(
string
),
{
walkTokens
:
(
token
:
Token
)
=>
{
if
(
token
.
type
==
"text"
)
{
token
.
text
=
hyphenator
(
token
.
text
as
string
);
}
},
renderer
:
new
RendererWithHeadings
(),
})
:
""
;
},
encode_file
:
(
photo
:
FilePointer
,
persistent
:
boolean
)
=>
{
return
photo
.
save
(
persistent
);
},
decode_file
:
(
token
:
string
)
=>
{
return
file_manager
.
fromToken
(
token
);
},
file_manager
,
});
export
const
makeSimpleEnglishJDDContext
:
(
file_manager
:
FileManager
)
=>
JDDContext
=
(
file_manager
)
=>
({
...
makeSimpleJDDContext
(
file_manager
),
language
:
"en-us"
,
});
File Metadata
Details
Attached
Mime Type
text/x-java
Expires
Tue, Dec 24, 14:04 (12 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
557281
Default Alt Text
jdd-context.ts (2 KB)
Attached To
Mode
R130 jdd
Attached
Detach File
Event Timeline
Log In to Comment