diff --git a/margin-notes/margin-notes.lua b/margin-notes/margin-notes.lua index 5881fdb..253612c 100644 --- a/margin-notes/margin-notes.lua +++ b/margin-notes/margin-notes.lua @@ -87,13 +87,13 @@ end local config = {} -function add_rendering(config, class, +local function add_rendering(cfg, class, body_text, note_text, docx_body_text, docx_note_text, odt_body_text, odt_note_text, csname, position) -- The values are plain strings (not the empty string!) or nil. - config[class] = { + cfg[class] = { body_text = body_text, note_text = note_text, docx_body_text = docx_body_text, @@ -117,19 +117,19 @@ local function get_renderings_config(meta) for key, value in pairs(meta) do if key == 'mrgnn-define-renderings' then for i = 1, #value do - this_value = value[i] + local definition = value[i] add_rendering(config, - meta_to_str(this_value.class), - meta_to_str(this_value['body-text']), - meta_to_str(this_value['note-text']), - meta_to_str(this_value['docx-body-text']), - meta_to_str(this_value['docx-note-text']), - meta_to_str(this_value['odt-body-text'] - or this_value['body-text']), - meta_to_str(this_value['odt-note-text'] - or this_value['note-text']), - meta_to_str(this_value['csname']), - meta_to_str(this_value['position']) or POS_DEFAULT + meta_to_str(definition.class), + meta_to_str(definition['body-text']), + meta_to_str(definition['note-text']), + meta_to_str(definition['docx-body-text']), + meta_to_str(definition['docx-note-text']), + meta_to_str(definition['odt-body-text'] + or definition['body-text']), + meta_to_str(definition['odt-note-text'] + or definition['note-text']), + meta_to_str(definition['csname']), + meta_to_str(definition['position']) or POS_DEFAULT ) end end @@ -256,6 +256,7 @@ local function get_replacement(placeholder, a plain string otherwise. Markdown is interpreted in the first case only. ]]-- + local replacement if placeholder == 'content' then if replacement_is_list then replacement = instance_content @@ -266,7 +267,7 @@ local function get_replacement(placeholder, local key = get_substring(placeholder, #'attr.' + 1) if replacement_is_list then local replacement_markdown = instance_attr[key] - or '**' .. UNDEFINED .. '**' + or ('**' .. UNDEFINED .. '**') replacement = to_pandoc_inlines(replacement_markdown) else replacement = instance_attr[key] or UNDEFINED @@ -457,17 +458,17 @@ local function template_to_function(template) end end -local function define_rendering_functions(meta) +local function define_rendering_functions() local format_prefix = '' if FORMAT == 'opendocument' then format_prefix = 'odt_' elseif FORMAT == 'openxml' then format_prefix = 'docx_' end - for class_name, class_config in pairs(config) do - config[class_name].render = {} + for _, class_config in pairs(config) do + class_config.render = {} for _, part in ipairs({'body', 'note'}) do - config[class_name].render[part] = + class_config.render[part] = template_to_function(class_config[format_prefix .. part .. '_text']) end end @@ -484,7 +485,7 @@ end local function Meta(meta) get_renderings_config(meta) - define_rendering_functions(meta) + define_rendering_functions() set_macro_definition(meta) return meta end @@ -544,9 +545,9 @@ end local function render_margin_notes(span) for class_name, class_config in pairs(config) do if span.classes:includes(class_name) then - local render_note = config[class_name].render.note - local render_body = config[class_name].render.body - local note_position = config[class_name].position + local render_note = class_config.render.note + local render_body = class_config.render.body + local note_position = class_config.position local note_id = span.identifier local margin_note = {} local body = {} @@ -561,7 +562,7 @@ local function render_margin_notes(span) local span_with_note = {} if note_position == 'before' then span_with_note = margin_note - insert_in_table(span_with_note, span) + insert_in_table(span_with_note, span) elseif note_position == 'after' then span_with_note = { span, unpack_table(margin_note) } else