public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
* help filtering links
@ 2023-03-12 18:07 Pablo Rodríguez
       [not found] ` <b5007e61-547d-7661-530b-a3ef6ef19b20-S0/GAf8tV78@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Pablo Rodríguez @ 2023-03-12 18:07 UTC (permalink / raw)
  To: pandoc-discuss

Dear list,

I want to start to move from Markdown to CommonMark (extended for pandoc).

I would like to be able to format three types of links, such as in:

```
# intro

as said in [intro]

<https://pandoc.org>

[this is another link](https://another.link)
```

The first one would be an internal section link, the second one would be
an autogenerated link.

I think that a Lua filter could help to add a "section-link" class to
the first kind of link and an "auto-link" class to the second kind of link.

I’m afraid I have checked
https://github.com/orgs/pandoc-ext/repositories (and even
https://github.com/pandoc/lua-filters), but having no real coding
experience, I don‘t know how to write what I think it might be a
relatively simple filter.

Could anyone be so kind to help?

Many thanks in advance,

Pablo

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/b5007e61-547d-7661-530b-a3ef6ef19b20%40web.de.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* AW: help filtering links
       [not found] ` <b5007e61-547d-7661-530b-a3ef6ef19b20-S0/GAf8tV78@public.gmane.org>
@ 2023-03-12 20:36   ` denis.maier-NSENcxR/0n0
  2023-03-13 13:13   ` Albert Krewinkel
  1 sibling, 0 replies; 6+ messages in thread
From: denis.maier-NSENcxR/0n0 @ 2023-03-12 20:36 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw

I'm not sure, but I think these links don't end up as different elements in the AST.
What does
pandoc -t native input.md
give you (for input.md being your example)?

Best
Denis



________________________________________
Von: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org <pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> im Auftrag von Pablo Rodríguez <oinos-S0/GAf8tV78@public.gmane.org>
Gesendet: Sonntag, 12. März 2023 19:07:04
An: pandoc-discuss
Betreff: help filtering links

Dear list,

I want to start to move from Markdown to CommonMark (extended for pandoc).

I would like to be able to format three types of links, such as in:

```
# intro

as said in [intro]

<https://pandoc.org>

[this is another link](https://another.link)
```

The first one would be an internal section link, the second one would be
an autogenerated link.

I think that a Lua filter could help to add a "section-link" class to
the first kind of link and an "auto-link" class to the second kind of link.

I’m afraid I have checked
https://github.com/orgs/pandoc-ext/repositories (and even
https://github.com/pandoc/lua-filters), but having no real coding
experience, I don‘t know how to write what I think it might be a
relatively simple filter.

Could anyone be so kind to help?

Many thanks in advance,

Pablo

--
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/b5007e61-547d-7661-530b-a3ef6ef19b20%40web.de.

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/e6d9dbc3a8934a8286655114791f14aa%40unibe.ch.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: help filtering links
       [not found] ` <b5007e61-547d-7661-530b-a3ef6ef19b20-S0/GAf8tV78@public.gmane.org>
  2023-03-12 20:36   ` AW: " denis.maier-NSENcxR/0n0
@ 2023-03-13 13:13   ` Albert Krewinkel
       [not found]     ` <878rg07pwn.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
  1 sibling, 1 reply; 6+ messages in thread
From: Albert Krewinkel @ 2023-03-13 13:13 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw


Pablo Rodríguez <oinos-S0/GAf8tV78@public.gmane.org> writes:

> Dear list,
>
> I want to start to move from Markdown to CommonMark (extended for pandoc).
>
> I would like to be able to format three types of links, such as in:
>
> ```
> # intro
>
> as said in [intro]
>
> <https://pandoc.org>
>
> [this is another link](https://another.link)
> ```
>
> The first one would be an internal section link, the second one would be
> an autogenerated link.
>
> I think that a Lua filter could help to add a "section-link" class to
> the first kind of link and an "auto-link" class to the second kind of link.

See the filter below. It adds a `section-link` class for the first kind.
Pandoc already adds a `uri` class for the second type, so those are not
touched by the filter.

Cheers,
Albert


    local headers = {}
    local function collect_ids (h)
      if h.identifier ~= '' then
        headers[h.identifier] = true
      end
    end

    local function add_classes (link)
      local id = link.target:match '^%#(.*)'
      if id and headers[id] then
        link.classes:insert 'section-link'
        return link
      end
    end

    return {
      { Header = collect_ids },
      { Link = add_classes }
    }



-- 
Albert Krewinkel
GPG: 8eed e3e2 e8c5 6f18 81fe  e836 388d c0b2 1f63 1124

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/878rg07pwn.fsf%40zeitkraut.de.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: help filtering links
       [not found]     ` <878rg07pwn.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
@ 2023-03-13 15:19       ` Pablo Rodríguez
       [not found]         ` <c55f1066-db3d-aa64-b90f-36f7050ad2ed-S0/GAf8tV78@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Pablo Rodríguez @ 2023-03-13 15:19 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw

On 3/13/23 14:13, Albert Krewinkel wrote:
> Pablo Rodríguez <oinos-S0/GAf8tV78@public.gmane.org> writes:
>> [...]
>> The first one would be an internal section link, the second one would be
>> an autogenerated link.
>>
>> I think that a Lua filter could help to add a "section-link" class to
>> the first kind of link and an "auto-link" class to the second kind of link.
>
> See the filter below. It adds a `section-link` class for the first kind.
> Pandoc already adds a `uri` class for the second type, so those are not
> touched by the filter.

Many thanks for your reply, Albert.

The 'uri' class is added only when reading from Markdown, but not from
CommonMark with or without extensions (according to
https://try.pandoc.org/).

Or what am I missing here?

Many thanks for your help,

Pablo

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/c55f1066-db3d-aa64-b90f-36f7050ad2ed%40web.de.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: help filtering links
       [not found]         ` <c55f1066-db3d-aa64-b90f-36f7050ad2ed-S0/GAf8tV78@public.gmane.org>
@ 2023-03-13 15:40           ` Albert Krewinkel
       [not found]             ` <874jqo7j27.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Albert Krewinkel @ 2023-03-13 15:40 UTC (permalink / raw)
  To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw


Pablo Rodríguez <oinos-S0/GAf8tV78@public.gmane.org> writes:

> On 3/13/23 14:13, Albert Krewinkel wrote:
>> Pablo Rodríguez <oinos-S0/GAf8tV78@public.gmane.org> writes:
>>> [...]
>>> The first one would be an internal section link, the second one would be
>>> an autogenerated link.
>>>
>>> I think that a Lua filter could help to add a "section-link" class to
>>> the first kind of link and an "auto-link" class to the second kind of link.
>>
>> See the filter below. It adds a `section-link` class for the first kind.
>> Pandoc already adds a `uri` class for the second type, so those are not
>> touched by the filter.
>
> Many thanks for your reply, Albert.
>
> The 'uri' class is added only when reading from Markdown, but not from
> CommonMark with or without extensions (according to
> https://try.pandoc.org/).
>
> Or what am I missing here?

You're right of course, I forgot that CommonMark behaves differently.
Typically, only autolinks have a link text that's the same as the link,
so we can check for that:

    local function add_classes (link)
      local id = link.target:match '^%#(.*)'
      if id and headers[id] then
        link.classes:insert 'section-link'
      elseif link.target == pandoc.utils.stringify(link.content) then
        link.classes:insert 'auto-link'
      end
      return link
    end


-- 
Albert Krewinkel
GPG: 8eed e3e2 e8c5 6f18 81fe  e836 388d c0b2 1f63 1124

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/874jqo7j27.fsf%40zeitkraut.de.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: help filtering links
       [not found]             ` <874jqo7j27.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
@ 2023-03-13 16:21               ` Pablo Rodríguez
  0 siblings, 0 replies; 6+ messages in thread
From: Pablo Rodríguez @ 2023-03-13 16:21 UTC (permalink / raw)
  To: pandoc-discuss

On 3/13/23 16:40, Albert Krewinkel wrote:
> [...]
> You're right of course, I forgot that CommonMark behaves differently.
> Typically, only autolinks have a link text that's the same as the link,
> so we can check for that:
>
>     local function add_classes (link)
>       local id = link.target:match '^%#(.*)'
>       if id and headers[id] then
>         link.classes:insert 'section-link'
>       elseif link.target == pandoc.utils.stringify(link.content) then
>         link.classes:insert 'auto-link'
>       end
>       return link
>     end

Many thanks for your help, Albert.

I also used your filter (attributing your authorship) to close an old issue.

Many thanks again,

Pablo


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-03-13 16:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-12 18:07 help filtering links Pablo Rodríguez
     [not found] ` <b5007e61-547d-7661-530b-a3ef6ef19b20-S0/GAf8tV78@public.gmane.org>
2023-03-12 20:36   ` AW: " denis.maier-NSENcxR/0n0
2023-03-13 13:13   ` Albert Krewinkel
     [not found]     ` <878rg07pwn.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
2023-03-13 15:19       ` Pablo Rodríguez
     [not found]         ` <c55f1066-db3d-aa64-b90f-36f7050ad2ed-S0/GAf8tV78@public.gmane.org>
2023-03-13 15:40           ` Albert Krewinkel
     [not found]             ` <874jqo7j27.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
2023-03-13 16:21               ` Pablo Rodríguez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).