spout 0.12.1 → 0.13.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +5 -5
  4. data/Rakefile +4 -4
  5. data/bin/spout +1 -1
  6. data/lib/spout/commands/coverage.rb +18 -18
  7. data/lib/spout/commands/deploy.rb +89 -89
  8. data/lib/spout/commands/exporter.rb +16 -16
  9. data/lib/spout/commands/graphs.rb +37 -37
  10. data/lib/spout/commands/help.rb +1 -1
  11. data/lib/spout/commands/importer.rb +59 -57
  12. data/lib/spout/commands/outliers.rb +17 -17
  13. data/lib/spout/commands/project_generator.rb +25 -25
  14. data/lib/spout/commands/update.rb +38 -38
  15. data/lib/spout/helpers/array_statistics.rb +7 -7
  16. data/lib/spout/helpers/chart_types.rb +2 -2
  17. data/lib/spout/helpers/config_reader.rb +21 -20
  18. data/lib/spout/helpers/framework.rb +11 -11
  19. data/lib/spout/helpers/iterators.rb +1 -3
  20. data/lib/spout/helpers/json_loader.rb +2 -4
  21. data/lib/spout/helpers/json_request.rb +11 -11
  22. data/lib/spout/helpers/number_helper.rb +1 -1
  23. data/lib/spout/helpers/quietly.rb +1 -1
  24. data/lib/spout/helpers/semantic.rb +1 -1
  25. data/lib/spout/helpers/send_file.rb +14 -14
  26. data/lib/spout/helpers/subject_loader.rb +24 -24
  27. data/lib/spout/helpers/table_formatting.rb +12 -12
  28. data/lib/spout/models/coverage_result.rb +8 -8
  29. data/lib/spout/models/dictionary.rb +10 -10
  30. data/lib/spout/models/domain.rb +7 -7
  31. data/lib/spout/models/empty.rb +1 -1
  32. data/lib/spout/models/form.rb +6 -6
  33. data/lib/spout/models/graphables/choices_vs_choices.rb +3 -5
  34. data/lib/spout/models/graphables/choices_vs_numeric.rb +4 -6
  35. data/lib/spout/models/graphables/default.rb +6 -6
  36. data/lib/spout/models/graphables/histogram.rb +4 -4
  37. data/lib/spout/models/graphables/numeric_vs_choices.rb +1 -1
  38. data/lib/spout/models/graphables/numeric_vs_numeric.rb +6 -6
  39. data/lib/spout/models/graphables.rb +14 -14
  40. data/lib/spout/models/outlier_result.rb +16 -18
  41. data/lib/spout/models/record.rb +3 -3
  42. data/lib/spout/models/tables/choices_vs_choices.rb +11 -11
  43. data/lib/spout/models/tables/choices_vs_numeric.rb +8 -8
  44. data/lib/spout/models/tables/default.rb +5 -5
  45. data/lib/spout/models/tables/numeric_vs_choices.rb +7 -7
  46. data/lib/spout/models/tables/numeric_vs_numeric.rb +7 -7
  47. data/lib/spout/models/tables.rb +11 -11
  48. data/lib/spout/models/variable.rb +14 -14
  49. data/lib/spout/tasks/engine.rake +4 -4
  50. data/lib/spout/templates/CHANGELOG.md.erb +1 -1
  51. data/lib/spout/templates/Gemfile +2 -2
  52. data/lib/spout/templates/Rakefile +1 -1
  53. data/lib/spout/templates/test/dictionary_test.rb +3 -3
  54. data/lib/spout/templates/test/test_helper.rb +1 -1
  55. data/lib/spout/tests/domain_existence_validation.rb +6 -6
  56. data/lib/spout/tests/domain_format.rb +1 -1
  57. data/lib/spout/tests/domain_name_format.rb +3 -3
  58. data/lib/spout/tests/domain_name_uniqueness.rb +2 -2
  59. data/lib/spout/tests/domain_specified.rb +1 -3
  60. data/lib/spout/tests/form_existence_validation.rb +2 -4
  61. data/lib/spout/tests/form_name_format.rb +3 -3
  62. data/lib/spout/tests/form_name_match.rb +1 -1
  63. data/lib/spout/tests/json_helper.rb +1 -1
  64. data/lib/spout/tests/json_validation.rb +0 -2
  65. data/lib/spout/tests/variable_name_format.rb +3 -3
  66. data/lib/spout/tests/variable_name_match.rb +1 -3
  67. data/lib/spout/tests/variable_name_uniqueness.rb +2 -2
  68. data/lib/spout/tests/variable_type_validation.rb +2 -2
  69. data/lib/spout/tests.rb +30 -30
  70. data/lib/spout/version.rb +4 -4
  71. data/lib/spout/views/index.html.erb +15 -15
  72. data/lib/spout/views/outliers.html.erb +8 -8
  73. data/lib/spout.rb +26 -26
  74. data/spout.gemspec +22 -22
  75. metadata +5 -5
