Skip to content

Instantly share code, notes, and snippets.

@moseskamau338
Last active November 15, 2023 11:57
Show Gist options
  • Save moseskamau338/56ad7ec402acf42c772d0a7246f2884e to your computer and use it in GitHub Desktop.
Save moseskamau338/56ad7ec402acf42c772d0a7246f2884e to your computer and use it in GitHub Desktop.
Sample text filters
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