sqltorial 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d29622c64654fc0aec2d0d839d6a0c48e67c9fd
4
- data.tar.gz: 028fb7bb71fdbc196e321998a4cc2b70c81d9958
3
+ metadata.gz: b81ab5d2e41712b52e7b96f1f6332e5a28c2ee01
4
+ data.tar.gz: 88ad7165935ab617c70786ddd96546c2545c2e35
5
5
  SHA512:
6
- metadata.gz: 773c24331624a956878faa2fe49ccec85e9419947ad05ea9c0975d02853aede336fe9ba70ca2291190fbe72f472ead363edd2d5b5472de89c0f63a5d3e05dfa8
7
- data.tar.gz: 97a56dca3e44e5751bea7b6b61936013a78a301c8c09a1b736851a7130fe9fa8ef445d8cb0b2bfb68254f1c0be12fa941af6301090cf6cc1834b21192cc95efc
6
+ metadata.gz: 1cbc570b9ea4c206a0811816e307ab89d05ef6904ea1250dacd4a976d9a9aebfdd59e601c460b3914a2462e76fbd55d4e5d62d4ae8da6cf1ebfdc98a22abec1a
7
+ data.tar.gz: dcaf1f0cef469d9ca8fc8b56d15b1b7ff6113368ce1f9c2d3b33a5b8aef26e1c5128166d180d4506df4be0d0483d106edf0e776c3c90ef86ebfedfab04bc8e3a
data/CHANGELOG.md CHANGED
@@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file.
6
6
 
7
7
  ### Added
8
8
 
9
- - Nothing.
9
+ - Watch mode.
10
10
 
11
11
  ### Deprecated
12
12
 
@@ -18,7 +18,7 @@ All notable changes to this project will be documented in this file.
18
18
 
19
19
  ### Fixed
20
20
 
21
- - Nothing.
21
+ - Better handling of whitespace.
22
22
 
23
23
  ## 0.0.3 - 2015-09-03
24
24
 
data/exe/sqltorial CHANGED
@@ -8,11 +8,14 @@ Escort::App.create do |app|
8
8
  app.version SQLtorial::VERSION
9
9
  app.summary SQLtorial::SUMMARY
10
10
  app.description SQLtorial::DESCRIPTION
11
+
11
12
  app.options do |opts|
12
13
  opts.opt :no_results, "Don't Include Results", short: '-n', long: '--no-results', type: :boolean, default: false
13
14
  opts.opt :output, "Output File", short: '-o', long: '--output', type: :string, default: 'output.md'
14
15
  opts.opt :preface, "Preface File", short: '-p', long: '--preface', type: :string, default: 'preface.md'
16
+ opts.opt :watch, "Watch Mode", short: '-w', long: '--watch', type: :boolean, default: false
15
17
  end
18
+
16
19
  app.action do |options, arguments|
17
20
  begin
18
21
  SQLtorial::AssembleCommand.new(options, arguments).execute
@@ -1,11 +1,25 @@
1
1
  require_relative 'sql_to_example'
2
2
  require 'sequelizer'
3
3
  require 'facets/pathname/chdir'
4
+ require 'listen'
4
5
 
5
6
  module SQLtorial
6
7
  class AssembleCommand < ::Escort::ActionCommand::Base
7
8
  include Sequelizer
8
9
  def execute
10
+ global_options[:watch] ? watch : process
11
+ end
12
+
13
+ def watch
14
+ listener = Listen.to(path) do |modified, added, removed|
15
+ process
16
+ end
17
+ listener.only(/\.sql$/)
18
+ listener.start
19
+ sleep while listener.processing?
20
+ end
21
+
22
+ def process
9
23
  process_dir.chdir do
10
24
  preface = Pathname.new(global_options[:preface]) if global_options[:preface]
11
25
  File.open(global_options[:output], 'w') do |f|
@@ -1,5 +1,5 @@
1
1
  module SQLtorial
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  SUMMARY = %q{Knitr, but for SQL files, sorta}
4
4
  DESCRIPTION = %q{Ingests a set of commented SQL statements, executes them, and dumps the comments, queries, and results into a markdown file}
5
5
  HOMEPAGE = "http://github.com/outcomesinsights/sqltorial"
@@ -3,6 +3,7 @@ require_relative 'query_to_md'
3
3
  require_relative 'formatter'
4
4
 
5
5
  module SQLtorial
6
+ WHITESPACE_REGEX = /^\s*--/
6
7
  class SqlToExample
7
8
  attr :file, :db
8
9
  def initialize(file, db, number)
@@ -38,16 +39,16 @@ module SQLtorial
38
39
  end
39
40
 
40
41
  def title
41
- @title ||= title_line.gsub(/^\s*-+\s*/, '')
42
+ @title ||= title_line.gsub(WHITESPACE_REGEX, '')
42
43
  end
43
44
 
44
45
  def make_prose_directives_and_query(query)
45
46
  lines = query.dup
46
47
  prose_lines = []
47
48
  lines.shift while lines.first.strip.empty?
48
- prose_lines << lines.shift.sub(/^\s*-+\s*/, ' ').chomp.sub(/^ $/, "\n\n") while lines.first =~ /^\s*(-+|$)/
49
+ prose_lines << lines.shift.sub(WHITESPACE_REGEX, ' ').sub(/^\s*$/, "\n\n") while lines.first && (lines.first =~ WHITESPACE_REGEX || lines.first.empty?)
49
50
  directives, prose_lines = prose_lines.partition { |line| Directive.match(line) }
50
- [prose_lines.join(''), process_directives(directives), lines.join("\n")]
51
+ [prose_lines.join(''), process_directives(directives), lines.join]
51
52
  end
52
53
 
53
54
  def number
@@ -74,7 +75,6 @@ module SQLtorial
74
75
  puts sql
75
76
  puts $!.message
76
77
  puts $!.backtrace.join("\n")
77
- $stdin.gets
78
78
  end
79
79
  end
80
80
  parts = []
@@ -101,7 +101,7 @@ module SQLtorial
101
101
  end
102
102
 
103
103
  def get_title_and_formatted_lines
104
- all_lines = formatted.split("\n")
104
+ all_lines = formatted.split("\n").map { |l| l += "\n" }
105
105
  title_line = all_lines.shift
106
106
  [title_line, all_lines]
107
107
  end
data/sqltorial.gemspec CHANGED
@@ -33,4 +33,5 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency "anbt-sql-formatter", "~> 0.0.3"
34
34
  spec.add_dependency "facets", "~> 3.0"
35
35
  spec.add_dependency "escort", "~> 0.4.0"
36
+ spec.add_dependency "listen", "~> 3.0.0"
36
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqltorial
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Duryea
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-03 00:00:00.000000000 Z
11
+ date: 2015-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.4.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: listen
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 3.0.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 3.0.0
97
111
  description: Ingests a set of commented SQL statements, executes them, and dumps the
98
112
  comments, queries, and results into a markdown file
99
113
  email: