spout 0.12.1 → 0.13.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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