Creating and editing rules using a plain text editor.

Tabulizer is using plain text files to store all the ruleset information. What this means is that using a plain text editor you could add new rulesets and rules, remove or modify existing ones. This method is recommended only to power users as editing ruleset files directly, without the safety net of the online wizard or the backend environment makes it easy to break everything.

In this tutorial we will describe how to make small adjustments to an existing responsive rule.

Step 1

The first thing is to locate where the file that contains the rules resides. The relative path is /templates/tabulizer/rules folder, but you can find the absolute path if you click on the Status button, as shown below:

Step 2

The next step is to edit the rules file, which basically is a plain text xml file. You can use an XML editor, even though simple text editors like Notepad2 will suffice. To locate the file you need to edit just look under the Archive Filename column as shown below:

Step 3

Now it's time to make the changes. The basic structure of the file is this:


<?xml version="1.0" encoding="utf-8"?>
<rules name="rs_9rlwc6q0" title="Falcon Games Compatibility Table" style="rs_9rlwc6q0.css">
    <meta  version="1.0" ... />
    <ruleset name="rs_9rlwc6q0_1" title="The title for ruleset 1" description="The description" suffix="rs_9rlwc6q0"  >
        <rule ... ></rule>
        <rule ... ></rule>
        ...
   </ruleset>
   <ruleset name="rs_9rlwc6q0_2" title="The title for ruleset 1" description="The description" suffix="rs_9rlwc6q0"  >
        <rule ... ></rule>
        <rule ... ></rule>
        ...
   </ruleset>
</rules>
Note that the suffix among rulesets can be the same or different, but the ruleset name must be unique (i.e. no two ruleset should share the same name).
OK, let's change now the responsive rule, so it will make initially invisible two more columns. The only line we need to modify it this:
<rule element="table" range="ALL"  column_filter = "enabled columns[1:input:smart,3:select:smart,4:select:smart,5:select:smart,6:select:smart,7:select:smart,8:select:smart,9:select:smart,10:select:smart,11:select:smart,12:select:smart,13:select:smart,14:select:smart,15:select:smart,16:select:smart,17:select:smart,18:select:smart] headerrow:2 header_size:1" responsive = "3:priorities1:essential,2:essential,3:optional,4:optional,5:optional,10:invisible_column,11:invisible_column,12:invisible_column" theme = "light.css" ></rule>
To:
<rule element="table" range="ALL"  column_filter = "enabled columns[1:input:smart,3:select:smart,4:select:smart,5:select:smart,6:select:smart,7:select:smart,8:select:smart,9:select:smart,10:select:smart,11:select:smart,12:select:smart,13:select:smart,14:select:smart,15:select:smart,16:select:smart,17:select:smart,18:select:smart] headerrow:2 header_size:1" responsive = "3:priorities1:essential,2:essential,3:optional,4:optional,5:optional,10:invisible_column,11:invisible_column,12:invisible_column,13:invisible_column,14:invisible_column" theme = "light.css" ></rule>
That's it. You don't really need to understand all the details to make small changes. As you create more rules and observe their structure you will able to do more stuff with simple copy-paste commands.