[フレーム]

Class: Opal::EofContent

Inherits:
Object
  • Object
  • Opal::EofContent
show all
Defined in:
opal/lib/opal/eof_content.rb

Constant Summary collapse

DATA_SEPARATOR =
"__END__\n"

Instance Method Summary collapse

Constructor Details

#initialize(tokens, source) ⇒ EofContent

Returns a new instance of EofContent.

7
8
9
10
# File 'opal/lib/opal/eof_content.rb', line 7
def initialize(tokens, source)
 @tokens = tokens
 @source = source
end

Instance Method Details

#eofObject

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'opal/lib/opal/eof_content.rb', line 12
def eof
 return nil if @tokens.empty?
 eof_content = @source[last_token_position..-1]
 return nil unless eof_content
 # On Windows token position is off a bit, because Parser does not seem to compensate for \r\n
 # The first eof_content line on Windows may be for example "end\r\n"
 # Must match for it and \r\n and \n
 eof_content = eof_content.lines.drop_while { |line| /\A.*\r?\n?\z/.match?(line) && !line.start_with?('__END__') }
 if /\A__END__\r?\n?\z/.match?(eof_content[0])
 eof_content = eof_content[1..-1] || []
 eof_content.join
 elsif eof_content == ['__END__']
 ''
 end
end

AltStyle によって変換されたページ (->オリジナル) /