@@ -1,40 +1,40 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'csv'
4
- require 'fileutils'
5
- require 'rubygems'
6
- require 'json'
7
- require 'yaml'
8
- require 'colorize'
9
-
10
- require 'spout/helpers/subject_loader'
11
- require 'spout/helpers/chart_types'
12
- require 'spout/models/variable'
13
- require 'spout/models/graphables'
14
- require 'spout/models/tables'
15
- require 'spout/helpers/config_reader'
16
- require 'spout/helpers/send_file'
17
- require 'spout/helpers/json_request'
18
- require 'spout/version'
3
+ require "csv"
4
+ require "fileutils"
5
+ require "rubygems"
6
+ require "json"
7
+ require "yaml"
8
+ require "colorize"
9
+
10
+ require "spout/helpers/subject_loader"
11
+ require "spout/helpers/chart_types"
12
+ require "spout/models/variable"
13
+ require "spout/models/graphables"
14
+ require "spout/models/tables"
15
+ require "spout/helpers/config_reader"
16
+ require "spout/helpers/send_file"
17
+ require "spout/helpers/json_request"
18
+ require "spout/version"
19
19
 
20
20
  module Spout
21
21
  module Commands
22
22
  class Graphs
23
- def initialize(argv, standard_version, deploy_mode = false, url = '', slug = '', token = '', webserver_name = '', subjects = nil)
23
+ def initialize(argv, standard_version, deploy_mode = false, url = "", slug = "", token = "", webserver_name = "", subjects = nil)
24
24
  @deploy_mode = deploy_mode
25
25
  @url = url
26
26
  @standard_version = standard_version
27
27
  @slug = slug
28
28
  @token = token
29
29
  @webserver_name = webserver_name
30
- @clean = !(argv.delete('--no-resume').nil? && argv.delete('--clean').nil?)
30
+ @clean = !(argv.delete("--no-resume").nil? && argv.delete("--clean").nil?)
31
31
 
32
32
  @config = Spout::Helpers::ConfigReader.new
33
33
 
34
34
  @stratification_variable = Spout::Models::Variable.find_by_id @config.visit
35
35
 
36
36
  if @stratification_variable.nil?
37
- if @config.visit == ''
37
+ if @config.visit == ""
38
38
  puts "The visit variable in .spout.yml can't be blank."
39
39
  else
40
40
  puts "Could not find the following visit variable: #{@config.visit}"
@@ -42,7 +42,7 @@ module Spout
42
42
  return self
43
43
  end
44
44
 
45
- missing_variables = @config.charts.select { |c| Spout::Models::Variable.find_by_id(c['chart']).nil? }
45
+ missing_variables = @config.charts.select { |c| Spout::Models::Variable.find_by_id(c["chart"]).nil? }
46
46
  if missing_variables.count > 0
