# Enable this if every second line in your export is empty
#Trac.0000-duplicate_lines.java-regex=\r\n\r\n{replace-with}NEWLINE

# Page Hierarchy
## If your trac-admin dump creates a flat directory of pages 
## in which the hierarchy is maintained as url encoded filenames, then 
## use the FilenameHierarchy hierarchy-builder (default)
## If your trac-admin dump creates a system hierarchy of files that matches 
## your page hierarchy, use the FilepathHierarchy hierarchy-builder. Do also
## comment 1210 converter
Trac.0001.switch.hierarchy-builder=UseBuilder
Trac.0002.classname.hierarchy-builder=com.atlassian.uwc.hierarchies.FilenameHierarchy
#Trac.0002.classname.hierarchy-builder=com.atlassian.uwc.hierarchies.FilepathHierarchy
#Trac.0003.filepath-hierarchy-ignorable-ancestors.property=/SET/THIS/To/the/location/of/your/pages
#Trac.0004.filepath-hierarchy-ext.property=

# Preformatted text and wiki names
Trac.0015-escaped_wikiname.java-regex-tokenizer=(?<=^|\s)!([A-Z][a-z/]+[A-Z][a-z][\w/]+){replace-with}$1
Trac.0030-graphviz.java-regex-tokenizer=(?s)\{\{\{\s*#!graphviz\s*digraph[^\{]+\{(.*?)\}\s*\}\}\}{replace-with}{flowchart}$1{flowchart}
Trac.0050-preformatted.java-regex-tokenizer=(?ms)^\{{3}(.*?)^\}{3}{replace-multiline-with}{noformat}$1{noformat}

# hide horizontal rules so they dont get transformed
Trac.0055-hr.java-regex-tokenizer=(?<=^|\n)([-]{4})(?=\n){replace-with}$1

# Escape characters that have a special meaning in Confluence
Trac.0060-escape_exclamation_marks.java-regex=!{replace-with}\\!
Trac.0061-escape_minus_at_beginning.java-regex=(\s)\-{replace-with}$1\\-
Trac.0062-escape_minus_at_end.java-regex=\-(\s){replace-with}\\-$1
Trac.0063-escape_curly_braces.java-regex=([^\{][^\{])\{([^\{][^\{]){replace-with}$1\\{$2

# Formatting
Trac.0100-underlined.java-regex=(?s)__(.+?)__{replace-with}+$1+
Trac.0101-subscript.java-regex=(?s),,(.+?),,{replace-with}~$1~
Trac.0102-strikethrough.java-regex=(?s)~~(.+?)~~{replace-with}-$1-
Trac.0103-monospace1.java-regex=\{{3}(.*?)\}{3}{replace-with}{{$1}}
## backtick track syntax can be transformed to code macros (default) or monospace syntax (commented)
## If you prefer the monospace syntax, comment the default tocode 104 converter and uncomment the tomono converter
Trac.0104-monospace2-tocode.java-regex=`([^`]+)`{replace-with}{code}NEWLINE$1NEWLINE{code}
#Trac.0104-monospace2-tomono.java-regex=`([^`]+)`{replace-with}{{$1}}
Trac.0105-blockquote.java-regex=(?m)^ {2}([^\*\s].+){replace-with}bq. $1

# Lists (only works if each level is indented by 2 additional spaces) 
Trac.0200-list_unordered_level1.java-regex=(?m)^ {1}\*{replace-with}*
Trac.0201-list_unordered_level2.java-regex=(?m)^ {3}\*{replace-with}**
Trac.0202-list_unordered_level3.java-regex=(?m)^ {5}\*{replace-with}***
Trac.0203-list_unordered_level4.java-regex=(?m)^ {7}\*{replace-with}****
Trac.0210-list_numbered.java-regex=(?m)^ 1\.{replace-with}#

# Headlines (they also work in Trac with a leading space)
Trac.0300-re_h5.java-regex=(?m)^ ?={5} (.+?) ={5}{replace-with}h5. $1
Trac.0301-re_h4.java-regex=(?m)^ ?={4} (.+?) ={4}{replace-with}h4. $1
Trac.0302-re_h3.java-regex=(?m)^ ?={3} (.+?) ={3}{replace-with}h3. $1
Trac.0303-re_h2.java-regex=(?m)^ ?={2} (.+?) ={2}{replace-with}h2. $1
Trac.0304-re_h1.java-regex=(?m)^ ?={1} (.+?) ={1}{replace-with}h1. $1

# Bold and italics (and single quotes) - copied from the MoinMoin converter
Trac.0500-hide_single_quotes.java-regex=([^'])'([^']){replace-with}$1XXXSINGLEQUOTE4711XXX$2
Trac.0501-re_bold_italics.java-regex=(?s)'{5}(.*?)'{5}{replace-with}*_$1_*
Trac.0506-re_bold.java-regex=(?s)'{3}(.*?)'{3}{replace-with}*$1*
Trac.0507-re_italics.java-regex=(?s)'{2}(.*?)'{2}{replace-with}_$1_
Trac.0508-restore_single_quotes.java-regex=XXXSINGLEQUOTE4711XXX{replace-with}'

# Macros: Images, line breaks and generic
Trac.0600-macro_image_attachment_external.java-regex=(?i)\[\[Image\(http(?:.*?)raw-attachment\/wiki\/([^\)]+)\)\]\]{replace-with}!$1!
Trac.0601-macro_image_on_other_page.java-regex=(?i)\[\[Image\(wiki:([^:]+):([^\)]+)\)\]\]{replace-with}[[Image($1^$2)]]
Trac.0602-macro_image_attachment.java-regex=(?i)\[\[Image\(([^\)]+)\)\]\]{replace-with}!$1!
Trac.0603-image_params1.java-regex=(?<!\\)!([^!,]+),\s*(\w[^!]+)(?<!\\)!{replace-with}!$1|$2!
Trac.0604-image_params2.class=com.atlassian.uwc.converters.trac.ImageParamConverter
Trac.0640-pageoutline-toc.java-regex=(?i)\[\[PageOutline(\([^\)]+\))?\]\]{replace-with}{toc}
Trac.0650-macro_br.java-regex=(?i)\[\[BR\]\] ?{replace-with}NEWLINE
Trac.0660-doublebracket-links.java-regex=\[{2}([^\]]+)\]{2}{replace-with}[$1]
## This macros converter won't get called with 0660 enabled, so I've commented it for now. 
#Trac.0699-macros.java-regex=\[{2}([^\]]+)\]{2}{replace-with}{$1}

# Tables - copied from the MoinMoin converter
# BUG: || gets replaced in mormal text
Trac.1099-tables.java-regex=\|{2}<([^>]*)>{replace-with}||
Trac.1100-tables.java-regex=\|{20}([^\|]+)\|{2}{replace-with}|| | | | |$1| | | | | ||
Trac.1101-tables.java-regex=\|{18}([^\|]+)\|{2}{replace-with}|| | | | |$1| | | | ||
Trac.1102-tables.java-regex=\|{16}([^\|]+)\|{2}{replace-with}|| | | |$1| | | | ||
Trac.1103-tables.java-regex=\|{14}([^\|]+)\|{2}{replace-with}|| | | |$1| | | ||
Trac.1104-tables.java-regex=\|{12}([^\|]+)\|{2}{replace-with}|| | |$1| | | ||
Trac.1105-tables.java-regex=\|{10}([^\|]+)\|{2}{replace-with}|| | |$1| | ||
Trac.1106-tables.java-regex=\|{8}([^\|]+)\|{2}{replace-with}|| |$1| | ||
Trac.1107-tables.java-regex=\|{6}([^\|]+)\|{2}{replace-with}|| |$1| ||
Trac.1108-tables.java-regex=\|{4}([^\|]+)\|{2}{replace-with}||$1| ||
Trac.1109-tables.java-regex=\|{2}{replace-with}|

#Links
Trac.1200-wikilink_prefix.java-regex=\[wiki:{replace-with}[
Trac.1201-wikilink_with_quotes.java-regex-tokenizer=\[\"([^\"]+)\"\]{replace-with}[$1]
Trac.1202-attachment_link.java-regex-tokenizer=\[attachment:{replace-with}[^
Trac.1203-link_with_title_pipe.java-regex-tokenizer=\[([^|\]]+)\|([^\]]+)\]{replace-with}[$2|$1]
Trac.1204-link_with_title_space.java-regex=\[([^ \]]+) ([^\]]+)\]{replace-with}[$2|$1]

## For any tokenizer regex above, strip out tokens
Trac.2000-detokenize.class=com.atlassian.uwc.converters.DetokenizerConverter

## Remove everything but leaf node part of link from link target. Works with
## FilenameHierarchy. If you are not using the FilenameHierarchy, comment this
## converter.
Trac.2100-hierarchylink.class=com.atlassian.uwc.converters.trac.FilenameHierarchyLinkConverter

# Attachments
Trac.3000-attachments.class=com.atlassian.uwc.converters.trac.AttachmentConverter
