项目作者: bomrafinha

项目描述 :
Pacote de conversão entre formatos (JSON, XML, CSV, etc) para Delphi.
高级语言: Pascal
项目地址: git://github.com/bomrafinha/FormatConverter.git
创建时间: 2020-01-13T16:30:04Z
项目社区:https://github.com/bomrafinha/FormatConverter

开源协议:MIT License

下载


Format Converter (Delphi)

Conversor de formatos (JSON, XML, etc) para Delphi.

Format converter (JSON, XML, etc.) for Delphi.


Maintenance
Build
GitHub release (latest by date)
GitHub Release Date
Github repo age
Github author

GitHub contributors
GitHub last commit
GitHub commit activity

GitHub issues
GitHub closed issues
GitHub pull requests
GitHub closed pull requests
GitHub forks
GitHub stars
GitHub All Releases

GitHub top language
GitHub language count
Delphi Supported Versions
Platforms
GitHub code size in bytes

GitHub



Índice

  1. Instalação/Configuração
  2. Uso
  3. Sitemap
  4. Estrutura
  5. Workgroup
  6. Dependências
  7. Contribuir
  8. Checklist para Contribuir
  9. Créditos
  10. Licença
  11. Padronização de Código
  12. TODO
  13. Árvore do Projeto


" class="reference-link">Instalação/Configuração

Clique na Imagem para visualizar o vídeo

*Clique na Imagem para visualizar o vídeo

Correção: Substituir “$(variavel_criada)\dcu” por “$(variavel_criada)\output” no library path


" class="reference-link">Uso

Como Usar

Clique na Imagem para visualizar o vídeo

*Clique na Imagem para visualizar o vídeo

Exemplo de Uso

Clique na Imagem para visualizar o vídeo

*Clique na Imagem para visualizar o vídeo

