0.7.0 • Published 27 days ago

@designliquido/foles v0.7.0

Weekly downloads
-
License
MIT
Repository
github
Last release
27 days ago

FolEs

Motivação

Assim como linguagens de programação e de marcação, linguagens de estilo como CSS podem ser difíceis de aprender em português.

FolEs começa do mesmo ponto que SASS, como uma linguagem de extensão que gera CSS. A base de CSS é HTML. A base de FolEs é LMHT.

Adicionalmente, FolEs possui um recurso de tradução reversa. Em outras palavras, FolEs pode ingerir um arquivo CSS e devolver seu correspondente em FolEs.

Exemplos

Se queremos definir estilos para um documento inteiro, podemos usar:

lmht {
    tamanho-fonte: 12px;
}

Isso traduz para o seguinte CSS:

html {
    font-size: 12px;
}

Instalação

Para instalar FolEs globalmente, use o seguinte comando:

npm i -g @designliquido/foles

Execução

Após instalar globalmente pelo npm, para executar FolEs traduzindo um arquivo chamado exemplo.foles, use:

foles exemplo.foles

Para tradução reversa:

foles exemplo.css

VSCode

No Visual Studio Code, adicione no seu launch.json o seguinte:

    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "FolEs",
            "skipFiles": ["<node_internals>/**", "node_modules/**"],
            "cwd": "${workspaceRoot}",
            "console": "integratedTerminal",
            "args": [
                "${workspaceFolder}${pathSeparator}execucao.ts",
                "${workspaceFolder}${pathSeparator}exemplos${pathSeparator}exemplo.foles"
            ],
            "runtimeExecutable": "node",
            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
        },
    ]

Arquitetura

FolEs copia vários elementos de Delégua, como um Lexador e um Avaliador Sintático, mas contém um elemento original (um Tradutor, que usa o retorno do Avaliador Sintático para gerar uma folha de estilo em CSS).

Seletores

Um seletor é uma expressão que encontra N elementos em um documento LMHT que possuem certas características, como por exemplo o nome de uma estrutura, um id, uma classe e atributos dessa estrutura. Por exemplo:

ligacao {

}

Encontra todas as estruturas de um documento LMHT cujo nome da estrutura seja ligação:

<lmht>
    <cabeça>
    </cabeça>
    <corpo>
        <ligacao destino="https://github.com/DesignLiquido">GitHub da Design Líquido</ligacao>
        <ligacao destino="https://github.com/DesignLiquido/delegua">Linguagem Delégua</ligacao>
        <ligacao destino="https://github.com/DesignLiquido/FolEs">Linguagem FolEs</ligacao>
    </corpo>
</lmht>

Neste exemplo, portanto, irá encontrar três estruturas.

Podemos ainda selecionar por um identificador único:

#ligacao1 {

}

Para o exemplo modificado:

<lmht>
    <cabeça>
    </cabeça>
    <corpo>
        <ligacao id="ligacao1" destino="https://github.com/DesignLiquido">GitHub da Design Líquido</ligacao>
        <ligacao id="ligacao2" destino="https://github.com/DesignLiquido/delegua">Linguagem Delégua</ligacao>
        <ligacao id="ligacao3" destino="https://github.com/DesignLiquido/FolEs">Linguagem FolEs</ligacao>
    </corpo>
</lmht>

Iremos encontrar uma estrutura. Ainda, podemos usar algo assim:

.minhaligacao {

}

E modificar o exemplo mais uma vez:

<lmht>
    <cabeça>
    </cabeça>
    <corpo>
        <ligacao classe="minhaligacao" destino="https://github.com/DesignLiquido">GitHub da Design Líquido</ligacao>
        <ligacao classe="outraligacao" destino="https://github.com/DesignLiquido/delegua">Linguagem Delégua</ligacao>
        <ligacao classe="minhaligacao" destino="https://github.com/DesignLiquido/FolEs">Linguagem FolEs</ligacao>
    </corpo>
</lmht>

E encontraremos apenas duas das três estruturas.

Modificadores

