ripl-auto_indent 0.1.1 → 0.1.2
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.
- data/CHANGELOG.rdoc +3 -0
- data/README.rdoc +1 -1
- data/lib/ripl/auto_indent.rb +22 -24
- metadata +3 -3
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -19,7 +19,7 @@ You can change the default two spaces used for indention (per level) with <tt>Ri
|
|
19
19
|
|
20
20
|
== Known bugs
|
21
21
|
|
22
|
-
*
|
22
|
+
* Not 100% correct ;)
|
23
23
|
* Long lines might cause wrong rewriting (if activated)
|
24
24
|
|
25
25
|
J-_-L
|
data/lib/ripl/auto_indent.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'ripl'
|
2
2
|
require 'ripl/multi_line'
|
3
3
|
require 'coderay'
|
4
|
-
|
4
|
+
require 'set'
|
5
5
|
|
6
6
|
module Ripl
|
7
7
|
module AutoIndent
|
8
|
-
VERSION = '0.1.
|
8
|
+
VERSION = '0.1.2'
|
9
9
|
TPUT = {
|
10
10
|
:sc => `tput sc`, # save current cursor position
|
11
11
|
:cuu1 => `tput cuu1`, # move cursor on line upwards
|
@@ -18,28 +18,26 @@ module Ripl
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def get_indent(buffer)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
# } == "Syntax OK"
|
27
|
-
#}
|
21
|
+
opening_and_modifier_tokens = %w[if unless until while].to_set
|
22
|
+
opening_tokens = %w[begin case class def for module do {].to_set
|
23
|
+
closing_tokens = %w[end }].to_set
|
24
|
+
separator = [';', :operator]
|
25
|
+
indent = 0
|
28
26
|
|
29
|
-
opening_tokens = %w[begin case class def for if module unless until while do {]
|
30
|
-
closing_tokens = %w[end }]
|
31
|
-
indent = 0
|
32
27
|
# parse each token
|
33
|
-
buffer_tokens = CodeRay.scan(buffer, :ruby)
|
34
|
-
|
35
|
-
|
36
|
-
if opening_tokens.include? token
|
37
|
-
# modifiers cause trouble - so guess, if it is intended as one
|
38
|
-
# (because the current line has valid syntax)
|
39
|
-
#next if %w[if unless until while].include?(token) && syntax_ok[ line ]
|
28
|
+
buffer_tokens = [separator] + CodeRay.scan(buffer, :ruby).select{|_, kind|
|
29
|
+
kind != :space
|
30
|
+
}
|
40
31
|
|
32
|
+
buffer_tokens.each_cons(2){ |(*old_pair), (token, kind)|
|
33
|
+
if kind == :reserved || kind == :operator
|
34
|
+
# modifiers cause trouble, so
|
35
|
+
# fix it in 9/10 cases
|
36
|
+
if opening_tokens.include?(token) ||
|
37
|
+
opening_and_modifier_tokens.include?(token) &&
|
38
|
+
( old_pair == separator || old_pair == ['=', :operator ] )
|
41
39
|
indent += 1
|
42
|
-
elsif closing_tokens.include?
|
40
|
+
elsif closing_tokens.include?(token)
|
43
41
|
indent -= 1
|
44
42
|
end
|
45
43
|
end
|
@@ -65,7 +63,7 @@ module Ripl
|
|
65
63
|
|
66
64
|
def loop_eval(input)
|
67
65
|
last_indent = @current_indent
|
68
|
-
@current_indent = get_indent(@buffer ? @buffer*"
|
66
|
+
@current_indent = get_indent( @buffer ? @buffer*";"+";"+input : input )
|
69
67
|
|
70
68
|
if config[:auto_indent_rewrite] && @current_indent < last_indent
|
71
69
|
rewrite_line last_indent - @current_indent
|
@@ -79,9 +77,9 @@ end
|
|
79
77
|
Ripl::Shell.send :include, Ripl::AutoIndent
|
80
78
|
|
81
79
|
# default config
|
82
|
-
Ripl.config[:auto_indent_rewrite] = true
|
83
|
-
Ripl.config[:auto_indent_space]
|
80
|
+
Ripl.config[:auto_indent_rewrite] = true if Ripl.config[:auto_indent_rewrite].nil?
|
81
|
+
Ripl.config[:auto_indent_space] ||= ' '
|
84
82
|
Ripl.config[:multi_line_prompt] = '| ' if !Ripl.config[:multi_line_prompt] ||
|
85
|
-
|
83
|
+
Ripl.config[:multi_line_prompt] == '| '
|
86
84
|
|
87
85
|
# J-_-L
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jan Lelis
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-13 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|