Recursos

  • JSONtoXML

    • stringToString: Converte um JSON em forma de String em um XML em forma de string (string);
      • Parametrização
        • strContent: JSON à converter (string);
    • stringToFile: Converte um JSON em forma de String em um arquivo XML (boolean);
      • Parametrização
        • strContent: JSON à converter (string);
        • filePathResult: Caminho do arquivo XML à ser salvo (string);
    • stringToReturnType: Converte um JSON em forma de String em um XML em forma de TXMLDocument (TXMLDocument);
      • Parametrização
        • strContent: JSON à converter (string);
    • fileToString: Converte um arquivo JSON em um XML em forma de string (string);
      • Parametrização
        • filePath: Caminho do arquivo JSON à converter (string);
    • fileToFile: Converte um arquivo JSON em um arquivo XML (boolean);
      • Parametrização
        • filePath: Caminho do arquivo JSON à converter (string);
        • filePathResult: Caminho do arquivo XML à ser salvo (string);
    • fileToReturnType: Converte um arquivo JSON em um XML em forma de TXMLDocument (TXMLDocument);
      • Parametrização
        • filePath: Caminho do arquivo JSON à converter (string);
    • originTypeToString: Converte um JSON em forma de TJSONObject em um XML em forma de string (string);
      • Parametrização
        • content: JSON à converter (TJSONObject);
    • originTypeToFile: Converte um JSON em forma de TJSONObject em um arquivo XML (boolean);
      • Parametrização
        • content: JSON à converter (TJSONObject);
        • filePathResult: Caminho do arquivo XML à ser salvo (string);
    • originTypeToReturnType: Converte um JSON em forma de TJSONObject em um XML em forma de TXMLDocument (TXMLDocument);
      • Parametrização
        • content: JSON à converter (TJSONObject);
    • normalizeOrigin: Converte um JSON em forma de String em um JSON em forma de TJSONObject (TJSONObject);
      • Parametrização
        • content: JSON à normalizar (string);
    • normalizeOrigin: Converte um JSON em forma de TJSONObject em um JSON em forma de TStringList (TStringList);
      • Parametrização
        • content: JSON à normalizar (TJSONObject);
    • normalizeOrigin: Converte um JSON em forma de TStringList em um JSON em forma de String (string);
      • Parametrização
        • content: JSON à normalizar (TStringList);
    • normalizeReturn: Converte um XML em forma de String em um XML em forma de TXMLDocument (TXMLDocument);
      • Parametrização
        • content: XML à normalizar (string);
    • normalizeReturn: Converte um XML em forma de TXMLDocument em um XML em forma de TStringList (TStringList);
      • Parametrização
        • content: XML à normalizar (TXMLDocument);
    • normalizeReturn: Converte um XML em forma de TStringList em um XML em forma de String (string);
      • Parametrização
        • content: XML à normalizar (TStringList);
  • XMLtoJSON

    • stringToString: Converte um XML em forma de String em um JSON em forma de string (string);
      • Parametrização
        • strContent: XML à converter (string);
    • stringToFile: Converte um XML em forma de String em um arquivo JSON (boolean);
      • Parametrização
        • strContent: XML à converter (string);
        • filePathResult: Caminho do arquivo JSON à ser salvo (string);
    • stringToReturnType: Converte um XML em forma de String em um JSON em forma de TJSONObject (TJSONObject);
      • Parametrização
        • strContent: XML à converter (string);
    • fileToString: Converte um arquivo XML em um JSON em forma de string (string);
      • Parametrização
        • filePath: Caminho do arquivo XML à converter (string);
    • fileToFile: Converte um arquivo XML em um arquivo JSON (boolean);
      • Parametrização
        • filePath: Caminho do arquivo XML à converter (string);
        • filePathResult: Caminho do arquivo JSON à ser salvo (string);
    • fileToReturnType: Converte um arquivo XML em um JSON em forma de TJSONObject (TJSONObject);
      • Parametrização
        • filePath: Caminho do arquivo XML à converter (string);
    • originTypeToString: Converte um XML em forma de TXMLDocument em um JSON em forma de string (string);
      • Parametrização
        • content: XML à converter (TXMLDocument);
    • originTypeToFile: Converte um XML em forma de TXMLDocument em um arquivo JSON (boolean);
      • Parametrização
        • content: XML à converter (TXMLDocument);
        • filePathResult: Caminho do arquivo JSON à ser salvo (string);
    • originTypeToReturnType: Converte um XML em forma de TXMLDocument em um JSON em forma de TJSONObject (TJSONObject);
      • Parametrização
        • content: XML à converter (TXMLDocument);
    • normalizeOrigin: Converte um XML em forma de String em um XML em forma de TXMLDocument (TXMLDocument);
      • Parametrização
        • content: XML à normalizar (string);
    • normalizeOrigin: Converte um XML em forma de TXMLDocument em um XML em forma de TStringList (TStringList);
      • Parametrização
        • content: XML à normalizar (TXMLDocument);
    • normalizeOrigin: Converte um XML em forma de TStringList em um XML em forma de String (string);
      • Parametrização
        • content: XML à normalizar (TStringList);
    • normalizeReturn: Converte um JSON em forma de String em um JSON em forma de TJSONObject (TJSONObject);
      • Parametrização
        • content: JSON à normalizar (string);
    • normalizeReturn: Converte um JSON em forma de TJSONObject em um JSON em forma de TStringList (TStringList);
      • Parametrização
        • content: JSON à normalizar (TJSONObject);
    • normalizeReturn: Converte um JSON em forma de TStringList em um JSON em forma de String (string);
      • Parametrização
        • content: JSON à normalizar (TStringList);


Sitemap

Sitemap


" class="reference-link">Estrutura

  • app: Contém a compilação do(s) pacote(s) e testador(es);
  • documentation: Contém a documentação do(s) pacote(s);
  • images: Contém as imagens usadas no(s) pacote(s);
  • modules: Módulos que executam cada conversão disponível no sistema;
    • JSONtoXML: Contém o pacote usado para conversão de XML para JSON;
    • XMLtoJSON: Contém o pacote usado para conversão de JSON para XML;
  • output: Contém os arquivos pré compilados usados pelo Delphi (.dcu);
  • project: Diretório com os projetos de cada pacote e testador;
  • src: Contém o fonte essencial para o funcionamento do(s) pacote(s);
    • Padronizacao: Contém as interfaces que padronizao os pacoes;
    • FormatConverter: Contém o pacote com o registro desse componente (também usado para pegar o número de build);
    • FormatConverterTester: Contém o executável de este do Componente;
  • vendor: Contém os pacotes de terceiros;


