forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
@ -0,0 +1,71 @@
|
||||
from lnx.logicnode.lnx_nodes import *
|
||||
|
||||
class RegularExpressionNode(LnxLogicTreeNode):
|
||||
"""
|
||||
The first argument is a string with a regular expression pattern, the second one is a string with flags.
|
||||
|
||||
@input RegExp Pattern: regular expression patterns such as
|
||||
- `.`: any character
|
||||
- `*`: repeat zero-or-more
|
||||
- `+`: repeat one-or-more
|
||||
- `?`: optional zero-or-one
|
||||
- `[A-Z0-9]`: character ranges
|
||||
- `[^\\r\\n\\t]`: character not-in-range
|
||||
- `(...)`: parenthesis to match groups of characters
|
||||
- `^`: beginning of the string (beginning of a line in multiline matching mode)
|
||||
- `$`: end of the string (end of a line in multiline matching mode)
|
||||
- `|`: "OR" statement.
|
||||
|
||||
@input RegExp Flags: possible flags are the following
|
||||
- `i`: case insensitive matching
|
||||
- `g`: global replace or split, see below
|
||||
- `m`: multiline matching, ^ and $ represent the beginning and end of a line
|
||||
- `s`: the dot . will also match newlines (not supported by C# and JavaScript versions before ES2018)
|
||||
- `u`: use UTF-8 matching (Neko and C++ targets only)
|
||||
|
||||
@input String: String to match, split or replace
|
||||
@input Replace: String to use when replace
|
||||
|
||||
@output Match: boolean result comparing the regular expression pattern with the string
|
||||
@output Matched: array containing list of matched patterns
|
||||
@output Split: array string of string splits using the pattern
|
||||
@output Replace: new string with the pattern replaced
|
||||
|
||||
"""
|
||||
bl_idname = 'LNRegularExpressionNode'
|
||||
bl_label = 'Regular Expression'
|
||||
|
||||
lnx_version = 1
|
||||
|
||||
def remove_extra_inputs(self, context):
|
||||
while len(self.outputs) > 0:
|
||||
self.outputs.remove(self.outputs[-1])
|
||||
if len(self.inputs) != 3:
|
||||
self.inputs.remove(self.inputs[-1])
|
||||
if self.property0 == 'Match':
|
||||
self.add_output('LnxBoolSocket', 'Match')
|
||||
self.add_output('LnxNodeSocketArray', 'Matched', is_var=False)
|
||||
if self.property0 == 'Split':
|
||||
self.add_output('LnxNodeSocketArray', 'Split', is_var=False)
|
||||
if self.property0 == 'Replace':
|
||||
self.add_input('LnxStringSocket', 'Replace')
|
||||
self.add_output('LnxStringSocket', 'String')
|
||||
|
||||
property0: HaxeEnumProperty(
|
||||
'property0',
|
||||
items = [('Match', 'Match', 'A regular expression is used to compare a string. Use () in the pattern to retrieve Matched groups'),
|
||||
('Split', 'Split', 'A regular expression can also be used to split a string into several substrings'),
|
||||
('Replace', 'Replace', 'A regular expression can also be used to replace a part of the string')],
|
||||
name='', default='Match', update=remove_extra_inputs)
|
||||
|
||||
def lnx_init(self, context):
|
||||
|
||||
self.add_input('LnxStringSocket', 'RegExp Pattern')
|
||||
self.add_input('LnxStringSocket', 'RegExp Flags')
|
||||
self.add_input('LnxStringSocket', 'String')
|
||||
|
||||
self.add_output('LnxBoolSocket', 'Match')
|
||||
self.add_output('LnxNodeSocketArray', 'Matched', is_var=False)
|
||||
|
||||
def draw_buttons(self, context, layout):
|
||||
layout.prop(self, 'property0')
|
Reference in New Issue
Block a user