47
47
  puts "Could not find the following chart variable#{'s' unless missing_variables.size == 1}: #{missing_variables.join(', ')}"
48
48
  return self
@@ -50,17 +50,17 @@ module Spout
50
50
 
51
51
  rows_arg = argv.find { |arg| /^--rows=(\d*)/ =~ arg }
52
52
  argv.delete(rows_arg)
53
- @number_of_rows = rows_arg.gsub(/--rows=/, '').to_i if rows_arg
53
+ @number_of_rows = rows_arg.gsub(/--rows=/, "").to_i if rows_arg
54
54
 
55
- @valid_ids = argv.collect { |s| s.to_s.downcase }.compact.reject { |s| s == '' }
55
+ @valid_ids = argv.collect { |s| s.to_s.downcase }.compact.reject { |s| s == "" }
56
56
 
57
- @chart_variables = @config.charts.unshift('chart' => @config.visit, 'title' => 'Histogram')
57
+ @chart_variables = @config.charts.unshift("chart" => @config.visit, "title" => "Histogram")
58
58
 
59
59
  @dictionary_root = Dir.pwd
60
- @variable_files = Dir.glob(File.join(@dictionary_root, 'variables', '**', '*.json'))
60
+ @variable_files = Dir.glob(File.join(@dictionary_root, "variables", "**", "*.json"))
61
61
 
62
62
  t = Time.now
63
- @graphs_folder = File.join('graphs', @standard_version)
63
+ @graphs_folder = File.join("graphs", @standard_version)
64
64
  FileUtils.mkpath @graphs_folder
65
65
 
66
66
  @subjects = if subjects
@@ -79,14 +79,14 @@ module Spout
79
79
  end
80
80
 
81
81
  def load_current_progress
82
- @progress_file = File.join(@graphs_folder, '.progress.json')
82
+ @progress_file = File.join(@graphs_folder, ".progress.json")
83
83
  @progress = JSON.parse(File.read(@progress_file)) rescue @progress = {}
84
- @progress = {} if !@progress.is_a?(Hash) || @clean || @progress['SPOUT_VERSION'] != Spout::VERSION::STRING
85
- @progress['SPOUT_VERSION'] = Spout::VERSION::STRING
84
+ @progress = {} if !@progress.is_a?(Hash) || @clean || @progress["SPOUT_VERSION"] != Spout::VERSION::STRING
85
+ @progress["SPOUT_VERSION"] = Spout::VERSION::STRING
86
86
  end
87
87
 
88
88
  def save_current_progress
89
- File.open(@progress_file, 'w') do |f|
89
+ File.open(@progress_file, "w") do |f|
90
90
  f.write(JSON.pretty_generate(@progress) + "\n")
91
91
  end
92
92
  end
@@ -115,12 +115,12 @@ module Spout
115
115
  end
116
116
 
117
117
  @progress[variable.id] ||= {}
118
- @progress[variable.id]['uploaded'] ||= []
119
- next if (!@deploy_mode && @progress[variable.id]['generated'] == true) || (@deploy_mode && @progress[variable.id]['uploaded'].include?(@webserver_name))
118
+ @progress[variable.id]["uploaded"] ||= []
119
+ next if (!@deploy_mode && @progress[variable.id]["generated"] == true) || (@deploy_mode && @progress[variable.id]["uploaded"].include?(@webserver_name))
120
120
 
121
121
  stats = compute_stats(variable)
122
122
 
123
- if @deploy_mode && !@progress[variable.id]['uploaded'].include?(@webserver_name)
123
+ if @deploy_mode && !@progress[variable.id]["uploaded"].include?(@webserver_name)
124
124
  values = @subjects.collect(&variable.id.to_sym).compact_empty
125
125
  variable.n = values.n
126
126
  variable.unknown = values.unknown
@@ -142,8 +142,8 @@ module Spout
142
142
  return stats unless %w(numeric integer choices).include?(variable.type)
143
143
 
144
144
  @chart_variables.each do |chart_type_hash|
145
- chart_type = chart_type_hash['chart']
146
- chart_title = chart_type_hash['title'].downcase.tr(' ', '-')
145
+ chart_type = chart_type_hash["chart"]
146
+ chart_title = chart_type_hash["title"].downcase.tr(" ", "-")
147
147
  chart_variable = Spout::Models::Variable.find_by_id(chart_type)
148
148
 
149
149
  filtered_subjects = @subjects.reject { |s| s.send(chart_type).nil? || s.send(variable.id).nil? }
@@ -165,8 +165,8 @@ module Spout
165
165
  end
166
166
 
167
167
  chart_json_file = File.join(@graphs_folder, "#{variable.id}.json")
168
- File.open(chart_json_file, 'w') { |file| file.write(JSON.pretty_generate(stats) + "\n") }
169
- @progress[variable.id]['generated'] = true
168
+ File.open(chart_json_file, "w") { |file| file.write(JSON.pretty_generate(stats) + "\n") }
169
+ @progress[variable.id]["generated"] = true
170
170
  stats
171
171
  end
172
172
 
@@ -178,7 +178,7 @@ module Spout
178
178
  params[:variable][:spout_stats] = stats.to_json
179
179
  (json, status) = Spout::Helpers::JsonRequest.post("#{@url}/api/v1/variables/create_or_update.json", params)
180
180
  if json.is_a?(Hash) && status.is_a?(Net::HTTPSuccess)
181
- @progress[variable.id]['uploaded'] << @webserver_name
181
+ @progress[variable.id]["uploaded"] << @webserver_name
182
182
  else
183
183
  puts "\nUPLOAD FAILED: ".colorize(:red) + variable.id
184
184
  puts "- Error: #{json.inspect}"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'colorize'
3
+ require "colorize"
4
4
 
5
5
  module Spout
6
6
  module Commands
@@ -1,16 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'csv'
4
- require 'json'
5
- require 'fileutils'
6
- require 'colorize'
3
+ require "csv"
4
+ require "json"
5
+ require "fileutils"
6
+ require "colorize"
7
7
 
8
8
  module Spout
9
9
  module Commands
10
10
  class Importer
11
11
  def initialize(argv)
12
- use_domains = !argv.delete('--domains').nil?
13
- use_forms = !argv.delete('--forms').nil?
12
+ use_domains = !argv.delete("--domains").nil?
13
+ use_forms = !argv.delete("--forms").nil?
14
+ @preserve_case = !argv.delete("--preserve-case").nil?
14
15
  @csv_file = argv[1].to_s
15
16
  unless File.exist?(@csv_file)
16
17
  puts csv_usage
@@ -37,36 +38,36 @@ EOT
37
38
  end
38
39
 
39
40
  def import_variables
40
- CSV.parse(File.open(@csv_file, 'r:iso-8859-1:utf-8', &:read), headers: true) do |line|
41
+ CSV.parse(File.open(@csv_file, "r:iso-8859-1:utf-8", &:read), headers: true) do |line|
41
42
  row = line.to_hash
42
- if not row.keys.include?('id')
43
+ if not row.keys.include?("id")
43
44
  puts "\nMissing column header `".colorize( :red ) + "id".colorize( :light_cyan ) + "` in data dictionary.".colorize( :red ) + additional_csv_info
44
45
  exit(1)
45
46
  end
46
- next if row['id'] == ''
47
- folder = File.join('variables', row.delete('folder').to_s)
47
+ next if row["id"] == ""
48
+ folder = File.join("variables", row.delete("folder").to_s)
48
49
  FileUtils.mkpath folder
49
50
  hash = {}
50
- id = row.delete('id').to_s.downcase
51
- hash['id'] = id
52
- hash['display_name'] = tenderize(row.delete('display_name').to_s)
53
- hash['description'] = row.delete('description').to_s
54
- hash['type'] = row.delete('type')
55
- domain = row.delete('domain').to_s.downcase
56
- hash['domain'] = domain if domain != ''
57
- units = row.delete('units').to_s
58
- hash['units'] = units if units != ''
59
- calculation = row.delete('calculation').to_s
60
- hash['calculation'] = calculation if calculation != ''
61
- labels = row.delete('labels').to_s.split(';')
62
- hash['labels'] = labels unless labels.empty?
63
- hash['commonly_used'] = true if row.delete('commonly_used').to_s.casecmp('true').zero?
64
- forms = row.delete('forms').to_s.split(';')
65
- hash['forms'] = forms unless forms.empty?
66
- hash['other'] = row unless row.empty?
51
+ id = row.delete("id").to_s.downcase
52
+ hash["id"] = id
53
+ hash["display_name"] = tenderize(row.delete("display_name").to_s)
54
+ hash["description"] = row.delete("description").to_s
55
+ hash["type"] = row.delete("type")
56
+ domain = row.delete("domain").to_s.downcase
57
+ hash["domain"] = domain if domain != ""
58
+ units = row.delete("units").to_s
59
+ hash["units"] = units if units != ""
60
+ calculation = row.delete("calculation").to_s
61
+ hash["calculation"] = calculation if calculation != ""
62
+ labels = row.delete("labels").to_s.split(";")
63
+ hash["labels"] = labels unless labels.empty?
64
+ hash["commonly_used"] = true if row.delete("commonly_used").to_s.casecmp("true").zero?
65
+ forms = row.delete("forms").to_s.split(";")
66
+ hash["forms"] = forms unless forms.empty?
67
+ hash["other"] = row unless row.empty?
67
68
 
68
69
  file_name = File.join(folder, "#{id}.json")
69
- File.open(file_name, 'w') do |file|
70
+ File.open(file_name, "w") do |file|
70
71
  file.write(JSON.pretty_generate(hash) + "\n")
71
72
  end
72
73
  puts " create".colorize( :green ) + " #{file_name}"
@@ -76,33 +77,33 @@ EOT
76
77
  def import_domains
77
78
  domains = {}
78
79
 
79
- CSV.parse(File.open(@csv_file, 'r:iso-8859-1:utf-8', &:read), headers: true) do |line|
80
+ CSV.parse(File.open(@csv_file, "r:iso-8859-1:utf-8", &:read), headers: true) do |line|
80
81
  row = line.to_hash
81
- if not row.keys.include?('domain_id')
82
+ if not row.keys.include?("domain_id")
82
83
  puts "\nMissing column header `".colorize( :red ) + "domain_id".colorize( :light_cyan ) + "` in data dictionary.".colorize( :red ) + additional_csv_info
83
84
  exit(1)
84
85
  end
85
- if not row.keys.include?('value')
86
+ if not row.keys.include?("value")
86
87
  puts "\nMissing column header `".colorize( :red ) + "value".colorize( :light_cyan ) + "` in data dictionary.".colorize( :red ) + additional_csv_info
87
88
  exit(1)
88
89
  end
89
- if not row.keys.include?('display_name')
90
+ if not row.keys.include?("display_name")
90
91
  puts "\nMissing column header `".colorize( :red ) + "display_name".colorize( :light_cyan ) + "` in data dictionary.".colorize( :red ) + additional_csv_info
91
92
  exit(1)
92
93
  end
93
94
 
94
- next if row['domain_id'].to_s == '' or row['value'].to_s == '' or row['display_name'].to_s == ''
95
- folder = File.join('domains', row['folder'].to_s).gsub(/[^a-zA-Z0-9_\/\.-]/, '_')
96
- domain_name = row['domain_id'].to_s.gsub(/[^a-zA-Z0-9_\/\.-]/, '_').downcase
95
+ next if row["domain_id"].to_s == "" or row["value"].to_s == "" or row["display_name"].to_s == ""
96
+ folder = File.join("domains", row["folder"].to_s).gsub(/[^a-zA-Z0-9_\/\.-]/, "_")
97
+ domain_name = row["domain_id"].to_s.gsub(/[^a-zA-Z0-9_\/\.-]/, "_").downcase
97
98
  domains[domain_name] ||= {}
98
99
  domains[domain_name]["folder"] = folder
99
100
  domains[domain_name]["options"] ||= []
100
101
 
101
102
  hash = {}
102
- hash['value'] = row.delete('value').to_s
103
- hash['display_name'] = tenderize(row.delete('display_name').to_s)
104
- hash['description'] = row.delete('description').to_s
105
- hash['missing'] = true if hash['value'].match(/^[\.-]/)
103
+ hash["value"] = row.delete("value").to_s
104
+ hash["display_name"] = tenderize(row.delete("display_name").to_s)
105
+ hash["description"] = row.delete("description").to_s
106
+ hash["missing"] = true if hash["value"].match(/^[\.-]/)
106
107
 
107
108
  domains[domain_name]["options"] << hash
108
109
  end
@@ -111,9 +112,9 @@ EOT
111
112
  folder = domain_hash["folder"]
112
113
  FileUtils.mkpath folder
113
114
 
114
- file_name = File.join(folder, domain_name + '.json')
115
+ file_name = File.join(folder, "#{domain_name}.json")
115
116
 
116
- File.open(file_name, 'w') do |file|
117
+ File.open(file_name, "w") do |file|
117
118
  file.write(JSON.pretty_generate(domain_hash["options"]) + "\n")
118
119
  end
119
120
  puts " create".colorize( :green ) + " #{file_name}"
@@ -121,36 +122,36 @@ EOT
121
122
  end
122
123
 
123
124
  def import_forms
124
- CSV.parse(File.open(@csv_file, 'r:iso-8859-1:utf-8', &:read), headers: true) do |line|
125
+ CSV.parse(File.open(@csv_file, "r:iso-8859-1:utf-8", &:read), headers: true) do |line|
125
126
  row = line.to_hash
126
- unless row.keys.include?('id')
127
+ unless row.keys.include?("id")
127
128
  puts "\nMissing column header `".colorize(:red) +
128
- 'id'.colorize(:light_cyan) +
129
- '` in data dictionary.'.colorize(:red) +
129
+ "id".colorize(:light_cyan) +
130
+ "` in data dictionary.".colorize(:red) +
130
131
  additional_csv_info
131
132
  exit(1)
132
133
  end
133
- unless row.keys.include?('display_name')
134
+ unless row.keys.include?("display_name")
134
135
  puts "\nMissing column header `".colorize(:red) +
135
- 'display_name'.colorize(:light_cyan) +
136
- '` in data dictionary.'.colorize(:red) +
136
+ "display_name".colorize(:light_cyan) +
137
+ "` in data dictionary.".colorize(:red) +
137
138
  additional_csv_info
138
139
  exit(1)
139
140
  end
140
- next if row['id'] == ''
141
- folder = File.join('forms', row.delete('folder').to_s)
141
+ next if row["id"] == ""
142
+ folder = File.join("forms", row.delete("folder").to_s)
142
143
  FileUtils.mkpath folder
143
144
  hash = {}
144
- id = row.delete('id').to_s.downcase
145
- hash['id'] = id
146
- hash['display_name'] = tenderize(row.delete('display_name').to_s)
147
- hash['code_book'] = row.delete('code_book').to_s
148
- hash['other'] = row unless row.empty?
145
+ id = row.delete("id").to_s.downcase
146
+ hash["id"] = id
147
+ hash["display_name"] = tenderize(row.delete("display_name").to_s)
148
+ hash["code_book"] = row.delete("code_book").to_s
149
+ hash["other"] = row unless row.empty?
149
150
  file_name = File.join(folder, "#{id}.json")
