## Page Histories
## To support page histories, uncomment these 0004 properties. 
## Each page should have all page versions in one input file. 
#Tikiwiki.0004.pagesplitter.property=com.atlassian.uwc.splitters.MultiPartMimeSplitter
#Tikiwiki.0004.switch.page-history-preservation=true
#Tikiwiki.0004.page-history-sortoncreate.property=false
## Get the title (and user and version and timestamp) from the metadata 
## Uncomment users-must-exist=false if you do not need the UWC to check for
## user existance before attempting to set the creator and last modifier data
Tikiwiki.0005-title-from-metadata.class=com.atlassian.uwc.converters.tikiwiki.MetadataTitle
#Tikiwiki.0005.users-must-exist.property=false
## Necessary for exported files
Tikiwiki.0010-cleanmetadata.class=com.atlassian.uwc.converters.tikiwiki.MetadataCleaner
Tikiwiki.0011-win-newline-cleaner.class=com.atlassian.uwc.converters.tikiwiki.WinNewlinesConverter
Tikiwiki.0012-escape-double-brackets.class=com.atlassian.uwc.converters.tikiwiki.EscapeBrackets
## Tables (has to be before bold to handle headers correctly)
Tikiwiki.0020-table.class=com.atlassian.uwc.converters.tikiwiki.TableConverter
## Colspan Padding: add empty cells to shorter rows when the number of cells per row is not consistent.
#Tikiwiki.0030-table-adding-colspan-padding.class=com.atlassian.uwc.converters.tikiwiki.ColspanPadder
## Lists (not much needs to be done here, except enforce whitespace)
Tikiwiki.0050-list-whitespace.java-regex=(^|\n)([*#]+)([^\s#*]){replace-with}$1$2 $3
Tikiwiki.0060-post-list-item.class=com.atlassian.uwc.converters.tikiwiki.PostListItemConverter
Tikiwiki.0070-strip-unnec-newlines.class=com.atlassian.uwc.converters.tikiwiki.NestedListNewlineRemover
## Basic Syntax
Tikiwiki.0100-noformatting.java-regex-tokenizer=~([pn]p)~(.*?)~\/\1~{replace-with}{noformat}$2{noformat}
Tikiwiki.0110-bold.java-regex=_{2}(.*?)_{2}{replace-with}*$1*
Tikiwiki.0120-italics.java-regex='{2}(.*?)'{2}{replace-with}_$1_
Tikiwiki.0130-colors.java-regex=~~#([^:]{6}):((.|\n)*?)~~{replace-with}{color:#$1}$2{color}
Tikiwiki.0135-multiline-color-words.java-regex=(?s)~~([a-zA-Z]+):(.*?)(~~){replace-with}{color:$1}$2{color}
Tikiwiki.0140-colors-words-noclosingdelim.java-regex=~~([a-zA-Z]+):((.|\n)*?)(~~|\n|$){replace-with}{color:$1}$2{color}
Tikiwiki.0150-underline.java-regex=={3}(.*?)={3}{replace-with}+$1+
Tikiwiki.0160-horizontal-rules.java-regex=(?<=\n)-{3,}(?=\n){replace-with}----
Tikiwiki.0162-3percent-to-linebreak.java-regex=(%%%){replace-with}\\\\
## Links
Tikiwiki.0200-links.class=com.atlassian.uwc.converters.tikiwiki.LinkConverter
## plaintext-links-not-linkified unlinkfies http links without link syntax. Uncomment, if you want that.
#Tikiwiki.0210-plaintext-links-not-linkified.class=com.atlassian.uwc.converters.tikiwiki.PlaintextLinkConverter
Tikiwiki.0220-anchor.java-regex=\{ANAME\(\)\}(.*?)\{ANAME\}{replace-with}{anchor:$1}
Tikiwiki.0230-notalink.java-regex=\)\)(.*?)\(\({replace-with}$1
## Headers
Tikiwiki.0300-headers.class=com.atlassian.uwc.converters.tikiwiki.HeaderConverter
Tikiwiki.0310-title.java-regex=-=(.*?)=-{replace-with}h1. $1
## Attachments - has to be before image syntax gets converted
Tikiwiki.0400-attachments.class=com.atlassian.uwc.converters.tikiwiki.AttachmentConverter
## Attachment options:
## * attachall: add all attachments (not just those referred to in the syntax),
## To use, uncomment and set value to true. default behavior is false.
## * attachall-sql: specify the sql to be used to get all attachments. 
## To use, uncomment and set the sql. Default is as described below.
## Make sure your columns provide a filename, path, user, date, and comment 
## in that order. Use ? to insert the page's name into the sql.
## * attachall-dbencoding: set the encoding property for the src db
## To use, uncomment and set the value to a valid character encoding.
## For example, setting this to iso8859-1 will transform latin/iso-8859-1 data
## to UTF-8 data.
## * imagegalids-sql: specify the sql for getting the image gallery ids.
## To use, uncomment, columns should provide results with 
## column name as: imageId (represents id), and name (represents image name).
## Note: some db will need quotes around the column names to handle case. 
## Note: You can use the 'as imageId' syntax to enforce column names.
## * filegalids-sql: specify the sql for getting the file gallery ids.
## To use, uncomment, columns should provide results with 
## column name as: fileId (represents id), and fileName (represents image name).
## Note: some db will need quotes around the column names to handle case. 
## Note: You can use the 'as fileId' syntax to enforce column names.
## * imgId-regex: Identifies image syntax that would have database ids that need
## to be replaced. To use, uncomment, and set your regex. Needs to provide:
## group 1 - start of image syntax that we want to preserve
## group 2 - image type, typically: show_image or tiki-download_file
## group 3 - id number we are trying to replace
#Tikiwiki.0400.attachments-attachall.property=false
#Tikiwiki.0400.attachments-attachall-sql.property=select filename, path, \"user\", created, comment from tiki_wiki_attachments where page=?
#Tikiwiki.0400.attachments-attachall-dbencoding.property=iso8859-1
#Tikiwiki.0400.attachments-imagegalids-sql.property=select imageId,name from tiki_images
#Tikiwiki.0400.attachments-filegalids-sql.property=select fileId, fileName from tiki_files
#Tikiwiki.0400.attachments-imgId-regex.property=
## Image Syntax Converter
Tikiwiki.0405-file2image.java-regex=(\{img.*?src=\")(tiki-download_file)(\.php.*?\}){replace-with}$1show_image$3
Tikiwiki.0410-imagesyntax-php.java-regex=\{img.*?src=.*?show_image\.php\?name=([^"]*).*?\}{replace-with}!$1!
Tikiwiki.0420-imagesyntax-html.java-regex=\{img.*?src="(?:[\w\/]*\/)?([^\/"]*)"[^}]*}{replace-with}!$1!
Tikiwiki.0430-imagesyntax-url.java-regex=\{img.*?src="(http:[^"]+)"\}{replace-with}!$1!
## Table of Contents
Tikiwiki.0500-toc.java-regex=\^?\{maketoc\}\^?{replace-with}{toc}
## Code 
Tikiwiki.0600-code-block.class=com.atlassian.uwc.converters.tikiwiki.CodeBlockConverter
## Centered (Confluence doesn't support centered out of the box, so we'll just strip out the tikiwiki syntax)
Tikiwiki.0700-centered.java-regex=::(.*?)::{replace-with}$1
## Mono
Tikiwiki.0800-monospace.class=com.atlassian.uwc.converters.tikiwiki.LeadingSpacesConverter
Tikiwiki.0810-monospace.alt.java-regex=-\+(.*?)\+-{replace-with}{{$1}}
## Panels 
Tikiwiki.0900-panel.class=com.atlassian.uwc.converters.tikiwiki.PanelConverter
Tikiwiki.0901-blank-bracket.java-regex=(\[) {replace-with}\[
Tikiwiki.0902-bracket-blank.java-regex=( \]){replace-with}\]
## For any tokenizer regex above, strip out tokens
Tikiwiki.2000-detokenize.class=com.atlassian.uwc.converters.DetokenizerConverter
