Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better executable code syntax in MD #1166

Open
trusktr opened this issue May 10, 2020 · 8 comments
Open

Better executable code syntax in MD #1166

trusktr opened this issue May 10, 2020 · 8 comments

Comments

@trusktr
Copy link
Member

trusktr commented May 10, 2020

status PR

Problem

This is with reference to executeScript property. Currently, docsify checking an executable script tag using this
The markdown input for these doesn't look good ref

solution

if we are moving with pluggable markdown parser then create a plugin ( or use if exists ) to add custom syntax to uniquely identify some pre-coded syntax which can be replaced in the renderer.

@jhildenbiddle
Copy link
Member

jhildenbiddle commented May 16, 2020

Making sure I understand the issue: The goal is to avoid <script> tags from being rendered as text when viewed outside of docsify, correct?

For example, in Typora, the following markdown:

# Heading

Text

<script>
  console.log('foo')
</script>

Will be rendered as follows:

Screen Shot 2020-05-16 at 5 49 51 PM

Helper syntax options are limited if we want to keep markdown output clean when rendered outside of docsify. The options are 1) leverage existing markdown syntax (like a blockquote) or 2) use an HTML comment. Anything else is going to be rendered by markdown processors unless they specifically understand docsify's helpers syntax.

Perhaps something like this?

# Heading

Text

<!-- [script] src="path/to/script.js" -->

<!-- [script]
  console.log('foo')
-->

The downside to using comments-as-helpers is that syntax highlighting is lost. The upside is that it's valid markdown (because it's just HTML) and universally supported (because all markdown processors ignore HTML comments).

This ties into the larger discussion of what a standard docsify helper syntax could/should look like. For those interested in that discussion, #413 (comment) and #413 (comment) are worth reviewing.

@anikethsaha
Copy link
Member

Making sure I understand the issue: The goal is to avoid <script> tags from being rendered as text when viewed outside of docsify, correct?

yes,

i was thinking if we can do like this

Note: I am using space between blockquote to stop the inner ones to rendered here. in while implementing , it will be usual blockquote we use for code snippets

  ` ` `docsify
  <script>console.log</script>
  ` ` `

this will render in non docsify as

<script>console.log</script>

in for docsify,
we can change the

` ` `docsify

to

` ` `js

while parsing and in this way, we can get the syntax highlighting as well.

@jhildenbiddle
Copy link
Member

I don’t understand.

I thought the goal of this issue is to allow JavaScript to be added to markdown and executed by docsify while being completely ignored (i.e. not rendered, not executed) in other environments. The examples above will render code blocks in all environments (including docsify).

@anikethsaha
Copy link
Member

actually, I was thinking if we need to show it on other env or not.

But yeah I agree, let's go with what was the original issue. Yea we can use the commented thing you mentioned. 👍

@stale
Copy link

stale bot commented Jul 16, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix label Jul 16, 2020
@stale stale bot closed this as completed Jul 23, 2020
@jhildenbiddle jhildenbiddle reopened this Jul 23, 2020
@stale stale bot removed the wontfix label Jul 23, 2020
@trusktr
Copy link
Member Author

trusktr commented Jul 29, 2020

I think more something like this:

Here is a _neat_ example:

<!-- run-script -->
```js
console.log(foo)
```

which would render as:


Here is a neat example:

console.log(foo)

Also check out the syntax open-wc uses: https://open-wc.org/mdjs/. It is like this:

```js script
console.log(foo)
```

which renders as the following which apparently works in GitHub markdown, but not sure about other flavors:


console.log(foo)

If that last approach using ```js script works in a majority of places besides GitHub, then I think it would be the best synatx. However the comment approach I think works everywhere for sure. Any thoughts on ```js script?

@trusktr
Copy link
Member Author

trusktr commented Jul 29, 2020

  ` ` `docsify
  <script>console.log</script>
  ` ` `

this will render in non docsify as

<script>console.log</script>

If we do that approach then it will have the wrong syntax color outside of Docsify.

@trusktr
Copy link
Member Author

trusktr commented Jul 29, 2020

I thought the goal of this issue is to allow JavaScript to be added to markdown and executed by docsify while being completely ignored (i.e. not rendered, not executed) in other environments

Yeah that's the goal

@jhildenbiddle jhildenbiddle added this to the 6.x milestone Mar 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants