Sha256: be5840585459fada12c10bd6de0e2497e861656b02a27fcb9e4edef9cd1189df

Contents?: true

Size: 911 Bytes

Versions: 10

Compression:

Stored size: 911 Bytes

Contents

# Copyright (c) 2020 Jerome Arbez-Gindre
# frozen_string_literal: true

# Add a class to handled asciidoctor comments
module DefMastership
  attr_reader :comment_filter

  # Kind of proxy that Filters comments fome Asciidoctor document
  class CommentFilter
    def initialize
      @in_multiline_comment = false
    end

    def accept?(line)
      case line
      when DMRegexp::SINGLE_LINE_COMMENT then false
      when DMRegexp::MULTI_LINE_COMMENT_DELIM
        @in_multiline_comment ^= true
        false
      else !@in_multiline_comment
      end
    end
  end

  @comment_filter = CommentFilter.new

  def self.reset_comments
    @comment_filter = CommentFilter.new
    nil
  end

  def self.comment_filter
    @comment_filter
  end
end

# adding a method to string to figure out if a string is commented or
# not.
class String
  def commented?
    !DefMastership.comment_filter.accept?(self)
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
defmastership-1.0.13 lib/defmastership/comment_filter.rb
defmastership-1.0.12 lib/defmastership/comment_filter.rb
defmastership-1.0.11 lib/defmastership/comment_filter.rb
defmastership-1.0.10 lib/defmastership/comment_filter.rb
defmastership-1.0.9 lib/defmastership/comment_filter.rb
defmastership-1.0.8 lib/defmastership/comment_filter.rb
defmastership-1.0.7 lib/defmastership/comment_filter.rb
defmastership-1.0.6 lib/defmastership/comment_filter.rb
defmastership-1.0.5 lib/defmastership/comment_filter.rb
defmastership-1.0.4 lib/defmastership/comment_filter.rb