vega_lite_4 0.9.1

rust api for vega-lite v4
Documentation
import sys
import re

change_next_field = False

with open(sys.argv[1], 'r', encoding="utf-8", errors='replace') as f:
    with open(sys.argv[2], 'w+', encoding="utf-8", errors='replace') as t:
        for line in f:
            if "/// " in line and 'If `null`,' in line:
                change_next_field = True
            if "/// " in line and 'If set to `null`,' in line:
                change_next_field = True
            if "/// " in line and 'Set to null to disable' in line:
                change_next_field = True
            if "/// " in line and 'Set to `null`' in line:
                change_next_field = True
            if "/// " in line and ', or `null`' in line:
                change_next_field = True
            if "/// " in line and '`null` indicating no sort.' in line:
                change_next_field = True
            if "/// " in line and 'The stroke color.' in line:
                change_next_field = True

            if change_next_field and re.search("^[^/]*pub \w*: Option<", line):
                t.write(re.sub(r"pub (\w*): Option<",
                    r'#[serde(default, skip_serializing_if = "RemovableValue::is_default")] #[builder(default)] pub \1: RemovableValue<',
                    line
                ))
                change_next_field = False
            else:
                t.write(line)