Class: ButterflyNet::Definitions

Inherits:
Object
  • Object
show all
Defined in:
lib/butterfly_net/definitions.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDefinitions

Returns a new instance of Definitions.



6
7
8
9
# File 'lib/butterfly_net/definitions.rb', line 6

def initialize
  @nesting_level = 0
  @lines = []
end

Instance Attribute Details

#linesObject (readonly)

Returns the value of attribute lines.



4
5
6
# File 'lib/butterfly_net/definitions.rb', line 4

def lines
  @lines
end

Class Method Details

.end_def?(line) ⇒ Boolean

todo: extract to line class

Returns:

  • (Boolean)


19
20
21
# File 'lib/butterfly_net/definitions.rb', line 19

def self.end_def?(line)  # todo: extract to line class
  line =~ /end\s*$/
end

.start_def?(line) ⇒ Boolean

todo: extract to line class

Returns:

  • (Boolean)


15
16
17
# File 'lib/butterfly_net/definitions.rb', line 15

def self.start_def?(line)  # todo: extract to line class
  line =~ /^\s*def\s+|^\s*class\s+|^\s*module\s+/
end

Instance Method Details

#<<(line) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/butterfly_net/definitions.rb', line 23

def <<(line)
  if Definitions.start_def?(line) and Definitions.end_def?(line)
    @lines << "  #{("  " * @nesting_level)}#{line}\n\n"
  elsif Definitions.start_def?(line)
    @nesting_level += 1
    @lines << "#{("  " * @nesting_level)}#{line}\n"
  elsif Definitions.end_def?(line)
    @nesting_level -= 1
    @lines << "  #{("  " * @nesting_level)}#{line}\n#{ @nesting_level == 0 ? "\n" : ""}"
  elsif @nesting_level > 0
    @lines << "  #{("  " * @nesting_level)}#{line}\n"  unless @nesting_level == 0
  else
    false
  end
end

#empty?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/butterfly_net/definitions.rb', line 11

def empty?
  @lines.empty?
end

#to_sObject



39
40
41
# File 'lib/butterfly_net/definitions.rb', line 39

def to_s
  @lines.join
end