Class: Strling::Core::Flags

Inherits:
Object
  • Object
show all
Defined in:
lib/strling/core/nodes.rb

Overview

Container for regex flags/modifiers.

Flags control the behavior of pattern matching (case sensitivity, multiline mode, etc.). This class encapsulates all standard regex flags.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ignore_case: false, multiline: false, dot_all: false, unicode: false, extended: false) ⇒ Flags

Returns a new instance of Flags.



42
43
44
45
46
47
48
# File 'lib/strling/core/nodes.rb', line 42

def initialize(ignore_case: false, multiline: false, dot_all: false, unicode: false, extended: false)
  @ignore_case = ignore_case
  @multiline = multiline
  @dot_all = dot_all
  @unicode = unicode
  @extended = extended
end

Instance Attribute Details

#dot_allBoolean

Returns Dot matches all characters including newlines.

Returns:

  • (Boolean)

    Dot matches all characters including newlines



34
35
36
# File 'lib/strling/core/nodes.rb', line 34

def dot_all
  @dot_all
end

#extendedBoolean

Returns Extended/free-spacing mode (ignore whitespace).

Returns:

  • (Boolean)

    Extended/free-spacing mode (ignore whitespace)



40
41
42
# File 'lib/strling/core/nodes.rb', line 40

def extended
  @extended
end

#ignore_caseBoolean

Returns Case-insensitive matching.

Returns:

  • (Boolean)

    Case-insensitive matching



28
29
30
# File 'lib/strling/core/nodes.rb', line 28

def ignore_case
  @ignore_case
end

#multilineBoolean

Returns Multiline mode (^ and $ match line boundaries).

Returns:

  • (Boolean)

    Multiline mode (^ and $ match line boundaries)



31
32
33
# File 'lib/strling/core/nodes.rb', line 31

def multiline
  @multiline
end

#unicodeBoolean

Returns Unicode mode.

Returns:

  • (Boolean)

    Unicode mode



37
38
39
# File 'lib/strling/core/nodes.rb', line 37

def unicode
  @unicode
end

Class Method Details

.from_letters(letters) ⇒ Flags

Create Flags from flag letters.

Parameters:

  • letters (String)

    Flag letters (i, m, s, u, x)

Returns:

  • (Flags)

    New Flags instance



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/strling/core/nodes.rb', line 67

def self.from_letters(letters)
  flags = new
  letters.gsub(/[,\s]/, '').each_char do |ch|
    case ch
    when 'i'
      flags.ignore_case = true
    when 'm'
      flags.multiline = true
    when 's'
      flags.dot_all = true
    when 'u'
      flags.unicode = true
    when 'x'
      flags.extended = true
    when ''
      # Empty character, skip
    else
      # Unknown flags are ignored at parser stage; may be warned later
    end
  end
  flags
end

Instance Method Details

#to_dictHash

Convert flags to hash representation.

Returns:

  • (Hash)

    Hash representation of flags



53
54
55
56
57
58
59
60
61
# File 'lib/strling/core/nodes.rb', line 53

def to_dict
  {
    'ignoreCase' => ignore_case,
    'multiline' => multiline,
    'dotAll' => dot_all,
    'unicode' => unicode,
    'extended' => extended
  }
end