lib/cql.rb in cql-0.1.7 vs lib/cql.rb in cql-0.1.9

- old
+ new

@@ -1,58 +1,63 @@ -require 'gherkin/parser/parser' -require 'gherkin/formatter/json_formatter' -require 'stringio' -require File.dirname(__FILE__) + "/dsl" - -module CQL - - class Query - include Dsl - attr_reader :data, :what - - def format_to_ary_of_hsh data - result = Array.new(data.size).map{ |e| {} } - @what.each do |w| - CQL::MapReduce.send(w, data).each_with_index { |e, i| result[i][w]=e } - end - result.size == 1 ? result.first : result - end - - def initialize features, &block - @data = features - @data = self.instance_eval(&block) - - #getting the children of features - @data= CQL::MapReduce.feature_children(@data, 'what'=>@from[0, @from.size-1]) if @from != "features" - - @data= format_to_ary_of_hsh(@data) - end - end - - - class Repository - attr_reader :parsed_feature_files - - def initialize features_home_dir - @parsed_feature_files = load_features list_features features_home_dir - end - - def query &block - Query.new(parsed_feature_files.clone, &block).data - end - - private - def list_features base_dir - Dir.glob(base_dir + "/**/*.feature") - end - - def load_features sources - io = StringIO.new - formatter = Gherkin::Formatter::JSONFormatter.new(io) - parser = Gherkin::Parser::Parser.new(formatter) - sources.each { |s| parser.parse(IO.read(s), s, 0) } - formatter.done - JSON.parse(io.string) - end - - end +require 'gherkin/parser/parser' +require 'gherkin/formatter/json_formatter' +require 'stringio' +require File.dirname(__FILE__) + "/dsl" + +module CQL + + class Query + include Dsl + attr_reader :data, :what + + def format_to_ary_of_hsh data + result = Array.new(data.size).map { |e| {} } + @what.each do |w| + CQL::MapReduce.send(w, data).each_with_index { |e, i| result[i][w]=e } + end + result.size == 1 ? result.first : result + end + + def initialize features, &block + @data = features + @data = self.instance_eval(&block) + + #getting the children of features + @data= CQL::MapReduce.feature_children(@data, 'what'=>@from[0, @from.size-1]) if @from != "features" + + @data= format_to_ary_of_hsh(@data) + end + end + + + class Repository + attr_reader :parsed_feature_files + + def initialize features_home_dir + @parsed_feature_files = load_features list_features features_home_dir + end + + def query &block + Query.new(parsed_feature_files.clone, &block).data + end + + private + def list_features base_dir + require 'find' + res = [] + Find.find(base_dir) do |f| + res << f if f.match(/\.feature\Z/) + end + res + end + + def load_features sources + io = StringIO.new + formatter = Gherkin::Formatter::JSONFormatter.new(io) + parser = Gherkin::Parser::Parser.new(formatter) + sources.each { |s| parser.parse(IO.read(s), s, 0) } + formatter.done + JSON.parse(io.string) + end + + end end \ No newline at end of file