Sha256: 692c4a7ee62681fcb51f05e9c986eba9d77fc0814f71b390ce1f52d0ac4338ec

Contents?: true

Size: 862 Bytes

Versions: 2

Compression:

Stored size: 862 Bytes

Contents

require 'gherkin/formatter/json_formatter'
require 'gherkin/parser/parser'

module Gherkin::Formatter
  class JSONFormatter
    def to_hash
      @feature_hash
    end
  end
end

module Wally
  class ListsFeatures
    def initialize feature_path
      @feature_path = feature_path
    end

    def features
      features = []
      Dir.glob("#{@feature_path}/*.feature").each do |path|
        gherkinese = parse_gherkin(File.read(path))
        gherkinese["path"] = path
        features << gherkinese
      end
      features.sort {|a,b| a["name"] <=> b["name"]}
    end

    private

    def parse_gherkin(text)
      io = StringIO.new
      formatter = Gherkin::Formatter::JSONFormatter.new(io)
      parser = Gherkin::Parser::Parser.new(formatter, false, 'root')
      parser.parse(text, nil, 0)
      hash = formatter.to_hash
      hash
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wally-0.0.19 lib/wally/lists_features.rb
wally-0.0.18 lib/wally/lists_features.rb