Skip to content

Commit a58fd10

Browse files
committed
Fixing RegEx to match other pattners and ignore page break
1 parent aa77b68 commit a58fd10

File tree

2 files changed

+17
-44
lines changed

2 files changed

+17
-44
lines changed

ferramentas/chapter.ini

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,7 @@ slice_objects = Objetos fatia
4242
flat_file_invoce = .Itens de um arquivo tabular de fatura
4343
assigning_to_slices = Atribuindo a fatias
4444
ex_list_of_lists_ok = .Uma lista com três listas de tamanho 3 pode representar um tabuleiro de jogo da velha
45-
'_', '_', '_'], ['_', '_', '_'], ['_', '_', '_' = >>> board[1][2] = 'X' <2>
46-
'_', '_', '_'], ['_', '_', 'X'], ['_', '_', '_' = ----
4745
ex_list_of_lists_wrong = .Uma lista com três referências para a mesma lista é inútil
48-
'_', '_', '_'], ['_', '_', '_'], ['_', '_', '_' = >>> weird_board[1][2] = 'O' <2>
49-
'_', '_', 'O'], ['_', '_', 'O'], ['_', '_', 'O' = ----
50-
'_', '_', '_'], ['_', '_', '_'], ['_', '_', '_' = >>> board[2][0] = 'X'
51-
'_', '_', '_'], ['_', '_', '_'], ['X', '_', '_' = ----
5246
aug_assign_seqs = Atribuição aumentada com sequências
5347
tuple_puzzler = Um quebra-cabeça com a atribuição +=
5448
ex_aug_item_assign_question = .Um enigma
@@ -61,8 +55,6 @@ ex_array_io = .Criando, armazenando e carregando uma grande array de números de
6155
list_x_array_attrs_tbl = .Métodos e atributos encontrados em `list` ou `array` (os métodos descontinuados de array e aqueles implementados também pir object foram omitidos para preservar espaço)
6256
memoryview_sec = Views de memória
6357
ex_memoryview_demo = .Manipular 6 bytes de memória como views de 1×6, 2×3, e 3×2
64-
0, 1, 2], [3, 4, 5 = >>> m3 = m1.cast('B', [3, 2]) # <4>
65-
0, 1], [2, 3], [4, 5 = >>> m2[1,1] = 22 # <5>
6658
ex_memoryview_evil_demo = .Mudando o valor de um item em um array de inteiros de 16 bits trocando apenas o valor de um de seus bytes
6759
numpy_sec = NumPy
6860
ex_numpy_array = .Operações básicas com linhas e colunas em uma `numpy.ndarray`
@@ -75,7 +67,7 @@ sequences_soapbox = .Ponto de Vista
7567
modern_dict_syntax_sec = A sintaxe moderna dos dicts
7668
dictcomp_sec = Compreensões de dict
7769
example3-1 = .Exemplos de compreensões de `dict`
78-
dict_unpacking_sec = [role="pagebreak-before less_space"]
70+
dict_unpacking_sec = Desempacotando mapeamentos
7971
pattern_matching_mappings_sec = Pattern matching com mapeamentos
8072
dict_match_ex = .creator.py: `get_creators()` extrai o nome dos criadores em registros de mídia
8173
mapping_uml = .Diagrama de classe simplificado para `MutableMapping` e suas superclasses de `collections.abc` (as setas de herança apontam das subclasses para as superclasses; nomes em itálico indicam classes e métodos abstratos
@@ -96,22 +88,22 @@ chainmap_sec = collections.ChainMap
9688
sublcassing_userdict_sec = Criando subclasses de UserDict em vez de dict
9789
ex_strkeydict = .`StrKeyDict` sempre converte chaves que não sejam strings para `str` na inserção, atualização e busca
9890
ex_MappingProxyType = .`MappingProxyType` cria uma instância somente de leitura de `mappingproxy` a partir de um `dict`
99-
dictionary_views_sec = [role="pagebreak-before less_space"]
91+
dictionary_views_sec = Views de dicionários
10092
ex_dict_values = .O método `.values()` devolve uma view dos valores em um `dict`
10193
consequences_dict_internals = Consequências práticas da forma como dict funciona
10294
ex_set_ops_ex = .Conta as ocorrências de agulhas (_needles_) em um palheiro (_haystack_), ambos do tipo set
10395
ex_set_loop_ex = .Conta as ocorrências de agulhas (_needles_) em um palheiro (_haystack_); mesmo resultado final do <<ex_set_ops_ex>>
10496
ex_set_ops_ex2 = .Conta as ocorrências de agulhas (_needles_) em um palheiro (_haystack_); essas linhas funcionam para qualquer tipo iterável
10597
ex_setcomp = .Cria um conjunto de caracteres Latin-1 que tenham a palavra "SIGN" em seus nomes Unicode
106-
consequences_set_sec = [role="pagebreak-before less_space"]
98+
consequences_set_sec = Consequências práticas da forma de funcionamento dos conjuntos
10799
set_op_section = Operações de conjuntos
108100
set_uml = .Diagrama de classes UML simplificado para `MutableSet` e suas superclasses em `collections.abc` (nomes em itálico são classes e métodos abstratos; métodos de operadores reversos foram omitidos por concisão).
109101
set_operators_tbl = .Operações matemáticas com conjuntos: esses métodos ou produzem um novo conjunto ou atualizam o conjunto alvo no mesmo lugar, se ele for mutável
110102
set_comparison_tbl = .Operadores e métodos de comparação de conjuntos que devolvem um booleano
111103
set_methods_tbl = .Métodos adicionais de conjuntos
112104
set_ops_dict_views_sec = Operações de conjuntos em views de dict
113105
view_methods_tbl = .Métodos implementados por `frozenset`, `dict_keys`, e `dict_items`
114-
further_reading_dict = [role="pagebreak-before less_space"]
106+
further_reading_dict = Leitura complementar
115107

116108
[strings_bytes_files]
117109
ex_encode_decode = .Codificando e decodificando
@@ -217,8 +209,6 @@ deep_x_shallow_copies = Cópias profundas e cópias rasas
217209
ex_bus1 = .Bus pega ou deixa passageiros
218210
ex_bus1_console = .Os efeitos do uso de `copy` versus `deepcopy`
219211
ex_cycle1 = .Referências cíclicas: `b` tem uma referência para `a` e então é concatenado a `a`; ainda assim, `deepcopy` consegue copiar `a`.
220-
...], 30 = >>> from copy import deepcopy
221-
...], 30 = ----
222212
ex_param_pass = .Uma função pode mudar qualquer objeto mutável que receba
223213
mutable_default_parameter_sec = Porque evitar tipos mutáveis como default em parâmetros
224214
ex_haunted_bus = .Uma classe simples ilustrando o perigo de um default mutável
@@ -344,7 +334,7 @@ ex_clockdecoparam_demo1 = .clockdeco_param_demo1.py
344334
ex_clockdecoparam_demo2 = .clockdeco_param_demo2.py
345335
clockdeco_param_cls_ex = .Módulo clockdeco_cls.py: decorador parametrizado `clock`, implementado como uma classe
346336
decorator_further = Leitura complementar
347-
closures_soapbox = [role="pagebreak-before less_space"]
337+
closures_soapbox = .Ponto de vista
348338

