Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | lithium-markdown: add a "spoiler" span element, marked by double '%' |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
00a97167e592ac0ea5806672b28ff7d7 |
| User & Date: | nat 2019-03-03 19:37:00.901 |
Context
|
2019-03-04
| ||
| 19:59 | lithium-spoiler_filters: new filter to rot13-scramble spoiler spans check-in: 2f20876918 user: nat tags: trunk | |
|
2019-03-03
| ||
| 19:37 | lithium-markdown: add a "spoiler" span element, marked by double '%' check-in: 00a97167e5 user: nat tags: trunk | |
|
2017-07-02
| ||
| 20:05 | lithium-comment_cookie_smaz: improve dictionary check-in: 3a87f98cd6 user: nat tags: trunk | |
Changes
Changes to src/lithium-markdown.adb.
| ︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
package Sx renames Natools.S_Expressions;
type Buffer_Access is access Sx.Atom_Buffers.Atom_Buffer;
type Buffer_Copy is new Markup.Element_Callback with record
Source, Destination : not null Buffer_Access;
end record;
procedure Append
(To : in out Buffer_Access;
Text : in String);
function Export (Buffer : Sx.Atom_Buffers.Atom_Buffer)
return Sx.Atom_Refs.Immutable_Reference;
overriding procedure Open (Element : in out Buffer_Copy);
overriding procedure Append
(Element : in out Buffer_Copy; Text : in String)
is null;
overriding procedure Close (Element : in out Buffer_Copy) is null;
package Renderers is new Markup.Renderers.Html (Buffer_Access);
------------------------------
-- Local Helper Subprograms --
------------------------------
procedure Append
(To : in out Buffer_Access;
Text : in String)
is
pragma Unmodified (To);
begin
To.Append (Sx.To_Atom (Text));
end Append;
function Export (Buffer : Sx.Atom_Buffers.Atom_Buffer)
return Sx.Atom_Refs.Immutable_Reference
is
use type Sx.Offset;
Accessor : constant Sx.Atom_Refs.Accessor := Buffer.Raw_Query;
| > > > > > > > > > > > > > > > > > > > > > > > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
package Sx renames Natools.S_Expressions;
type Buffer_Access is access Sx.Atom_Buffers.Atom_Buffer;
type Buffer_Copy is new Markup.Element_Callback with record
Source, Destination : not null Buffer_Access;
end record;
type Spoiler_Span is new Markup.Element_Callback with record
Buffer : Buffer_Access;
end record;
procedure Append
(To : in out Buffer_Access;
Text : in String);
function Export (Buffer : Sx.Atom_Buffers.Atom_Buffer)
return Sx.Atom_Refs.Immutable_Reference;
overriding procedure Open (Element : in out Buffer_Copy);
overriding procedure Append
(Element : in out Buffer_Copy; Text : in String)
is null;
overriding procedure Close (Element : in out Buffer_Copy) is null;
package Renderers is new Markup.Renderers.Html (Buffer_Access);
overriding procedure Open (Element : in out Spoiler_Span);
overriding procedure Append
(Element : in out Spoiler_Span; Text : in String);
overriding procedure Close (Element : in out Spoiler_Span);
------------------------------
-- Local Helper Subprograms --
------------------------------
procedure Append
(To : in out Buffer_Access;
Text : in String)
is
pragma Unmodified (To);
begin
To.Append (Sx.To_Atom (Text));
end Append;
overriding procedure Append
(Element : in out Spoiler_Span; Text : in String) is
begin
Element.Buffer.Append (Sx.To_Atom (Text));
end Append;
overriding procedure Close (Element : in out Spoiler_Span) is
begin
Element.Buffer.Append (Sx.To_Atom ("</span>"));
end Close;
function Export (Buffer : Sx.Atom_Buffers.Atom_Buffer)
return Sx.Atom_Refs.Immutable_Reference
is
use type Sx.Offset;
Accessor : constant Sx.Atom_Refs.Accessor := Buffer.Raw_Query;
|
| ︙ | ︙ | |||
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
overriding procedure Open (Element : in out Buffer_Copy) is
begin
Element.Destination.Soft_Reset;
Element.Destination.Append (Element.Source.Data);
end Open;
-----------------
-- Worker Tasks --
-----------------
| > > > > > | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
overriding procedure Open (Element : in out Buffer_Copy) is
begin
Element.Destination.Soft_Reset;
Element.Destination.Append (Element.Source.Data);
end Open;
overriding procedure Open (Element : in out Spoiler_Span) is
begin
Element.Buffer.Append (Sx.To_Atom ("<span class=""spoiler"">"));
end Open;
-----------------
-- Worker Tasks --
-----------------
|
| ︙ | ︙ | |||
148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
Parser.Pseudoprotocol_Class (Renderer.Span);
Parser.Pseudoprotocol_Id (Renderer.Anchor);
Parser.Pseudoprotocol_Raw (Renderer.Raw_Html_Span);
Parser.Emphasis (Renderer.Inserted, 2, "+");
Parser.Emphasis (Renderer.Deleted, 2, "-");
Parser.Emphasis (Renderer.Span, 1, "|");
loop
Buffer.Soft_Reset;
Parsed.Soft_Reset;
Summary_Buf.Soft_Reset;
Parser.Reset;
| > | 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
Parser.Pseudoprotocol_Class (Renderer.Span);
Parser.Pseudoprotocol_Id (Renderer.Anchor);
Parser.Pseudoprotocol_Raw (Renderer.Raw_Html_Span);
Parser.Emphasis (Renderer.Inserted, 2, "+");
Parser.Emphasis (Renderer.Deleted, 2, "-");
Parser.Emphasis (Renderer.Span, 1, "|");
Parser.Emphasis (Spoiler_Span'(Buffer => Parsed), 2, "%");
loop
Buffer.Soft_Reset;
Parsed.Soft_Reset;
Summary_Buf.Soft_Reset;
Parser.Reset;
|
| ︙ | ︙ | |||
260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
Renderer.Table_Data_Cell);
Parser.Discount_Fenced_Code_Block (Renderer.Code_Block);
Parser.Link (Renderer.Anchor);
Parser.Emphasis (Renderer.Inserted, 2, "+");
Parser.Emphasis (Renderer.Deleted, 2, "-");
loop
Buffer.Soft_Reset;
Parsed.Soft_Reset;
Parser.Reset;
select
| > | 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 |
Renderer.Table_Data_Cell);
Parser.Discount_Fenced_Code_Block (Renderer.Code_Block);
Parser.Link (Renderer.Anchor);
Parser.Emphasis (Renderer.Inserted, 2, "+");
Parser.Emphasis (Renderer.Deleted, 2, "-");
Parser.Emphasis (Spoiler_Span'(Buffer => Parsed), 2, "%");
loop
Buffer.Soft_Reset;
Parsed.Soft_Reset;
Parser.Reset;
select
|
| ︙ | ︙ |