Last active
November 15, 2023 11:57
-
-
Save moseskamau338/56ad7ec402acf42c772d0a7246f2884e to your computer and use it in GitHub Desktop.
Sample text filters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export interface Filter { | |
label: string; | |
value: string; | |
key: string; | |
children?: Filter[]; | |
fields?: any[], | |
user_input_rows?: UserInputRow[]; | |
} | |
export interface UserInputRow { | |
label: string; | |
key?: string; | |
fields?: FormField[]; | |
user_input_rows?: UserInputRow[]; | |
} | |
export interface FormField { | |
type: string; | |
options?: FormFieldOption[]; | |
label?: string; | |
component?: string; | |
data_type?: string; | |
value: string, | |
placeholder?: string; | |
} | |
export interface FormFieldOption { | |
label: string; | |
value: string; | |
key: string; | |
user_input_rows?: UserInputRow[]; | |
} | |
export interface InputBoxOption { | |
type?: string; | |
data_type?: string; | |
label?: string; | |
key: string; | |
value?: any; | |
placeholder?: string; | |
} | |
export const form_fields = { | |
input_box: (options?: InputBoxOption) => { | |
function getDataType(){ | |
let type = '' | |
type = options.type === 'checkbox' ? 'boolean' : | |
options.type === 'number' ? 'number' : | |
'string' | |
return type | |
} | |
return { | |
type: 'text', | |
placeholder:'Date | Number | etc...', | |
value: null, | |
data_type: getDataType(), | |
...options | |
} | |
}, | |
select: (options?:any) => { | |
return { | |
type: 'select', | |
options:[], | |
value: null, | |
data_type: 'string', | |
...options | |
} | |
}, | |
} | |
// globals | |
const reuse = { | |
start_position :[ | |
{ | |
label:'', | |
fields: [ | |
form_fields.select({ | |
options:[ | |
{ | |
label:'Text match after', | |
value:'text_match_after', | |
user_input_rows: [ | |
{ | |
label:'', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields:[ | |
form_fields.input_box({key:'text_match_after', data_type: 'string'}), | |
] | |
}, | |
] | |
}, | |
{ | |
label:'', | |
key:'settings', | |
fields:[ | |
form_fields.input_box({ key:'case_sensitive',label: 'Case sensitive', type: 'checkbox'}), | |
form_fields.input_box({ key:'beginning_of_line',label: 'Beginning of line', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Text match including', | |
value: 'text_match_including', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields:[ | |
form_fields.input_box({key:'text_match_including', placeholder:'Include...'}), | |
] | |
}, | |
{ | |
label:'', | |
key:'settings', | |
fields:[ | |
form_fields.input_box({ key:'case_sensitive',label: 'Case sensitive', type: 'checkbox'}), | |
form_fields.input_box({ key:'beginning_of_line',label: 'Beginning of line', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'After [N] lines', | |
value: 'after_n_lines', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'after_n_lines',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'After [N] words', | |
value: 'after_n_words', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'after_n_words',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'After [N] characters', | |
value: 'after_n_characters', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'after_n_characters',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'After first empty line', | |
value: 'after_first_empty_line', | |
key: 'after_first_empty_line' | |
}, | |
{ | |
label:'After [N] consecutive empty lines', | |
value:'after_n_consecutive_empty_lines', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'after_n_consecutive_empty_lines',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Keep [N] lines', | |
value:'keep_n_lines', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'keep_n_lines',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Keep [N] words', | |
value:'keep_n_words', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'keep_n_words',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Keep [N] characters', | |
value:'keep_n_characters', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'keep_n_characters', type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
} | |
], | |
placeholder:'Start Position' | |
}) | |
] | |
} | |
], | |
end_position :[ | |
{ | |
label:'', | |
fields: [ | |
form_fields.select({ | |
options:[ | |
{ | |
label:'End of line', | |
value:'end_of_line', | |
key:'end_of_line', | |
}, | |
{ | |
label:'End of content', | |
value:'end_of_content', | |
key:'end_of_content', | |
}, | |
{ | |
label:'Text match before', | |
value:'text_match_before', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields:[ | |
form_fields.input_box({key:'text_match_before'}), | |
] | |
}, | |
{ | |
label:'', | |
key:'settings', | |
fields:[ | |
form_fields.input_box({ key:'case_sensitive',label: 'Case sensitive', type: 'checkbox'}), | |
form_fields.input_box({ key:'beginning_of_line',label: 'Beginning of line', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Text match including', | |
value: 'text_match_including', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields:[ | |
form_fields.input_box({key:'text_match_including'}), | |
] | |
}, | |
{ | |
label:'', | |
key:'settings', | |
fields:[ | |
form_fields.input_box({ key:'case_sensitive',label: 'Case sensitive', type: 'checkbox'}), | |
form_fields.input_box({ key:'beginning_of_line',label: 'Beginning of line', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'First empty line', | |
value:'first_empty_line', | |
key:'first_empty_line', | |
}, | |
{ | |
label:'Before [N] consecutive empty lines', | |
value:'before_n_consecutive_empty_lines', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'before_n_consecutive_empty_lines',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'First blank space', | |
value:'first_blank_space', | |
key:'first_blank_space', | |
}, | |
{ | |
label:'After [N] lines', | |
value: 'after_n_lines', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'after_n_lines',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'After [N] words', | |
value: 'after_n_words', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'after_n_words',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'After [N] characters', | |
value: 'after_n_characters', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'after_n_characters',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Remove [N] lines', | |
value:'remove_n_lines', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'remove_n_lines',type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Remove [N] words', | |
value:'remove_n_words', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'remove_n_words', type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
}, | |
{ | |
label:'Remove [N] characters', | |
value:'remove_n_characters', | |
user_input_rows: [ | |
{ | |
label:'', | |
fields: [ | |
form_fields.input_box({ key:'remove_n_characters', type: 'number', placeholder:'e.g. 3'}), | |
] | |
} | |
] | |
} | |
], | |
placeholder:'End Position' | |
}) | |
] | |
} | |
], | |
} | |
export const filters: Filter[] = [ | |
{ | |
label:'Crop Text', | |
value:'crop_text', | |
key:'crop_text', | |
children:[ | |
{ | |
label:'Specify Start Position', | |
value:'crop_text.specify_start_position', | |
key:'crop_text.specify_start_position', | |
user_input_rows: JSON.parse(JSON.stringify(reuse.start_position)) | |
}, | |
{ | |
label:'Specify End Position', | |
value:'crop_text.specify_end_position', | |
key:'crop_text.specify_end_position', | |
user_input_rows: JSON.parse(JSON.stringify(reuse.end_position)) | |
}, | |
{ | |
label:'Specify Section', | |
value:'crop_text.specify_section', | |
key:'crop_text.specify_section', | |
user_input_rows: [ | |
{ | |
label:'', | |
key:'start_position', | |
user_input_rows: JSON.parse(JSON.stringify(reuse.start_position)) | |
}, | |
{ | |
label:'', | |
key:'end_position', | |
user_input_rows: JSON.parse(JSON.stringify(reuse.end_position)) | |
}, | |
{ | |
label:'', | |
key:'over_all_settings', | |
user_input_rows:[ | |
{ | |
label:'', | |
fields:[ | |
form_fields.input_box({type:'checkbox', key:'find_all_sections', label:'Find All Sections'}), | |
form_fields.input_box({type:'checkbox', key:'remove_sections', label:'Remove Section(s)'}), | |
] | |
} | |
] | |
} | |
] | |
}, | |
] | |
}, | |
{ | |
label: 'Format Text', | |
value: 'format_text', | |
key: 'format_text', | |
children: [ | |
{ | |
label: 'Remove blank spaces', | |
value:'format_text.remove_blank_spaces', | |
key:'format_text.remove_blank_spaces', | |
user_input_rows:[ | |
{ | |
label:'', | |
fields:[ | |
form_fields.select({options:[ | |
{label:'All blank spaces', key:'all_blank_spaces', value:'all_blank_spaces'}, | |
{label:'Trailing blank spaces', key:'trailing_blank_spaces', value:'trailing_blank_spaces'}, | |
{label:'Multiple blank spaces', key:'multiple_blank_spaces', value:'multiple_blank_spaces'}, | |
]}) | |
] | |
} | |
] | |
}, | |
{ label: 'Remove empty lines', key:'format_text.remove_empty_lines', value:'remove_empty_lines', }, | |
{ label: 'Remove line breaks', key:'format_text.remove_line_breaks', value:'remove_line_breaks', }, | |
{ | |
label: 'Keep lines where...', | |
value:'format_text.keep_lines_where', | |
key:'format_text.keep_lines_where', | |
user_input_rows:[ | |
{ | |
label:'', | |
fields:[ | |
form_fields.select({ | |
options:[ | |
{ | |
label: 'has a value', | |
value:'has_a_value', | |
key:'has_a_value', | |
}, | |
{ | |
label: 'is empty', | |
value:'is_empty', | |
key:'is_empty', | |
}, | |
{ | |
label: 'contains a value', | |
value:'contains_a_value', | |
key:'contains_a_value', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'contains_a_value'}), | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({key:'case_sensitive',label: 'Case sensitive', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
{ | |
label: 'does not contain a value', | |
value:'does_not_contain_a_value', | |
key:'does_not_contain_a_value', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'does_not_contain_a_value'}), | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({key:'case_sensitive', label: 'Case sensitive', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
{ label: 'has digits only [0-9]', key:'has_only_digits', value:'has_only_digits', }, | |
{ label: 'does not have digits at all', key:'does_not_have_digits_at_all', value:'does_not_have_digits_at_all', }, | |
{ label: 'has letters only [A-Z,a-z]', key:'has_letters_only', value:'has_letters_only' }, | |
{ label: 'does not have letters at all', key:'does_not_have_letter_at_all', value:'does_not_have_letter_at_all' }, | |
{ label: 'is a float number [1.0,2.4,5.7]', key:'is_a_float_number', value:'is_a_float_number' }, | |
{ label: 'is not a float number', key:'is_not_a_float_number', value:'is_not_a_float_number', }, | |
{ | |
label: 'matches a regex pattern', | |
value:'matches_a_regex_pattern', | |
key:'matches_a_regex_pattern', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'regex'}), | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({key:'case_sensitive', label: 'Case sensitive', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
{ | |
label: 'does not match a regex pattern', | |
value:'does_not_match_a_regex_pattern', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'does_not_match_a_regex_pattern'}) | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({key:'case_sensitive', label: 'Case sensitive', type: 'checkbox'}) | |
] | |
}, | |
] | |
}, | |
] | |
}) | |
] | |
} | |
] | |
}, | |
{ | |
label: 'Fallback value', | |
value:'format_text.fall_back_value', | |
key:'format_text.fall_back_value', | |
user_input_rows:[ | |
{ | |
label: '', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'value',placeholder:'some text'}), | |
] | |
} | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'is_null',label: 'Null', type: 'checkbox'}), | |
] | |
} | |
] | |
}, | |
] | |
}, | |
{ label: 'To lower case', key:'format_text.to_lowercase', value:'to_lowercase', }, | |
{ label: 'To upper case', key:'format_text.to_uppercase', value:'to_uppercase', }, | |
{ label: 'Letters to numbers', key:'format_text.letters_to_numbers', value:'letters_to_numbers', }, | |
{ label: 'Numbers to letters', key:'format_text.numbers_to_letters', value:'numbers_to_letters', }, | |
] | |
}, | |
{ | |
label: 'Search & Replace', | |
value: 'search_n_replace', | |
key: 'search_n_replace', | |
children: [ | |
{ | |
label: 'Search by text', | |
value: 'search_n_replace.search_by_text', | |
key: 'search_n_replace.search_by_text', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'search_for',placeholder:'search for this'}), | |
form_fields.input_box({key:'replace_with',placeholder:'replace with this'}), | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({key:'case_sensitive',type:'checkbox', label:'Case Sensitive'}), | |
form_fields.input_box({key:'single_line',type:'checkbox', label:'Single line'}) | |
] | |
} | |
], | |
}, | |
{ | |
label:'Search by regex', | |
value:'search_n_replace.search_by_regex', | |
key:'search_n_replace.search_by_regex', | |
user_input_rows:[ | |
{ | |
label:'', | |
fields:[ | |
form_fields.input_box({key:'search_for',placeholder:'search for this'}), | |
form_fields.input_box({key:'replace_with',placeholder:'replace with this'}), | |
] | |
}, | |
{ | |
label:'', | |
key:'settings', | |
fields:[ | |
form_fields.input_box({key:'case_sensitive',type:'checkbox', label:'Case Sensitive'}), | |
form_fields.input_box({key:'single_line',type:'checkbox', label:'Single line'}) | |
] | |
} | |
] | |
} | |
] | |
}, | |
{ | |
label: 'Find...', | |
value: 'find', | |
key: 'find', | |
children: [ | |
{ | |
label: 'Find numbers', | |
value:'find.find_numbers', | |
key:'find.find_numbers', | |
user_input_rows: [ | |
{ | |
label: '', | |
key:'type', | |
fields: [ | |
form_fields.select({options:[ | |
{label:'All', key:'all', value:'all'}, | |
{label:'Integers only', key:'integers_only', value:'integers only'}, | |
{label:'Floats only', key:'floats_only', value:'floats only'}, | |
]}) | |
] | |
}, | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({type:'number', key:'min', placeholder:'MIN'}), | |
form_fields.input_box({type:'number', key:'max', placeholder:'MAX'}), | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({type:'checkbox', key:'format_numbers', label:'Format numbers'}), | |
form_fields.input_box({type:'number', key:'decimal_places', placeholder:'Decimal places'}), | |
form_fields.input_box({type:'checkbox', key:'sum', label:'Sum'}), | |
] | |
} | |
], | |
}, | |
{ | |
label: 'Find dates', | |
value:'find.find_dates', | |
key:'find.find_dates', | |
user_input_rows: [ | |
{ | |
label: 'Find dates', fields: [ | |
form_fields.input_box({label:'Format on document', key:'format_on_document', placeholder: 'DD/MM/YYY | MM-DD-YYYY | etc...'}), | |
form_fields.input_box({label:'Output format', key:'output_format', placeholder: 'DD/MM/YYY | MM-DD-YYYY | etc...'}), | |
] | |
} | |
], | |
}, | |
{ | |
label: 'Find email addresses', | |
value:'find.find_emails', | |
key:'find.find_emails' | |
}, | |
{ | |
label: 'Find by regex', | |
value:'find.find_by_regex', | |
key:'find.find_by_regex', | |
user_input_rows: [ | |
{ | |
label: '', | |
fields: [ | |
form_fields.input_box({key:'regex',placeholder: 'enter regex'}), | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({key:'global', type: 'checkbox', label: 'Global'}), | |
form_fields.input_box({key:'case_sensitive', type: 'checkbox', label: 'Case Sensitive'}), | |
form_fields.input_box({key:'ignore_duplicates', type:'checkbox', label:'Ignore duplicates'}) | |
] | |
} | |
], | |
}, | |
] | |
}, | |
{ | |
label: 'Advanced Search', | |
value: 'advanced_search', | |
key: 'advanced_search', | |
user_input_rows: [ | |
{ | |
label: '', | |
user_input_rows: [ | |
{ | |
label: '', | |
key: 'value', | |
fields: [ | |
{ | |
type: 'component', | |
component:'AdvancedSearch', | |
value: null, | |
data_type: 'string', | |
} | |
] | |
}, | |
] | |
}, | |
{ | |
label: '', | |
key:'settings', | |
fields: [ | |
form_fields.input_box({key:'remove_found_words', type: 'checkbox', label: 'Remove found words'}), | |
] | |
} | |
], | |
}, | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment