csv_filter 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  Filters CSV or TSV files (default) by column names.
4
4
 
5
+ == CLI Usage
6
+
7
+ csv_filter comes with a command line utility conveniently called csv_filter. To use it:
8
+ `csv_filter path_to_file`
9
+
10
+ When prompted, enter the names of the columns (fields) you'd like to limit your results to.
11
+
12
+ Example:
13
+
14
+ <pre>
15
+ csv_filter spec/sample.tsv
16
+ available fields are: ["value", "type", "url", "format"]
17
+ enter field names to filter
18
+ type format
19
+ 0. URL RAW
20
+ 1. URL RAW
21
+ </pre>
22
+
5
23
  == Contributing to csv_filter
6
24
 
7
25
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
data/csv_filter.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "csv_filter"
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kris Luminar"]
12
- s.date = "2012-12-11"
12
+ s.date = "2012-12-12"
13
13
  s.description = "Filters CSV or TSV files (default) by column names"
14
14
  s.email = "kris.luminar@gmail.com"
15
15
  s.executables = ["csv_filter"]
data/lib/csv_filter.rb CHANGED
@@ -10,6 +10,8 @@ class CsvFilter
10
10
  grab_header
11
11
  end
12
12
 
13
+ # grab the first row of the inputed csv file
14
+ #
13
15
  def grab_header
14
16
  return @header if (@header and !@header.empty?)
15
17
  @file.rewind
@@ -19,15 +21,22 @@ class CsvFilter
19
21
  @header
20
22
  end
21
23
 
24
+ # the positions of all the columns that the user wants filtered on
25
+ #
22
26
  def filtered_column_positions columns
23
27
  columns = columns.flatten
24
28
  @filtered_column_positions ||= register.select {|field, pos| columns.include? field }.values
25
29
  end
26
30
 
31
+ # map column names to their relative positions (numbers)
32
+ #
27
33
  def register
28
34
  grab_header.invert
29
35
  end
30
36
 
37
+ # selects just the desired columns from a CSV file
38
+ #
39
+ # @param columns list of columns to filter on
31
40
  def filter(*columns)
32
41
  # columns = [*columns].flatten #columns should accept either an array of strings or a variable number of strings
33
42
  raise ArgumentError unless (columns.respond_to?(:size) and columns.size < @num_columns)
@@ -46,6 +55,9 @@ class CsvFilter
46
55
  output
47
56
  end
48
57
 
58
+ # CLI interface for filter
59
+ #
60
+ # (see #filter)
49
61
  def print_filter(columns)
50
62
  lines = filter(columns)
51
63
  output = []
@@ -59,10 +71,15 @@ class CsvFilter
59
71
  puts output.join("\n")
60
72
  end
61
73
 
74
+ # count num of columns
75
+ # already deprecated, always a bad sign
76
+ #
62
77
  def count_columns
63
78
  fields.size
64
79
  end
65
80
 
81
+ # list the fields from the header rown in the input file
82
+ #
66
83
  def fields
67
84
  return @fields if @fields
68
85
  @file.rewind
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-11 00:00:00.000000000 Z
12
+ date: 2012-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -132,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  segments:
134
134
  - 0
135
- hash: 4030006348523475583
135
+ hash: 384472246441890925
136
136
  required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  none: false
138
138
  requirements: