Sha256: c0788f2409af673ea8ac84acabebc3420c0e98128aa266fdc7b4bb9473ad274a

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

module CucumberAnalytics

  # A class modeling the Doc String of a Step.

  class DocString

    include Raw
    include Nested


    # The content type associated with the doc string
    attr_accessor :content_type

    # The contents of the doc string
    attr_accessor :contents


    # Creates a new DocString object and, if *source* is provided, populates
    # the object.
    def initialize(source = nil)
      @contents = []

      parsed_doc_string = process_source(source)

      build_doc_string(parsed_doc_string) if parsed_doc_string
    end


    private


    def process_source(source)
      case
        when source.is_a?(String)
          parse_doc_string(source)
        else
          source
      end
    end

    def parse_doc_string(source_text)
      base_file_string = "Feature:\nScenario:\n* step\n"
      source_text = base_file_string + source_text

      parsed_file = Parsing::parse_text(source_text)

      parsed_file.first['elements'].first['steps'].first['doc_string']
    end

    def build_doc_string(doc_string)
      populate_content_type(doc_string)
      populate_contents(doc_string)
      populate_raw_element(doc_string)
    end

    def populate_content_type(doc_string)
      @content_type = doc_string['content_type'] == "" ? nil : doc_string['content_type']
    end

    def populate_contents(doc_string)
      @contents = doc_string['value'].split($/)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cucumber_analytics-1.4.0 lib/cucumber_analytics/doc_string.rb
cucumber_analytics-1.3.0 lib/cucumber_analytics/doc_string.rb