Changeset 30


Ignore:
Timestamp:
Jun 3, 2014, 8:22:00 AM (7 years ago)
Author:
vadim.godunko
Message:

Switch to use XML pretty writer to generate output.

Location:
trunk/forge/source/wiki
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/forge/source/wiki/forge-wiki-block_parsers-lists.adb

    r27 r30  
    4040--  $Revision$ $Date$
    4141------------------------------------------------------------------------------
    42 with Ada.Text_IO; use Ada.Text_IO;
    43 
    4442with Forge.Wiki.Block_Parsers.Paragraphs;
    4543with Forge.Wiki.Parsers;
    4644
    4745package body Forge.Wiki.Block_Parsers.Lists is
     46
     47   HTML5_URI : constant League.Strings.Universal_String
     48     := League.Strings.To_Universal_String ("http://www.w3.org/1999/xhtml");
     49   UL_Tag    : constant League.Strings.Universal_String
     50     := League.Strings.To_Universal_String ("ul");
     51   LI_Tag    : constant League.Strings.Universal_String
     52     := League.Strings.To_Universal_String ("li");
    4853
    4954   ------------
     
    5762      return
    5863        List_Block_Parser'
    59          (Offset      => Parameters.Markup_Offset,
     64         (Writer      => Parameters.Writer,
     65          Offset      => Parameters.Markup_Offset,
    6066          Text_Offset => Parameters.Text_Offset);
    6167   end Create;
     
    6975     Next : access Abstract_Block_Parser'Class) return End_Block_Action is
    7076   begin
    71       Put_Line (" </li>");
     77      Self.Writer.End_Element
     78       (Local_Name    => LI_Tag,
     79        Namespace_URI => HTML5_URI);
    7280
    7381      if Next /= null then
    7482         if Next.Offset < Self.Offset then
    75             Put_Line ("</ul>");
     83            Self.Writer.End_Element
     84             (Local_Name    => UL_Tag,
     85              Namespace_URI => HTML5_URI);
    7686
    7787            return Unwind;
     
    8494
    8595      else
    86          Put_Line ("</ul>");
     96         Self.Writer.End_Element
     97          (Local_Name    => UL_Tag,
     98           Namespace_URI => HTML5_URI);
    8799
    88100         return Unwind;
     
    130142   is
    131143      Parameters : aliased Constructor_Parameters
    132         := (Markup        => League.Strings.Empty_Universal_String,
     144        := (Writer        => Self.Writer,
     145            Markup        => League.Strings.Empty_Universal_String,
    133146            Markup_Offset => 0,
    134147            Text_Offset   => Self.Text_Offset);
     
    138151        and then Previous.all not in List_Block_Parser'Class
    139152      then
    140          Put_Line ("<ul>");
     153         Self.Writer.Start_Element
     154          (Local_Name    => UL_Tag,
     155           Namespace_URI => HTML5_URI);
    141156      end if;
    142157
    143       Put_Line ("  <li>");
     158      Self.Writer.Start_Element
     159       (Local_Name    => LI_Tag,
     160        Namespace_URI => HTML5_URI);
    144161
    145162      return
  • trunk/forge/source/wiki/forge-wiki-block_parsers-paragraphs.adb

    r27 r30  
    4040--  $Revision$ $Date$
    4141------------------------------------------------------------------------------
    42 with Ada.Text_IO; use Ada.Text_IO;
    43 
    4442with Forge.Wiki.Parsers;
    4543
    4644package body Forge.Wiki.Block_Parsers.Paragraphs is
     45
     46   HTML5_URI : constant League.Strings.Universal_String
     47     := League.Strings.To_Universal_String ("http://www.w3.org/1999/xhtml");
     48   P_Tag     : constant League.Strings.Universal_String
     49     := League.Strings.To_Universal_String ("p");
    4750
    4851   ------------
     
    5457       return Paragraph_Block_Parser is
    5558   begin
    56       return Paragraph_Block_Parser'(Offset => Parameters.Text_Offset);
     59      return Paragraph_Block_Parser'
     60              (Offset => Parameters.Text_Offset, Writer => Parameters.Writer);
    5761   end Create;
    5862
     
    6569     Next : access Abstract_Block_Parser'Class) return End_Block_Action is
    6670   begin
    67       Put_Line ("</p>");
     71      Self.Writer.End_Element
     72       (Local_Name    => P_Tag,
     73        Namespace_URI => HTML5_URI);
    6874
    6975      if Next /= null then
     
    8793     Text : League.Strings.Universal_String) is
    8894   begin
    89       Put_Line (Text.To_UTF_8_String);
     95      Self.Writer.Characters (Text);
    9096   end Line;
    9197
     
    113119       return Block_Parser_Access is
    114120   begin
    115       Put_Line ("<p>");
     121      Self.Writer.Start_Element
     122       (Local_Name    => P_Tag,
     123        Namespace_URI => HTML5_URI);
    116124
    117125      return null;
  • trunk/forge/source/wiki/forge-wiki-block_parsers.ads

    r27 r30  
    4242with League.Strings;
    4343
     44with Forge.Types;
     45
    4446private package Forge.Wiki.Block_Parsers is
    4547
     
    5052      Markup_Offset : Natural;
    5153      Text_Offset   : Positive;
     54      Writer        : not null Forge.Types.SAX_Writer_Access;
    5255   end record;
    5356
     
    5861   type Abstract_Block_Parser is abstract tagged limited record
    5962      Offset : Positive;
     63      Writer : Forge.Types.SAX_Writer_Access;
    6064   end record;
    6165
  • trunk/forge/source/wiki/forge-wiki-parsers.adb

    r28 r30  
    4848package body Forge.Wiki.Parsers is
    4949
     50   HTML5_URI : constant League.Strings.Universal_String
     51     := League.Strings.To_Universal_String ("http://www.w3.org/1999/xhtml");
     52   HTML_Tag  : constant League.Strings.Universal_String
     53     := League.Strings.To_Universal_String ("html");
     54
    5055   procedure Initialize_Block_Regexp (Self : in out Wiki_Parser'Class);
    5156   --  Build and compile block detection regexp.
     
    5863   function Create_Block_Parser
    5964    (Tag           : Ada.Tags.Tag;
     65     Writer        : not null Forge.Types.SAX_Writer_Access;
    6066     Markup        : League.Strings.Universal_String;
    6167     Markup_Offset : Natural;
     
    8995   function Create_Block_Parser
    9096    (Tag           : Ada.Tags.Tag;
     97     Writer        : not null Forge.Types.SAX_Writer_Access;
    9198     Markup        : League.Strings.Universal_String;
    9299     Markup_Offset : Natural;
     
    101108
    102109      Parameters : aliased Forge.Wiki.Block_Parsers.Constructor_Parameters
    103         := (Markup, Markup_Offset, Text_Offset);
     110        := (Markup, Markup_Offset, Text_Offset, Writer);
    104111
    105112   begin
     
    168175
    169176   procedure Parse
    170     (Self : in out Wiki_Parser'Class; Data : League.Strings.Universal_String)
     177    (Self   : in out Wiki_Parser'Class;
     178     Data   : League.Strings.Universal_String;
     179     Writer : not null Forge.Types.SAX_Writer_Access)
    171180   is
    172181      use type Forge.Wiki.Block_Parsers.Block_Parser_Access;
     
    188197      Self.Block_State := null;
    189198
     199      Writer.Start_Document;
     200      Writer.Start_Prefix_Mapping
     201       (Prefix        => League.Strings.Empty_Universal_String,
     202        Namespace_URI => HTML5_URI);
     203      Writer.Start_Element
     204       (Local_Name    => HTML_Tag,
     205        Namespace_URI => HTML5_URI);
     206
    190207      while Line <= Lines.Length loop
    191208         Match := Self.Block_Regexp.Find_Match (Lines (Line));
     
    207224                    Create_Block_Parser
    208225                     (Item.Parser_Tag,
     226                      Writer,
    209227                      (if Item.Markup_Group = 0
    210228                         then League.Strings.Empty_Universal_String
     
    282300         end case;
    283301      end loop;
     302
     303      Writer.End_Element
     304       (Local_Name    => HTML_Tag,
     305        Namespace_URI => HTML5_URI);
     306      Writer.End_Document;
    284307   end Parse;
    285308
  • trunk/forge/source/wiki/forge-wiki-parsers.ads

    r29 r30  
    4646with League.Strings;
    4747
     48with Forge.Types;
    4849private with Forge.Wiki.Block_Parsers;
    4950
     
    5960
    6061   procedure Parse
    61     (Self : in out Wiki_Parser'Class; Data : League.Strings.Universal_String);
     62    (Self   : in out Wiki_Parser'Class;
     63     Data   : League.Strings.Universal_String;
     64     Writer : not null Forge.Types.SAX_Writer_Access);
    6265   --  Parses given string.
    6366
Note: See TracChangeset for help on using the changeset viewer.