md-ruby-eval 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bin/md-ruby-eval +8 -2
- data/lib/md_ruby_eval.rb +17 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1056df9d4b2215292650e16439ab7d8455e5df82c804a93c38e419613bd301c7
|
4
|
+
data.tar.gz: 7f9b54997a435172f312f88773558bcc71c687d02f2c9013271774a9ea53b1e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcdce3c13297d80b29945804b71b3ca3663a2c922ebf5b585cbda351a3c3d11ff0c30c2bb4b4274d0d36ec32dbfdfca78fba07896058237b2636fd1241a13e73
|
7
|
+
data.tar.gz: f6a973e077e4016d385e5b90ca8bdeb3085b1685748e9a518a0afde6da8a268a9edebbc9fffcd3a93a0a6fa66ab2bc479ec0128c17671c4f8dac802d9c4d982f
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/bin/md-ruby-eval
CHANGED
@@ -7,6 +7,7 @@ to_require = []
|
|
7
7
|
indentation = 40
|
8
8
|
line_length = 79
|
9
9
|
auto = false
|
10
|
+
verbose = false
|
10
11
|
dir = Dir.pwd
|
11
12
|
|
12
13
|
OptionParser.new do |opts|
|
@@ -36,6 +37,11 @@ OptionParser.new do |opts|
|
|
36
37
|
'Automatic mode. Finds `*.in.md` files outputting `*.out.md` files') do |v|
|
37
38
|
auto = true
|
38
39
|
end
|
40
|
+
|
41
|
+
opts.on('--[no-]verbose',
|
42
|
+
'Print code chunks right before their execution') do |v|
|
43
|
+
verbose = true
|
44
|
+
end
|
39
45
|
end.parse!
|
40
46
|
|
41
47
|
Dir.chdir dir do
|
@@ -50,7 +56,7 @@ Dir.chdir dir do
|
|
50
56
|
puts "using: #{init_path}"
|
51
57
|
load init_path
|
52
58
|
end
|
53
|
-
MDRubyEval.new input_path, input_path.gsub(/(\.in)?\.md$/, '.out.md'), binding, indentation, line_length
|
59
|
+
MDRubyEval.new input_path, input_path.gsub(/(\.in)?\.md$/, '.out.md'), binding, indentation, line_length, verbose
|
54
60
|
end
|
55
61
|
|
56
62
|
Process.wait pid
|
@@ -58,7 +64,7 @@ Dir.chdir dir do
|
|
58
64
|
else
|
59
65
|
input_path, output_path = ARGV.map { |p| File.expand_path p }
|
60
66
|
raise 'no input path' unless input_path && File.exist?(input_path)
|
61
|
-
MDRubyEval.new input_path, output_path, binding, indentation, line_length
|
67
|
+
MDRubyEval.new input_path, output_path, binding, indentation, line_length, verbose
|
62
68
|
end
|
63
69
|
end
|
64
70
|
|
data/lib/md_ruby_eval.rb
CHANGED
@@ -4,22 +4,31 @@ require 'optparse'
|
|
4
4
|
|
5
5
|
class MDRubyEval
|
6
6
|
|
7
|
-
def initialize(input_path, output_path, environment, indentation, line_length)
|
7
|
+
def initialize(input_path, output_path, environment, indentation, line_length, verbose)
|
8
8
|
@input_path = input_path
|
9
9
|
@output_path = output_path
|
10
10
|
@environment = environment
|
11
11
|
@output = ''
|
12
12
|
@indentation = indentation
|
13
13
|
@line_length = line_length
|
14
|
+
@verbose = verbose
|
14
15
|
|
15
16
|
@last_id = 1
|
16
17
|
@known_ids = Hash.new { |h, k| h[k] = format('%06x', @last_id += 1) }
|
18
|
+
@too_long = []
|
17
19
|
|
18
20
|
process_file input_path
|
19
21
|
end
|
20
22
|
|
21
23
|
def evaluate(code, line)
|
24
|
+
puts code if @verbose
|
25
|
+
start = Time.now
|
22
26
|
eval(code, @environment, @input_path, line)
|
27
|
+
ensure
|
28
|
+
took = Time.now - start
|
29
|
+
output = format "\e[1m== %5.2f seconds %s:%d\e[22m", took, @input_path, line
|
30
|
+
puts output if @verbose
|
31
|
+
@too_long << [took, code + output] if took > 0.1
|
23
32
|
end
|
24
33
|
|
25
34
|
def process_ruby(part, start_line)
|
@@ -42,7 +51,7 @@ class MDRubyEval
|
|
42
51
|
output = ''
|
43
52
|
chunk_lines.each do |chunk, lines|
|
44
53
|
result = evaluate(chunk, line_count)
|
45
|
-
if chunk.strip.empty? || chunk.include?('#')
|
54
|
+
if chunk.strip.empty? || chunk.lines.last.include?('#')
|
46
55
|
output << (chunk.end_with?("#\n") ? chunk[0..-3] + "\n" : chunk)
|
47
56
|
else
|
48
57
|
pre_lines = chunk.lines.to_a
|
@@ -109,6 +118,12 @@ class MDRubyEval
|
|
109
118
|
line_count += part.lines.size
|
110
119
|
end
|
111
120
|
|
121
|
+
to_print = @too_long.sort_by { |took, _| -took }[0..10]
|
122
|
+
if to_print.size > 0
|
123
|
+
puts "#{to_print.size} longest evaluations:"
|
124
|
+
to_print.each { |_, out| puts out }
|
125
|
+
end
|
126
|
+
|
112
127
|
puts "writing: #{@output_path}"
|
113
128
|
File.write(@output_path, @output)
|
114
129
|
rescue => ex
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: md-ruby-eval
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Petr Chalupa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|