Um modificador é toda e qualquer propriedade declarada no escopo de um seletor que irá causar uma modificação em estruturas de um documento. Voltando ao exemplo da seção anterior:

ligacao {
    tamanho-fonte: 16px;
}

Se aplicamos este estilo ao documento do primeiro exemplo, todas as três estruturas receberão uma modificação de estilo, ou seja o tamanho da fonte (texto) passa a ter o tamanho de 16 pixels.

Atributos de Modificadores: Valores, Quantificadores e Qualitativos

FolEs trabalha com três conceitos de atributos em todas as etapas dos ciclos de ingestão de arquivos:

  • Valores: são os atributos que acompanham modificadores. No exemplo tamanho-fonte: 16px;, tamanho-fonte é o modificador, e 16px é o valor. Valores podem ser formados por números absolutos, números acompanhados de quantificadores, quantitativos ou ainda uma combinação de todos esses;
  • Quantificadores: são complementos de valores. No exemplo anterior, px é o quantificador, e acompanha o número 16, a parte numérica do valor;
  • Qualitativos: são valores adjetivos. Nem todo valor é expresso por um número e uma unidade de medida. Explorando um outro exemplo:
ligacao {
    estilo-contorno: pontilhado;
}

estilo-contorno é um modificador que pede um qualitativo. pontihado é um qualitativo.

Mapeamentos

