⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 synuniformatnativexml18.pas

📁 SynEditStudio delphi 代码编辑器
💻 PAS
字号:
{
@abstract(Provides Old Format 1.8 highlighters import)
@authors(Vitalik [just_vitalik@yahoo.com])
@created(2005)
@lastmod(2006-07-23)
}

{$IFNDEF QSynUniFormatNativeXml18}
unit SynUniFormatNativeXml18;
{$ENDIF}

{$I SynUniHighlighter.inc}

interface

uses
{$IFDEF SYN_CLX}
  QClasses,
  QGraphics,
  QSynUniFormat,
  QSynUniClasses,
  QSynUniRules,
  QSynUniHighlighter
{$ELSE}
  Classes,
  Graphics,
{$IFDEF SYN_COMPILER_6_UP}
  Variants,
{$ENDIF}
  SynUniFormat,
  SynUniFormatNativeXml,
  SynUniClasses,
  SynUniRules,
  SynUniHighlighter,
{$ENDIF}
  SysUtils,
  {XMLIntf; } // DW
  SimpleXML;
  
type
  TSynUniFormatNativeXml18 = class(TSynUniFormatNativeXml)
    class function ImportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean; override;
    class function ExportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean; override;
    class function ImportEditorProperties(AEditorProperties: TEditorProperties; ANode: IXMLNode): Boolean; override;
    class function ExportEditorProperties(AEditorProperties: TEditorProperties; ANode: IXMLNode): Boolean; override;
    class function ImportAttributes(Attributes: TSynAttributes; ANode: IXMLNode): Boolean; overload; override;
    class function ExportAttributes(Attributes: TSynAttributes; ANode: IXMLNode): Boolean; overload; override;
    class function ImportAttributes(Attributes: TSynAttributes; AString: string): Boolean; overload;
    class function ExportAttributes(Attributes: TSynAttributes; var AString: string): Boolean; overload;
    class function ImportSchemes(ASchemes: TSynUniSchemes; ANode: IXMLNode): Boolean; override;
    class function ExportSchemes(ASchemes: TSynUniSchemes; ANode: IXMLNode): Boolean; override;
    class function ImportToken(AToken: TSynMultiToken; ANode: IXMLNode; Kind: string = ''): Boolean;
    class function ExportToken(AToken: TSynMultiToken; ANode: IXMLNode; Kind: string = ''): Boolean;
    class function ImportKeyList(AKeyList: TSynKeyList; ANode: IXMLNode): Boolean; override;
    class function ExportKeyList(AKeyList: TSynKeyList; ANode: IXMLNode): Boolean; override;
    class function ImportSet(ASet: TSynSet; ANode: IXMLNode): Boolean; override;
    class function ExportSet(ASet: TSynSet; ANode: IXMLNode): Boolean; override;
    class function ImportRange(ARange: TSynRange; ANode: IXMLNode): Boolean; override;
    class function ExportRange(ARange: TSynRange; ANode: IXMLNode): Boolean; override;
    class function ImportHighlighter(SynUniSyn: TSynUniSyn; ANode: IXMLNode): Boolean; override;
    class function ExportHighlighter(SynUniSyn: TSynUniSyn; ANode: IXMLNode): Boolean; override;
    class function ImportFromStream(AObject: TObject; AStream: TStream): Boolean; override;
    class function ExportToStream(AObject: TObject; AStream: TStream): Boolean; override;
    class function ImportFromFile(AObject: TObject; AFileName: string): Boolean; override;
    class function ExportToFile(AObject: TObject; AFileName: string): Boolean; override;
  end;

implementation

//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml18.ImportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean;
var
  i: Integer;
begin
  with ANode, AInfo do
  begin
    with EnsureChild('General'), General do
    begin
      Name       := GetVarAttr('Name','');
      Extensions := GetVarAttr('Extensions','');
    end;
    with EnsureChild('Author'), Author do
    begin
      Name      := GetVarAttr('Name','');
      Email     := GetVarAttr('Email','');
      Web       := GetVarAttr('Web','');
      Copyright := GetVarAttr('Copyright','');
      Company   := GetVarAttr('Company','');
      Remark    := GetVarAttr('Remark','');
    end;
    with EnsureChild('Version'), General do
    begin
      Version  := StrToInt(GetVarAttr('Version',''));
      Revision := StrToInt(GetVarAttr('Revision',''));
                  GetVarAttr('Date','');
    end;
    with EnsureChild('Sample'), General do
      for i := 0 to ChildNodes.Count-1 do
        Sample := Sample + ChildNodes[i].Text + #13#10;
    with EnsureChild('History'), General do
      for i := 0 to ChildNodes.Count-1 do
        History := History + ChildNodes[i].Text + #13#10;
  end;
  Result := True;
end;

//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml18.ExportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean;
var
  i: Integer;
  Buffer: TStringList;
  Node: IXMLNode;
begin
  with AInfo, ANode do
  begin
    with General, AppendElement('General') do
    begin
      SetVarAttr('Name', Name);
      SetVarAttr('Extensions', Extensions);
    end;
    with Author, AppendElement('Author') do
    begin
      SetVarAttr('Name', Name);
      SetVarAttr('Email', Email);
      SetVarAttr('Web', Web);
      SetVarAttr('Copyright', Copyright);
      SetVarAttr('Company', Company);
      SetVarAttr('Remark', Remark);
    end;
    with General, AppendElement('Version') do
    begin
      SetVarAttr('Version', Version);
      SetVarAttr('Revision', Revision);
    end;
    Buffer := TStringList.Create();
    with General, AppendElement('History') do
    begin
      Text := #13#10;
      Buffer.Text := History;
      for i := 0 to Buffer.Count-1 do
      begin
        Node := AppendElement('H');
        Node.Text := Buffer[i];
      end;
    end;
    with General, AppendElement('Sample') do
    begin
      Text := ' ';
      Buffer.Text := Sample;
      for i := 0 to Buffer.Count-1 do
      begin
        Node := AppendElement('S');
        Node.Text := Buffer[i];
      end;
    end;
    FreeAndNil(Buffer);
  end;
  Result := True;
end;

//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml18.ImportEditorProperties(AEditorProperties:
  TEditorProperties; ANode: IXMLNode): Boolean;
begin
  // 纛痨囹 礤 镱滗屦骅忄弪
  Result := True;
end;

//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml18.ExportEditorProperties(AEditorProperties:
  TEditorProperties; ANode: IXMLNode): Boolean;
begin
  // 纛痨囹 礤 镱滗屦骅忄弪
  Result := True;
end;

//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml18.ImportAttributes(Attributes: TSynAttributes;
  AString: string): Boolean;
begin
  with Attributes do
  begin
    ParentForeground := False; // 腕骓

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -