Class: PandocAbnt::ListaFilter
- Inherits:
-
Object
- Object
- PandocAbnt::ListaFilter
- Defined in:
- lib/pandoc_abnt/lista_filter.rb
Overview
Essa classe é responsável por filtrar as listas para adaptá-las as normas da ABNT.
Instance Method Summary collapse
-
#filtra_json(pandoc_json_tree) ⇒ Object
Converte a seguinte lista:.
-
#lista?(node) ⇒ Boolean
Verifica se node é um parágrafo que inicia com “Fonte:”.
- #lista_nao_ordenada?(node) ⇒ Boolean
- #lista_ordenada?(node) ⇒ Boolean
- #lista_ordenada_por_letras?(node) ⇒ Boolean
Instance Method Details
#filtra_json(pandoc_json_tree) ⇒ Object
Converte a seguinte lista:
a) item 1. b) item 2. c) item 3.
Para:
a) item 1; b) item 2; c) item 3.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/pandoc_abnt/lista_filter.rb', line 44 def filtra_json(pandoc_json_tree) # Exemplo de código: # {"blocks":[{"t":"OrderedList","c":[[1,{"t":"LowerAlpha"},{"t":"OneParen"}],[[{"t":"Plain","c":[{"t":"Str","c":"item"},{"t":"Space"},{"t":"Str","c":"1."}]}],[{"t":"Plain","c":[{"t":"Str","c":"item"},{"t":"Space"},{"t":"Str","c":"2."}]}],[{"t":"Plain","c":[{"t":"Str","c":"item"},{"t":"Space"},{"t":"Str","c":"3."}]}]]]}],"pandoc-api-version":[1,17,0,4],"meta":{}} tree = JSON.parse(pandoc_json_tree) = tree["meta"] blocks = tree["blocks"] api = tree["pandoc-api-version"] filtrados = [] anterior = nil if not blocks raise ArgumentError, "Problema no argumento passado: #{pandoc_json_tree}" end blocks.each do |node| if (lista?(node)) then lista_modificada = processa_items_da_lista(node) filtrados << lista_modificada else filtrados << node end end JSON.generate({"blocks"=>filtrados, "pandoc-api-version" => api, "meta" => }) end |
#lista?(node) ⇒ Boolean
Verifica se node é um parágrafo que inicia com “Fonte:”
12 13 14 |
# File 'lib/pandoc_abnt/lista_filter.rb', line 12 def lista?(node) lista_ordenada?(node) or lista_nao_ordenada?(node) end |
#lista_nao_ordenada?(node) ⇒ Boolean
20 21 22 |
# File 'lib/pandoc_abnt/lista_filter.rb', line 20 def lista_nao_ordenada?(node) node["t"] == "BulletList" end |
#lista_ordenada?(node) ⇒ Boolean
16 17 18 |
# File 'lib/pandoc_abnt/lista_filter.rb', line 16 def lista_ordenada?(node) node["t"] == "OrderedList" end |
#lista_ordenada_por_letras?(node) ⇒ Boolean
24 25 26 27 |
# File 'lib/pandoc_abnt/lista_filter.rb', line 24 def lista_ordenada_por_letras?(node) # node: {"t"=>"OrderedList", "c"=>[[1, {"t"=>"LowerAlpha"}, {"t"=>"OneParen"}], [[{"t"=>"Plain", "c"=>[{"t"=>"Str", "c"=>"item"}, {"t"=>"Space"}, {"t"=>"Str", "c"=>"1."}]}], [{"t"=>"Plain", "c"=>[{"t"=>"Str", "c"=>"item"}, {"t"=>"Space"}, {"t"=>"Str", "c"=>"2."}]}], [{"t"=>"Plain", "c"=>[{"t"=>"Str", "c"=>"item"}, {"t"=>"Space"}, {"t"=>"Str", "c"=>"3."}]}]]]} node["t"] == "OrderedList" and node["c"][0][1]["t"]=="LowerAlpha" end |