150
- File.open(file_name, 'w') do |file|
151
+ File.open(file_name, "w") do |file|
151
152
  file.write(JSON.pretty_generate(hash) + "\n")
152
153
  end
153
- puts ' create'.colorize(:green) + " #{file_name}"
154
+ puts " create".colorize(:green) + " #{file_name}"
154
155
  end
155
156
  end
156
157
 
@@ -158,6 +159,7 @@ EOT
158
159
  # Ex: BODY MASS INDEX changes to Body Mass Index
159
160
  # Ex: Patient ID stays the same as Patient ID
160
161
  def tenderize(text)
162
+ return text if @preserve_case
161
163
  if /[a-z]/ =~ text
162
164
  text
163
165
  else
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'yaml'
4
- require 'erb'
5
- require 'fileutils'
3
+ require "yaml"
4
+ require "erb"
5
+ require "fileutils"
6
6
 
7
- require 'spout/helpers/subject_loader'
8
- require 'spout/models/outlier_result'
9
- require 'spout/helpers/number_helper'
10
- require 'spout/helpers/config_reader'
7
+ require "spout/helpers/subject_loader"
8
+ require "spout/models/outlier_result"
9
+ require "spout/helpers/number_helper"
10
+ require "spout/helpers/config_reader"
11
11
 
12
12
  module Spout
13
13
  module Commands
@@ -16,9 +16,9 @@ module Spout
16
16
 
17
17
  def initialize(standard_version, argv)
18
18
  @standard_version = standard_version
19
- @console = (argv.delete('--console') != nil)
19
+ @console = (argv.delete("--console") != nil)
20
20
 
21
- @variable_files = Dir.glob('variables/**/*.json')
21
+ @variable_files = Dir.glob("variables/**/*.json")
22
22
  @valid_ids = []
23
23
  @number_of_rows = nil
24
24
 
@@ -37,7 +37,7 @@ module Spout
37
37
  Spout::Models::OutlierResult.new(@subjects, method, csv_files)
38
38
  end
39
39
 
40
- @outlier_results.select!{|outlier_result| ['numeric', 'integer'].include?(outlier_result.variable_type) }
40
+ @outlier_results.select!{|outlier_result| ["numeric", "integer"].include?(outlier_result.variable_type) }
41
41
  @outlier_results.sort!{|a,b| [a.weight, a.method] <=> [b.weight, b.method]}
42
42
 
43
43
  @overall_results = @subject_loader.csv_files.collect do |csv_file|
@@ -47,20 +47,20 @@ module Spout
47
47
  [ csv_file, major_outliers, minor_outliers, total_outliers ]
48
48
  end
49
49
 
50
- coverage_folder = File.join(Dir.pwd, 'coverage')
50
+ coverage_folder = File.join(Dir.pwd, "coverage")
51
51
  FileUtils.mkpath coverage_folder
52
- html_file = File.join(coverage_folder, 'outliers.html')
52
+ html_file = File.join(coverage_folder, "outliers.html")
53
53
 
54
- File.open(html_file, 'w+') do |file|
55
- erb_location = File.join( File.dirname(__FILE__), '../views/outliers.html.erb' )
54
+ File.open(html_file, "w+") do |file|
55
+ erb_location = File.join( File.dirname(__FILE__), "../views/outliers.html.erb" )
56
56
  file.puts ERB.new(File.read(erb_location)).result(binding)
57
57
  end
58
58
 
59
59
  unless @console
60
- open_command = 'open' if RUBY_PLATFORM.match(/darwin/) != nil
61
- open_command = 'start' if RUBY_PLATFORM.match(/mingw/) != nil
60
+ open_command = "open" if RUBY_PLATFORM.match(/darwin/) != nil
61
+ open_command = "start" if RUBY_PLATFORM.match(/mingw/) != nil
62
62
 
