Sha256: 6259e1cdd4ac6db686e032a7684e385b6b1a459caf5d8e7bd16f27fb7ecb7b50

Contents?: true

Size: 697 Bytes

Versions: 1

Compression:

Stored size: 697 Bytes

Contents

module Faml
  module RubyMultiline
    def self.read(line_parser, current_text)
      buf = []
      while is_ruby_multiline?(current_text)
        current_text = line_parser.next_line
        buf << current_text
      end
      buf.join("\n")
    end

    # `text' is a Ruby multiline block if it:
    # - ends with a comma
    # - but not "?," which is a character literal
    #   (however, "x?," is a method call and not a literal)
    # - and not "?\," which is a character literal
    def self.is_ruby_multiline?(text)
      text && text.length > 1 && text[-1] == ?, &&
        !((text[-3, 2] =~ /\W\?/) || text[-3, 2] == "?\\")
    end
    private_class_method :is_ruby_multiline?
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
faml-0.2.9 lib/faml/ruby_multiline.rb