" class="reference-link">Workgroup

Deve-se manter a ordem de compilação do projeto como na imagem.

Workgroup


" class="reference-link">Dependências

  • Sem dependências até o momento.


" class="reference-link">Contribuir

  1. Faça um “fork” com base no master;
  2. Faça “commit” de suas alterações (Caso estiver resolvendo alguma “issue” não esqueça de na mensagem escrever “Fixed #numeroIssue”);
  3. Faça “push” de seus commits;
  4. Solicite um “pull request” para o master do repositório principal.

Criando uma Issue

Para criar uma issue atente para o seguinte:

  • Selecionar o label adequado para a issue (esse label poderá vir a ser alterado, mas a não designação faz com que a issue fique perdida).

Label Issue

  • Selecionar o projeto FormatConverter - Kanban, isso organizará o que está sendo feito e o que deverá ser feito.

Projeto Issue


" class="reference-link">Checklist para Contribuir

  • Testar as funcionalidades criadas / alteradas;
  • Marcar com “#” os issues concluídos, nos commits;
  • Readme (caso nescessário)
    • Número do build;
    • Alterar indice;
    • Alterar / adicionar forma de uso;
    • Incluir pacotes / classes / métodos / parâmetros nas formas de uso;
    • Alterar sitemap;
    • Alterar estrutura da aplicação;
    • Imagem atualizada do Workgroup;
    • Adicionar / Remover dependências (pacotes de terceiros);
    • Atualizar métodos de instalação / configuração do pacote;
    • Atualizar a documentação do fonte;
    • Remover / adicionar itens ao TODO;
    • Atualizar árvore do projeto;
  • Ao adicionar itens ao TODO, não esquecer de criar a “issue” correspondente;
    • Labels principais
      • bug: Correção de algum problema;
      • documentation: Alteração na documentação;
      • enhacement: Alteração de funcionalidade existente para melhorá-la;
      • feature: Nova funcionalidade;
    • Projeto
      • FormatConverter - Kanban: Para melhor organizar o projeto;


" class="reference-link">Créditos

@bomrafinha


Licença


" class="reference-link">Padronização de Código

Versionamento

Para versionar o FormatConverter deve-se usar como base, o versionamento do pacote FormatConverter.bpl para windows 32 bits, da forma que se segue:

Workgroup

onde:

  1. Versão principal, só muda quando o funcionamento básico do sistema altera de forma considerável;
  2. Quantidade de módulos funcionais do sistema;
  3. Quantidade de funções públicas disponíveis no sistema;
  4. Versão de build do sistema auto-gerado pelo Delphi;
  5. Deve-se manter o build como auto incremento;

Para cada teste compilado com sucesso deve-se dar build no FormatConverter.bpl para versionar (shift + F9).

Os releases do repositório serão feitos a cada vez que um módulo estiver 100% finalizado, ou quando um conserto muito relevante for realizado.


Padrões adotados no projeto

Para um melhor entendimento do projeto foi-se adotado alguns padrões que facilitam a identificação de cada estrutura usada. São, basicamente, o uso de camelCase, e PascalCase;

Variáveis de método

Variáveis locais devem ser camelCase.

Observar o espaçamento entre a declaração de variáveis e o inicio do método.

Variáveis de método

Variáveis privadas

A declaração de váriaveis privadas deve ocorrer sempre dentro dos modificadores de acesso.

Devem ser camelCase começando sempre com “f” seguido por seu nome.

Variáveis privadas

Propriedades

Propriedades devem usar PascalCase.

Devem ter exatamente o nome de sua variável privada e/ou metodo de acesso, eliminando apenas o prefixo (f, get, set).

Propriedades

Métodos

A declaração de métodos deve ocorrer sempre dentro dos modificadores de acesso.

Métodos devem ser camelCase.

Os parâmetros do método devem ser camelCase iniciando com “a”.

Procurar, quando possível, usar prefixos get, set, eh, etc de acordo com a função do método e/ou seu retorno.

Ao serem chamados usar sempre parentesis em sua chamada, mesmo quando sem parâmetros. Ex: meuMetodo();

Métodos

Interfaces

Interfaces devem começar sempre com a letra “I” (maiúsculo), seguido por seu nome em PascalCase.

Interfaces

Classes

Classes devem começar sempre com a letra “T” (maiúsculo), seguido por seu nome em PascalCase.

Classes que não extendem nenhuma outra classes em específico devem extender TInterfacedObject.

Classes

Chamada de métodos em múltiplas linhas

Métodos com chamadas muito extensas devem ser chamados usando padrão de identação JSON.

Chamada de métodos em múltiplas linhas 01
Chamada de métodos em múltiplas linhas 02

Uso de blocos begin end

Estruturas que não se utilizam do bloco de abertura e fechamento de código, como ifs de uma linha, em um código muito extenso geralmente atrapalham na leitura do código para posteriores modificações. Por esse motivo todas as estruturas devem possuir o bloco de abertura e fechamento (begin .. end)

Uso de blocos *begin end* 01
Uso de blocos *begin end* 02

Identação

Modificadores de acesso devem ser declarados de forma a ficarem alinhados à declaração da classe.

Declaração de métodos, propriedades, construtores/destrutores, bem como o var da declaração de variáveis, devem estar alinhados.

Agrupar procedures e functions sem alterná-los.

Separar declações de variáveis, métodos, construtores, destrutores e propriedades com uma linha em branco, bem como deixar uma linha em branco antes da declaração de modificador de acesso, ou fim do bloco, exceto no primeiro modificador após a declaração da classes.

Identação

Chamada de métodos e variaveis internas da classe

Devem ser precedidas da palavra reservada Self, para facilitar a leitura do código.

Self

Palavras Reservadas

Dá-se preferência ao uso de iniciais minúsculas para palavras reservadas. Porém isso não é uma regra para o projeto tendo em vista que por serem reservadas a IDE às sinaliza, não atrapalhando, assim, a leitura do código.

Nomenclatura dos Arquivos

Deve-se nomear os arquivos começando-se com U_.

Para uma melhor localização dos arquivos no gerenciador de arquivos, e das unidades dentro do Delphi, devemos montar o nome dos arquivos compondo-os de seus módulos, submódulos, e função final, todos separados por ponto. Como segue na imagem a seguir:

Nomenclatura Arquivos

Um código bem padronizado é muito mais fácil de ler, mesmo por programadores que utilizam outras linguagens.


" class="reference-link">TODO

  • Conversor JSON -> CSV

    • Entrada JSON -> Saída CSV
    • Entrada JSON -> Saída string
    • Entrada JSON -> Saída arquivo
    • Entrada string -> Saída CSV
    • Entrada string -> Saída string
    • Entrada string -> Saída arquivo
    • Entrada arquivo -> Saída CSV
    • Entrada arquivo -> Saída string
    • Entrada arquivo -> Saída arquivo
    • Normalizar origin String -> JSON
    • Normalizar origin JSON -> TStringList
    • Normalizar origin TStringList -> String
    • Normalizar return String -> CSV
    • Normalizar return CSV -> TStringList
    • Normalizar return TStringList -> String
  • Conversor XML -> CSV

    • Entrada XML -> Saída CSV
    • Entrada XML -> Saída string
    • Entrada XML -> Saída arquivo
    • Entrada string -> Saída CSV
    • Entrada string -> Saída string
    • Entrada string -> Saída arquivo
    • Entrada arquivo -> Saída CSV
    • Entrada arquivo -> Saída string
    • Entrada arquivo -> Saída arquivo
    • Normalizar origin String -> XML
    • Normalizar origin XML -> TStringList
    • Normalizar origin TStringList -> String
    • Normalizar return String -> CSV
    • Normalizar return CSV -> TStringList
    • Normalizar return TStringList -> String
  • Conversor CSV -> JSON

    • Entrada CSV -> Saída JSON
    • Entrada CSV -> Saída string
    • Entrada CSV -> Saída arquivo
    • Entrada string -> Saída JSON
    • Entrada string -> Saída string
    • Entrada string -> Saída arquivo
    • Entrada arquivo -> Saída JSON
    • Entrada arquivo -> Saída string
    • Entrada arquivo -> Saída arquivo
    • Normalizar origin String -> CSV
    • Normalizar origin CSV -> TStringList
    • Normalizar origin TStringList -> String
    • Normalizar return String -> JSON
    • Normalizar return JSON -> TStringList
    • Normalizar return TStringList -> String
  • Conversor CSV -> XML

    • Entrada CSV -> Saída XML
    • Entrada CSV -> Saída string
    • Entrada CSV -> Saída arquivo
    • Entrada string -> Saída XML
    • Entrada string -> Saída string
    • Entrada string -> Saída arquivo
    • Entrada arquivo -> Saída XML
    • Entrada arquivo -> Saída string
    • Entrada arquivo -> Saída arquivo
    • Normalizar origin String -> CSV
    • Normalizar origin CSV -> TStringList
    • Normalizar origin TStringList -> String
    • Normalizar return String -> XML
    • Normalizar return XML -> TStringList
    • Normalizar return TStringList -> String


" class="reference-link">Árvore do Projeto

  1. FormatConverter
  2. ├── app
  3. └── .gitkeep
  4. ├── documentation
  5. └── images
  6. ├── exemplo.png
  7. ├── install_config.png
  8. ├── label_issue.png
  9. ├── nomenclatura.png
  10. ├── padrao_blocos_01.png
  11. ├── padrao_blocos_02.png
  12. ├── padrao_chamadas_01.png
  13. ├── padrao_chamadas_02.png
  14. ├── padrao_classes.png
  15. ├── padrao_identacao_01.png
  16. ├── padrao_interfaces.png
  17. ├── padrao_metodos.png
  18. ├── padrao_propriedades.png
  19. ├── padrao_self_01.png
  20. ├── padrao_variaveis_locais.png
  21. ├── padrao_variaveis_privadas.png
  22. ├── project_issue.png
  23. ├── sitemap.png
  24. ├── uso.png
  25. ├── versionamento.png
  26. └── workgroup.png
  27. ├── images
  28. └── icone
  29. ├── FormatConverter.bmp
  30. ├── icon 150x150.png
  31. ├── icon 44x44.png
  32. ├── icon.ico
  33. ├── icon.png
  34. └── icon.psd
  35. ├── modules
  36. ├── CSVtoJSON
  37. └── U_CSV.JSON.pas
  38. ├── CSVtoXML
  39. └── U_CSV.XML.pas
  40. ├── JSONtoCSV
  41. └── U_JSON.CSV.pas
  42. ├── JSONtoXML
  43. └── U_JSON.XML.pas
  44. ├── XMLtoCSV
  45. └── U_XML.CSV.pas
  46. └── XMLtoJSON
  47. └── U_XML.JSON.pas
  48. ├── output
  49. └── .gitkeep
  50. ├── project
  51. ├── CSVtoJSON.dpk
  52. ├── CSVtoJSON.dproj
  53. ├── CSVtoXML.dpk
  54. ├── CSVtoXML.dproj
  55. ├── Format_Converter.groupproj
  56. ├── FormatConverter.dpk
  57. ├── FormatConverter.dproj
  58. ├── FormatConverterTester.dpr
  59. ├── FormatConverterTester.dproj
  60. ├── JSONtoCSV.dpk
  61. ├── JSONtoCSV.dproj
  62. ├── JSONtoXML.dpk
  63. ├── JSONtoXML.dproj
  64. ├── Padronizacao.dpk
  65. ├── Padronizacao.dproj
  66. ├── XMLtoCSV.dpk
  67. ├── XMLtoCSV.dproj
  68. ├── XMLtoJSON.dpk
  69. └── XMLtoJSON.dproj
  70. ├── src
  71. ├── FormatConverter
  72. └── U_FormatConverter.pas
  73. ├── FormatConverterTester
  74. ├── U_FormatConverterTester.View.fmx
  75. └── U_FormatConverterTester.View.pas
  76. └── Padronizacao
  77. ├── U_Normalize.pas
  78. └── U_Origin.Return.pas
  79. ├── vendor
  80. └── .gitkeep
  81. ├── .gitattributes
  82. ├── .gitignore
  83. ├── LICENSE
  84. └── README.md