summaryrefslogtreecommitdiff
path: root/support/make4ht/domfilters/make4ht-fixinlines.lua
blob: 25489f59ca5e2c881e0f908259ed18244e5923f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
local inline_elements = {
  b=true,
  big=true,
  i=true,
  small=true,
  tt=true,
  abbr=true,
  acronym=true,
  cite=true,
  code=true,
  dfn=true,
  em=true,
  kbd=true,
  strong=true,
  samp=true,
  time=true,
  var=true,
  a=true,
  bdo=true,
  br=true,
  img=true,
  map=true,
  object=true,
  q=true,
  script=true,
  span=true,
  sub=true,
  sup=true,
  button=true,
  input=true,
  label=true,
  select=true,
  textarea=true,
  mn=true,
  mi=true
}


local function fix_inlines(obj)
  local settings = get_filter_settings "fixinlines"
  local inline_elements = settings.inline_elements or inline_elements
  local nodes = obj:get_path("html body")
  obj:traverse_node_list(nodes, function(jej) 
    if jej._type == "ELEMENT" then
      local name = string.lower(jej._name)
      -- local parent = jej:get_parent_node()
      if inline_elements[name] then
        local new = obj:create_element("p" )
        new:add_child_node(obj:copy_node(jej))
        jej:replace_node(new)
      end
    end
  end)
  return obj
end

return fix_inlines