Sha256: 69ae21b58d0610e9dbb1411f28710297bc415d88726f11088564eb78cbdc36fb

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

module CukeModeler

  # A class modeling a Tag.

  class Tag

    include Raw
    include Sourceable
    include Nested


    # The name of the Tag
    attr_accessor :name


    # Creates a new Tag object and, if *source* is provided, populates the
    # object.
    def initialize(source = nil)
      parsed_tag = process_source(source)

      build_tag(parsed_tag) if parsed_tag
    end

    # Returns gherkin representation of the tag.
    def to_s
      name || ''
    end


    private


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

    def parse_tag(source_text)
      base_file_string = "\nFeature: Fake feature to parse"
      source_text = source_text + base_file_string

      parsed_file = Parsing::parse_text(source_text, 'cuke_modeler_stand_alone_tag.feature')

      parsed_file.first['tags'].first
    end

    def build_tag(parsed_tag)
      populate_name(parsed_tag)
      populate_raw_element(parsed_tag)
      populate_element_source_line(parsed_tag)
    end

    def populate_name(parsed_tag)
      @name = parsed_tag['name']
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cuke_modeler-0.4.1 lib/cuke_modeler/tag.rb
cuke_modeler-0.4.0 lib/cuke_modeler/tag.rb
cuke_modeler-0.3.0 lib/cuke_modeler/tag.rb
cuke_modeler-0.2.0 lib/cuke_modeler/tag.rb