349339
[rethinking_design_patterns]
350340
strategy_case_study = Estudo de caso: refatorando Estratégia
@@ -428,7 +418,6 @@ zip_box = .O fantástico zip
428418
zip_demo = .A função embutida `zip` trabalhando
429419
ex_vector_v5 = .vector_v5.py: doctests e todo o código da versão final da classe `Vector`; as notas explicativas enfatizam os acréscimos necessários para suportar `+__format__+`
430420
sequence_hacking_soapbox = .Ponto de vista
431-
1, 2, 3], [40, 50, 60], [9, 8, 7 = >>> import functools
432421

433422
[ifaces_prot_abc]
434423
type_systems_described = .A metade superior descreve abordagens de checagem de tipo durante a execução usando apenas o interpretador Python; a metade inferior requer um verificador de tipo estático externo, como o Mypy ou um IDE como o PyCharm. Os quadrantes da esquerda se referem a tipagem baseada na estrutura do objeto - isto é, dos métodos oferecidos pelo objeto, independente do nome de sua classe ou superclasses; os quadrantes da direita dependem dos objetos terem tipos explicitamente nomeados: o nome da classe do objeto, ou o nome de suas superclasses.
@@ -552,7 +541,7 @@ type_hints_in_classes_soapbox = .Ponto de Vista
552541
[operator_overloading]
553542
op_overloading_101_sec = Introdução à sobrecarga de operadores
554543
ex_vector_v6_unary = .vector_v6.py: unary operators - and + added to <<ex_vector_v5>>
555-
when_plus_x_sec = [role="pagebreak-before less_space"]
544+
when_plus_x_sec = .Quando x e +x não são iguais
556545
ex_unary_plus_decimal = .Uma mudança na precisão do contexto aritmético pode fazer `x` se tornar diferente de `+x`
557546
ex_unary_plus_counter = .O + unário produz um novo `Counter`sem as contagens negativas ou zero
558547
overloading_plus_sec = Sobrecarregando + para adição de Vector
@@ -731,10 +720,10 @@ proc_pool_py_output = .Saída de proc_pool.py
731720
demo_executor_map_ex = .demo_executor_map.py: Uma demonstração simples do método map de `ThreadPoolExecutor`
732721
demo_executor_map_run = .Amostra da execução de demo_executor_map.py, do <<demo_executor_map_ex>>
733722
flags2_sec = Download com exibição do progresso e tratamento de erro
734-
careful_testing_clients = [WARNING]
723+
careful_testing_clients = .Tenha cuidado ao testar clientes concorrentes
735724
flags2_progress_fig = .Acima, à esquerda: flags2_threadpool.py rodando com a barra de progresso em tempo real gerada pelo tqdm; Abaixo, à direita: mesma janela do terminal após o script terminar de rodar.
736725
flags2_help_demo = .Tela de ajuda dos scripts da série flags2
737-
setting_up_servers_box = [NOTE]
726+
setting_up_servers_box =
738727
flags2_sequential_run = .Rodando flags2_sequential.py com todos os defaults: `site LOCAL`, as 20 bandeiras dos países mais populosos, 1 conexão concorrente
739728
flags2_threadpool_run = .Roda flags2_threadpool.py para obter do servidor `DELAY` todas as bandeiras com prefixos de códigos de país A, B ou C
740729
flags2_asyncio_run = .Roda flags2_asyncio.py para baixar 100 bandeiras (`-al 100`) do servidor `ERROR`, usando 100 requisições concorrentes (`-m 100`)

ferramentas/references_finder.py

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,20 @@
11
# Isso é um rascunho
22
import re
33

4-
book_dir = __file__[:-35]
5-
chapter_dir = "capitulos/"
6-
chapter1 = "cap01.adoc"
7-
8-
9-
F = open(book_dir+chapter_dir+chapter1,"r",encoding="utf-8")
10-
f = F.read()
11-
F.close()
12-
13-
14-
#com regex
15-
4+
book_dir = __file__[:-32]
165

176
list_of_files = [book_dir+"capitulos/cap%02d.adoc"%i for i in range(1,25)]
187

19-
208
def find_brackets(f):
21-
brack_re = re.compile('\[\[[\w &]*\]\]')
9+
brack_re = re.compile('\[(\[[\w-]+\])\]\n+(?:\[[\w=" -]+\]\n)?=* ?(.*)')
2210
list_brack = re.findall(brack_re,f)
2311
return list_brack
2412

25-
def find_brackets2(f):
26-
brack_re = re.compile('(\[\[.*\]\])\n+=* ?(.*)')
27-
list_brack = re.findall(brack_re,f)
28-
return list_brack
29-
30-
def find_markdown():
31-
pass
32-
3313

14+
def find_LTRT(f):
15+
ltrt_re = re.compile('<<([\w_]+)>>')
16+
list_ltrt = re.findall(ltrt_re,f)
17+
return list_ltrt
3418

3519
def find_all_brackets():
3620
dot_ini = ""
@@ -41,12 +25,12 @@ def find_all_brackets():
4125
F = open(files[i],"r",encoding="utf-8")
4226
f = F.read()
4327
F.close()
44-
L = find_brackets2(f) #Lista das Tuplas
45-
dot_ini = dot_ini+"\n"+L[0][0][1:-1]+"\n" # Remove a tupla do cap
28+
L = find_brackets(f) #Lista das Tuplas
29+
dot_ini = dot_ini+"\n"+L[0][0]+"\n" # Remove a tupla do título do cap
4630
L = L[1:] # Tuplas do cap
4731
for i in L:
4832
j = list(i)
49-
j[0]=j[0][2:-2] # Remove os [[ ]]
33+
j[0]=j[0][1:-1] # Remove os [[ ]] antes de escrever no arquivo
5034
dot_ini = dot_ini+" = ".join(j)+"\n"
5135

5236
out = open("chapter.ini","w",encoding="utf-8")

0 commit comments

Comments
 (0)