63
- system "#{open_command} #{html_file}" if ['start', 'open'].include?(open_command)
63
+ system "#{open_command} #{html_file}" if ["start", "open"].include?(open_command)
64
64
  end
65
65
  puts "#{html_file}\n\n"
66
66
  return self
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'colorize'
4
- require 'fileutils'
3
+ require "colorize"
4
+ require "fileutils"
5
5
 
6
- require 'spout/helpers/framework'
6
+ require "spout/helpers/framework"
7
7
 
8
8
  module Spout
9
9
  module Commands
@@ -16,7 +16,7 @@ module Spout
16
16
  end
17
17
 
18
18
  def generate_folder_structure!(argv)
19
- skip_gemfile = !argv.delete('--skip-gemfile').nil?
19
+ skip_gemfile = !argv.delete("--skip-gemfile").nil?
20
20
  @project_name = argv[1].to_s.strip
21
21
  @full_path = File.join(@project_name)
22
22
  usage = <<-EOT
@@ -26,33 +26,33 @@ Usage: spout new FOLDER
26
26
  The FOLDER must be empty or new.
27
27
 
28
28
  EOT
29
- if @full_path == '' || (Dir.exist?(@full_path) && (Dir.entries(@full_path) & ['.gitignore', '.ruby-version', '.travis.yml', 'Gemfile', 'Rakefile', 'domains', 'variables', 'test']).size > 0)
29
+ if @full_path == "" || (Dir.exist?(@full_path) && (Dir.entries(@full_path) & [".gitignore", ".ruby-version", ".travis.yml", "Gemfile", "Rakefile", "domains", "variables", "test"]).size > 0)
30
30
  puts usage
31
31
  exit(0)
32
32
  end
33
33
  FileUtils.mkpath(@full_path)
34
- copy_file 'gitignore', '.gitignore'
35
- copy_file 'ruby-version', '.ruby-version'
36
- copy_file 'travis.yml', '.travis.yml'
37
- evaluate_file 'spout.yml.erb', '.spout.yml'
38
- evaluate_file 'CHANGELOG.md.erb', 'CHANGELOG.md'
39
- copy_file 'Gemfile'
40
- copy_file 'Rakefile'
41
- evaluate_file 'README.md.erb', 'README.md'
42
- copy_file 'VERSION'
43
- directory 'domains'
44
- copy_file 'keep', 'domains/.keep'
45
- directory 'variables'
46
- copy_file 'keep', 'variables/.keep'
47
- directory 'forms'
48
- copy_file 'keep', 'forms/.keep'
49
- directory 'test'
50
- copy_file 'test/dictionary_test.rb'
51
- copy_file 'test/test_helper.rb'
34
+ copy_file "gitignore", ".gitignore"
35
+ copy_file "ruby-version", ".ruby-version"
36
+ copy_file "travis.yml", ".travis.yml"
37
+ evaluate_file "spout.yml.erb", ".spout.yml"
38
+ evaluate_file "CHANGELOG.md.erb", "CHANGELOG.md"
39
+ copy_file "Gemfile"
40
+ copy_file "Rakefile"
41
+ evaluate_file "README.md.erb", "README.md"
42
+ copy_file "VERSION"
43
+ directory "domains"
44
+ copy_file "keep", "domains/.keep"
45
+ directory "variables"
46
+ copy_file "keep", "variables/.keep"
47
+ directory "forms"
48
+ copy_file "keep", "forms/.keep"
49
+ directory "test"
50
+ copy_file "test/dictionary_test.rb"
51
+ copy_file "test/test_helper.rb"
52
52
  return if skip_gemfile
53
- puts ' run'.colorize(:green) + ' bundle install'.colorize(:light_cyan)
53
+ puts " run".colorize(:green) + " bundle install".colorize(:light_cyan)
54
54
  Dir.chdir(@full_path)
55
- system 'bundle install'
55
+ system "bundle install"
56
56
  end
57
57
  end
58
58
  end