FolEsCSS
agrupar-palavraword-break
agrupar-vazamentooverflow-wrap
ajustar-objetoobject-fit
ajustar-tamanho-fontefont-size-adjust
ajuste-cor-forcadoforced-color-adjust
ajuste-cor-forçadoforced-color-adjust
alinhar-conteudoalign-content
alinhar-conteúdoalign-content
alinhar-encaixe-rolagem-mousescroll-snap-align
alinhar-itensalign-items
alinhar-sealign-self
alinhar-textotext-align
alinhar-verticalvertical-align
alinhar-ultimo-itemtext-align-last
alinhar-último-itemtext-align-last
alturaheight
altura-linhaline-height
altura-maximamax-height
altura-máximamax-height
altura-minimamin-height
altura-mínimamin-height
animacaoanimation
animaçãoanimation
ao-mudarwill-change
aparenciaappearance
aparênciaappearance
area-mascaramask-clip
área-máscaramask-clip
atraso-animacaoanimation-delay
atraso-animaçãoanimation-delay
atraso-transicaotransition-delay
atraso-transiçãotransition-delay
bordaborder
borda-direitaborder-right
borda-em-blocoborder-block
borda-em-linhaborder-inline
borda-esquerdaborder-left
borda-inferiorborder-bottom
borda-mascaramask-border
borda-máscaramask-border
borda-superiorborder-top
calha-barra-rolagemscrollbar-gutter
celulas-vaziasempty-cells
células-vaziasempty-cells
citacoesquotes
citaçõesquotes
coluna-em-gradegrid-column
colunascolumns
combinar-texto-verticaltext-combine-upright
comportamento-em-bloco-rolagem-mouseoverscroll-behavior-block
comportamento-em-linha-rolagem-mouseoverscroll-behavior-inline
comportamento-horizontal-rolagem-mouseoverscroll-behavior-x
comportamento-rolagemscroll-behavior
comportamento-rolagem-mouseoverscroll-behavior
comportamento-vertical-rolagem-mouseoverscroll-behavior-y
composicao-mascaramask-composite
composição-máscaramask-composite
configuracoes-variacao-fontefont-variation-settings
configurações-variação-fontefont-variation-settings
contar-colunacolumn-count
contemcontain
contémcontain
conteudocontent
conteúdocontent
contornooutline
coordenadastranslate
corcolor
cor-barra-rolagemscrollbar-color
cor-bordaborder-color
cor-borda-direitaborder-right-color
cor-borda-em-blocoborder-block-color
cor-borda-em-linhaborder-inline-color
cor-borda-esquerdaborder-left-color
cor-borda-inferiorborder-bottom-color
cor-borda-superiorborder-top-color
cor-contornooutline-color
cor-cursorcaret-color
cor-destaqueaccent-color
cor-enfase-textotext-emphasis-color
cor-ênfase-textotext-emphasis-color
cor-fim-borda-em-blocoborder-block-end-color
cor-fim-borda-em-linhaborder-inline-end-color
cor-fundobackground-color
cor-inicio-borda-em-blocoborder-block-start-color
cor-início-borda-em-blocoborder-block-start-color
cor-inicio-borda-em-linhaborder-inline-start-color
cor-início-borda-em-linhaborder-inline-start-color
cursorcursor
decoracao-cor-textotext-decoration-color
decoração-cor-textotext-decoration-color
decoracao-espessura-textotext-decoration-thickness
decoração-espessura-textotext-decoration-thickness
decoracao-estilo-textotext-decoration-style
decoração-estilo-textotext-decoration-style
decoracao-linha-textotext-decoration-line
decoração-linha-textotext-decoration-line
decoracao-textotext-decoration
decoração-textotext-decoration
decoracao-texto-sublinhadotext-decoration-skip-ink
decoração-texto-sublinhadotext-decoration-skip-ink
definir-contadorcounter-set
design-tabelatable-layout
deslocamentooffset
deslocamento-em-ancoraoffset-anchor
deslocamento-em-âncoraoffset-anchor
deslocamento-texto-sublinhadotext-underline-offset
deslocar-contornooutline-offset
deslocar-pontuacaohanging-punctuation
deslocar-pontuaçãohanging-punctuation
direcaodirection
direçãodirection
direcao-animacaoanimation-direction
direção-animaçãoanimation-direction
distancia-deslocamentooffset-distance
distância-deslocamentooffset-distance
duracao-animacaoanimation-duration
duração-animaçãoanimation-duration
duracao-transicaotransition-duration
duração-transiçãotransition-duration
enfase-textotext-emphasis
ênfase-textotext-emphasis
escalascale
espacamentogap
espaçamentogap
espacamento-colunacolumn-gap
espaçamento-colunacolumn-gap
espacamento-coluna-em-gradegrid-column-gap
espaçamento-coluna-em-gradegrid-column-gap
espacamento-em-gradegrid-gap
espaçamento-em-gradegrid-gap
espacamento-fontefont-kerning
espaçamento-fontefont-kerning
espacamento-letrasletter-spacing
espaçamento-letrasletter-spacing
espacamento-linhasrow-gap
espaçamento-linhasrow-gap
espacamento-linha-em-gradegrid-row-gap
espaçamento-linha-em-gradegrid-row-gap
espacamento-palavrasword-spacing
espaçamento-palavrasword-spacing
espaco-bordaborder-spacing
espaço-bordaborder-spacing
espaco-em-brancowhite-space
espaço-em-brancowhite-space
espessura-fontefont-weight
esquema-corcolor-scheme
estender-borda-imagemborder-image-outset
estender-colunacolumn-span
esticar-fontefont-stretch
estilo-bordaborder-style
estilo-borda-direitaborder-right-style
estilo-borda-em-blocoborder-block-style
estilo-borda-em-linhaborder-inline-style
estilo-borda-esquerdaborder-left-style
estilo-borda-inferiorborder-bottom-style
estilo-borda-superiorborder-top-style
estilo-contornooutline-style
estilo-enfase-textotext-emphasis-style
estilo-ênfase-textotext-emphasis-style
estilo-fim-borda-em-blocoborder-block-end-style
estilo-fim-borda-em-linhaborder-inline-end-style
estilo-fontefont-style
estilo-inicio-borda-em-blocoborder-block-start-style
estilo-início-borda-em-blocoborder-block-start-style
estilo-inicio-borda-em-linhaborder-inline-start-style
estilo-início-borda-em-linhaborder-inline-start-style
estilo-listalist-style
estilo-lista-imagemlist-style-image
estilo-lista-posicaolist-style-position
estilo-lista-posiçãolist-style-position
estilo-lista-tipolist-style-type
eventos-ponteiropointer-events
exibicaodisplay
exibiçãodisplay
fatiar-borda-mascaramask-border-slice
fatiar-borda-máscaramask-border-slice
fatiar-imagem-bordaborder-image-slice
filtrofilter
filtro-fundobackdrop-filter
fim-borda-em-blocoborder-block-end
fim-borda-em-linhaborder-inline-end
fim-coluna-em-gradegrid-column-end
fim-linha-em-gradegrid-row-end
fixar-fundobackground-attachment
flexflex
flex-agruparflex-wrap
flex-comprimentoflex-basis
flex-crescimentoflex-grow
flex-direcaoflex-direction
flex-direçãoflex-direction
flex-fluxoflex-flow
flex-reduzirflex-shrink
flutuarfloat
fluxoclear
fluxo-em-gradegrid-auto-flow
fontefont
fonte-textofont-family
forma-externashape-outside
forma-margemshape-margin
fundobackground
girarrotate
gradegrid
hifenshyphens
hífenshyphens
imagem-bordaborder-image
imagem-fundobackground-image
imagem-mascaramask-image
imagem-máscaramask-image
impressao-ajuste-corprint-color-adjust
impressão-ajuste-corprint-color-adjust
incrementar-contadorcounter-increment
indentacao-textotext-indent
indentação-textotext-indent
indice-zz-index
índice-zz-index
inicio-borda-em-blocoborder-block-start
início-borda-em-blocoborder-block-start
inicio-borda-em-linhaborder-inline-start
início-borda-em-linhaborder-inline-start
inicio-borda-mascaramask-border-outset
início-borda-máscaramask-border-outset
inicio-coluna-em-gradegrid-column-start
início-coluna-em-gradegrid-column-start
inicio-insercao-em-blocoinset-block-start
início-inserção-em-blocoinset-block-start
inicio-insercao-em-linhainset-inline-start
início-inserção-em-linhainset-inline-start
inicio-linha-em-gradegrid-row-start
início-linha-em-gradegrid-row-start
inicio-margem-em-blocomargin-block-start
início-margem-em-blocomargin-block-start
inicio-margem-em-linhamargin-inline-start
início-margem-em-linhamargin-inline-start
inicio-recuo-em-blocopadding-block-start
início-recuo-em-blocopadding-block-start
inicio-recuo-em-linhapadding-inline-start
início-recuo-em-linhapadding-inline-start
insercaoinset
inserçãoinset
insercao-em-blocoinset-block
inserção-em-blocoinset-block
insercao-em-bloco-fiminset-block-end
inserção-em-bloco-fiminset-block-end
insercao-em-linhainset-inline
inserção-em-linhainset-inline
insercao-em-linha-fiminset-inline-end
inserção-em-linha-fiminset-inline-end
isolamentoisolation
justificar-conteudojustify-content
justificar-conteúdojustify-content
justificar-itensjustify-items
justificar-sejustify-self
justificar-textotext-justify
largurawidth
largura-barra-rolagemscrollbar-width
largura-bordaborder-width
largura-borda-direitaborder-right-width
largura-borda-em-blocoborder-block-width
largura-borda-em-linhaborder-inline-width
largura-borda-esquerdaborder-left-width
largura-borda-inferiorborder-bottom-width
largura-borda-mascaramask-border-width
largura-borda-máscaramask-border-width
largura-borda-superiorborder-top-width
largura-colunacolumn-width
largura-contornooutline-width
largura-fim-borda-em-blocoborder-block-end-width
largura-fim-borda-em-linhaborder-inline-end-width
largura-imagem-bordaborder-image-width
largura-inicio-borda-em-blocoborder-block-start-width
largura-início-borda-em-blocoborder-block-start-width
largura-inicio-borda-em-linhaborder-inline-start-width
largura-início-borda-em-linhaborder-inline-start-width

| largura-maxima

0.7.0

27 days ago

0.6.3

1 month ago

0.6.2

2 months ago

0.6.1

4 months ago

0.6.0

4 months ago

0.5.0

9 months ago

0.4.1

9 months ago

0.3.2

10 months ago

0.4.0

9 months ago

0.3.4

10 months ago

0.5.1

7 months ago

0.3.3

10 months ago

0.3.1

11 months ago

0.3.0

12 months ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.1

1 year ago

0.1.2

1 year ago

0.2.0

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago